1 package example.symphony;
\r
3 import peersim.core.Node;
\r
7 * @author Andrea Esposito <and1989@gmail.com>
\r
9 public class Message implements Cloneable {
\r
11 public enum MessageType {
\r
13 ROUTE, ROUTE_RESPONSE, ROUTE_FAIL,
\r
14 JOIN, JOIN_RESPONSE,
\r
15 UPDATE_NEIGHBOURS, UPDATE_NEIGHBOURS_RESPONSE,
\r
16 REQUEST_LONG_RANGE_LINK, ACCEPTED_LONG_RANGE_LINK, REJECT_LONG_RANGE_LINK, DISCONNECT_LONG_RANGE_LINK, UNAVAILABLE_LONG_RANGE_LINK,
\r
17 UPDATE_STATUS, UPDATE_STATUS_RESPONSE,
\r
19 KEEP_ALIVE, KEEP_ALIVE_RESPONSE
\r
21 private long hopCounter;
\r
22 private MessageType type;
\r
24 private Node currentHop;
\r
25 private Object body;
\r
26 private static long globalID = 0;
\r
27 private final long id;
\r
29 public Message(Object body, Node src, MessageType type) {
\r
38 public long getID() {
\r
42 public Object getBody() {
\r
46 public void incrementHop() {
\r
50 public long getHop() {
\r
54 public MessageType getType() {
\r
58 public Node getSourceNode() {
\r
62 public Node getCurrentHop() {
\r
66 public void setCurrentHop(Node currentHop) {
\r
67 this.currentHop = currentHop;
\r
71 public Object clone() throws CloneNotSupportedException {
\r
72 return super.clone();
\r
76 public String toString() {
\r
78 StringBuilder builder = new StringBuilder();
\r
79 builder.append("Message@").append(this.hashCode()).append("[\n");
\r
81 builder.append("\tID : ").append(id).append(",\n");
\r
82 builder.append("\tSource ID: ").append(src.getID()).append(",\n");
\r
83 builder.append("\tType : ").append(type).append(",\n");
\r
84 builder.append("\tBody : ").append(body).append(",\n");
\r
85 builder.append("\tCurrent Hop ID: ").append(currentHop.getID()).append(",\n");
\r
86 builder.append("\tHop Counter : ").append(hopCounter).append("\n]\n");
\r
88 return builder.toString();
\r