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 }