Move ReasonCode to enum
This commit is contained in:
parent
b7d827a87a
commit
4e08b4ee65
|
@ -4,6 +4,7 @@ import org.ethereum.net.rlp.RLPItem;
|
||||||
import org.ethereum.net.rlp.RLPList;
|
import org.ethereum.net.rlp.RLPList;
|
||||||
import org.ethereum.net.Command;
|
import org.ethereum.net.Command;
|
||||||
import static org.ethereum.net.Command.DISCONNECT;
|
import static org.ethereum.net.Command.DISCONNECT;
|
||||||
|
import static org.ethereum.net.message.ReasonCode.DISCONNECT_REQUESTED;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* www.ethereumJ.com
|
* www.ethereumJ.com
|
||||||
|
@ -12,17 +13,7 @@ import static org.ethereum.net.Command.DISCONNECT;
|
||||||
*/
|
*/
|
||||||
public class DisconnectMessage extends Message {
|
public class DisconnectMessage extends Message {
|
||||||
|
|
||||||
private byte reason;
|
private ReasonCode reason;
|
||||||
|
|
||||||
public static byte REASON_DISCONNECT_REQUESTED = 0x00;
|
|
||||||
public static byte REASON_TCP_ERROR = 0x01;
|
|
||||||
public static byte REASON_BAD_PROTOCOL = 0x02;
|
|
||||||
public static byte REASON_USELESS_PEER = 0x03;
|
|
||||||
public static byte REASON_TOO_MANY_PEERS = 0x04;
|
|
||||||
public static byte REASON_ALREADY_CONNECTED = 0x05;
|
|
||||||
public static byte REASON_WRONG_GENESIS = 0x06;
|
|
||||||
public static byte REASON_INCOMPATIBLE_PROTOCOL = 0x07;
|
|
||||||
public static byte REASON_PEER_QUITING = 0x08;
|
|
||||||
|
|
||||||
public DisconnectMessage(RLPList rawData) {
|
public DisconnectMessage(RLPList rawData) {
|
||||||
super(rawData);
|
super(rawData);
|
||||||
|
@ -39,9 +30,9 @@ public class DisconnectMessage extends Message {
|
||||||
|
|
||||||
byte[] reasonB = ((RLPItem)paramsList.getElement(1)).getData();
|
byte[] reasonB = ((RLPItem)paramsList.getElement(1)).getData();
|
||||||
if (reasonB == null){
|
if (reasonB == null){
|
||||||
this.reason = 0;
|
this.reason = DISCONNECT_REQUESTED;
|
||||||
} else {
|
} else {
|
||||||
this.reason = reasonB[0];
|
this.reason = ReasonCode.fromInt(reasonB[0]);
|
||||||
}
|
}
|
||||||
this.parsed = true;
|
this.parsed = true;
|
||||||
// todo: what to do when mal data ?
|
// todo: what to do when mal data ?
|
||||||
|
@ -52,7 +43,7 @@ public class DisconnectMessage extends Message {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte getReason() {
|
public ReasonCode getReason() {
|
||||||
if (!parsed) parseRLP();
|
if (!parsed) parseRLP();
|
||||||
return reason;
|
return reason;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
package org.ethereum.net.message;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public enum ReasonCode {
|
||||||
|
|
||||||
|
DISCONNECT_REQUESTED(0x00),
|
||||||
|
TCP_ERROR(0x01),
|
||||||
|
BAD_PROTOCOL(0x02),
|
||||||
|
USELESS_PEER(0x03),
|
||||||
|
TOO_MANY_PEERS(0x04),
|
||||||
|
ALREADY_CONNECTED(0x05),
|
||||||
|
WRONG_GENESIS(0x06),
|
||||||
|
INCOMPATIBLE_PROTOCOL(0x07),
|
||||||
|
PEER_QUITING(0x08),
|
||||||
|
UNKNOWN(0xFF);
|
||||||
|
|
||||||
|
private int reason;
|
||||||
|
|
||||||
|
private static final Map<Integer, ReasonCode> intToTypeMap = new HashMap<Integer, ReasonCode>();
|
||||||
|
static {
|
||||||
|
for (ReasonCode type : ReasonCode.values()) {
|
||||||
|
intToTypeMap.put(type.reason, type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ReasonCode(int cmd) {
|
||||||
|
this.reason = cmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ReasonCode fromInt(int i) {
|
||||||
|
ReasonCode type = intToTypeMap.get(Integer.valueOf(i));
|
||||||
|
if (type == null)
|
||||||
|
return ReasonCode.UNKNOWN;
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte asByte() {
|
||||||
|
return (byte) reason;
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,6 +11,7 @@ import org.ethereum.net.message.GetChainMessage;
|
||||||
import org.ethereum.net.message.HelloMessage;
|
import org.ethereum.net.message.HelloMessage;
|
||||||
import org.ethereum.net.message.NotInChainMessage;
|
import org.ethereum.net.message.NotInChainMessage;
|
||||||
import org.ethereum.net.message.PeersMessage;
|
import org.ethereum.net.message.PeersMessage;
|
||||||
|
import org.ethereum.net.message.ReasonCode;
|
||||||
import org.ethereum.net.message.TransactionsMessage;
|
import org.ethereum.net.message.TransactionsMessage;
|
||||||
import org.ethereum.net.rlp.RLP;
|
import org.ethereum.net.rlp.RLP;
|
||||||
import org.ethereum.net.rlp.RLPList;
|
import org.ethereum.net.rlp.RLPList;
|
||||||
|
@ -90,8 +91,7 @@ public class MessagesTest {
|
||||||
DisconnectMessage disconnectMessage = new DisconnectMessage(rlpList);
|
DisconnectMessage disconnectMessage = new DisconnectMessage(rlpList);
|
||||||
System.out.println(disconnectMessage);
|
System.out.println(disconnectMessage);
|
||||||
|
|
||||||
assertEquals(disconnectMessage.getReason(),
|
assertEquals(disconnectMessage.getReason(), ReasonCode.DISCONNECT_REQUESTED);
|
||||||
DisconnectMessage.REASON_DISCONNECT_REQUESTED);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test /* DisconnectMessage 2 */
|
@Test /* DisconnectMessage 2 */
|
||||||
|
@ -105,8 +105,7 @@ public class MessagesTest {
|
||||||
DisconnectMessage disconnectMessage = new DisconnectMessage(rlpList);
|
DisconnectMessage disconnectMessage = new DisconnectMessage(rlpList);
|
||||||
System.out.println(disconnectMessage);
|
System.out.println(disconnectMessage);
|
||||||
|
|
||||||
assertEquals(disconnectMessage.getReason(),
|
assertEquals(disconnectMessage.getReason(), ReasonCode.TCP_ERROR);
|
||||||
DisconnectMessage.REASON_TCP_ERROR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PEERS */
|
/* PEERS */
|
||||||
|
|
Loading…
Reference in New Issue