Coverage Summary for Class: MessageFilter (co.rsk.net.eth)

Class Class, % Method, % Line, %
MessageFilter 0% (0/1) 0% (0/2) 0% (0/24)


1 /* 2  * This file is part of RskJ 3  * Copyright (C) 2017 RSK Labs Ltd. 4  * 5  * This program is free software: you can redistribute it and/or modify 6  * it under the terms of the GNU Lesser General Public License as published by 7  * the Free Software Foundation, either version 3 of the License, or 8  * (at your option) any later version. 9  * 10  * This program is distributed in the hope that it will be useful, 11  * but WITHOUT ANY WARRANTY; without even the implied warranty of 12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13  * GNU Lesser General Public License for more details. 14  * 15  * You should have received a copy of the GNU Lesser General Public License 16  * along with this program. If not, see <http://www.gnu.org/licenses/>. 17  */ 18  19 package co.rsk.net.eth; 20  21 import org.ethereum.net.message.Message; 22  23 import java.util.HashSet; 24 import java.util.List; 25 import java.util.Set; 26  27 /** 28  * Created by ajlopez on 26/04/2017. 29  */ 30 public class MessageFilter { 31  private Set<String> commands; 32  33  public MessageFilter(List<String> commands) { 34  if (commands != null) { 35  this.commands = new HashSet<>(commands); 36  } 37  else { 38  this.commands = new HashSet<>(); 39  } 40  } 41  42  public boolean acceptMessage(Message message) { 43  if (commands.isEmpty()) { 44  return true; 45  } 46  47  String command = String.valueOf(message.getCommand()); 48  49  if (commands.contains(command)) { 50  return true; 51  } 52  53  if (!(message instanceof RskMessage)) { 54  return false; 55  } 56  57  String messageType = String.valueOf(((RskMessage)message).getMessage().getMessageType()); 58  59  for (String cmd : commands) { 60  if (!cmd.contains(":")) { 61  continue; 62  } 63  64  String[] parts = cmd.split("\\:"); 65  66  if (parts.length != 2) { 67  continue; 68  } 69  70  if (!parts[0].equals(command)) { 71  continue; 72  } 73  74  if (parts[1].equals(messageType)) { 75  return true; 76  } 77  } 78  79  return false; 80  } 81 }