Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
kill another out of date script
[simgrid.git] / contrib / psg / src / example / symphony / Message.java
1 package example.symphony;\r
2 \r
3 import peersim.core.Node;\r
4 \r
5 /**\r
6  *\r
7  * @author Andrea Esposito <and1989@gmail.com>\r
8  */\r
9 public class Message implements Cloneable {\r
10 \r
11     public enum MessageType {\r
12 \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
18         LEAVE,\r
19         KEEP_ALIVE, KEEP_ALIVE_RESPONSE\r
20     }\r
21     private long hopCounter;\r
22     private MessageType type;\r
23     private Node src;\r
24     private Node currentHop;\r
25     private Object body;\r
26     private static long globalID = 0;\r
27     private final long id;\r
28 \r
29     public Message(Object body, Node src, MessageType type) {\r
30         this.type = type;\r
31         this.src = src;\r
32         this.body = body;\r
33         hopCounter = 0;\r
34         id = globalID++;\r
35         currentHop = src;\r
36     }\r
37 \r
38     public long getID() {\r
39         return id;\r
40     }\r
41 \r
42     public Object getBody() {\r
43         return body;\r
44     }\r
45 \r
46     public void incrementHop() {\r
47         hopCounter++;\r
48     }\r
49 \r
50     public long getHop() {\r
51         return hopCounter;\r
52     }\r
53 \r
54     public MessageType getType() {\r
55         return type;\r
56     }\r
57 \r
58     public Node getSourceNode() {\r
59         return src;\r
60     }\r
61 \r
62     public Node getCurrentHop() {\r
63         return currentHop;\r
64     }\r
65 \r
66     public void setCurrentHop(Node currentHop) {\r
67         this.currentHop = currentHop;\r
68     }\r
69 \r
70     @Override\r
71     public Object clone() throws CloneNotSupportedException {\r
72         return super.clone();\r
73     }\r
74 \r
75     @Override\r
76     public String toString() {\r
77 \r
78         StringBuilder builder = new StringBuilder();\r
79         builder.append("Message@").append(this.hashCode()).append("[\n");\r
80 \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
87 \r
88         return builder.toString();\r
89     }\r
90 }\r