Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
peersimgrid release 1.0
[simgrid.git] / contrib / psg / src / example / symphony / Message.java
diff --git a/contrib/psg/src/example/symphony/Message.java b/contrib/psg/src/example/symphony/Message.java
new file mode 100644 (file)
index 0000000..5f63d11
--- /dev/null
@@ -0,0 +1,90 @@
+package example.symphony;\r
+\r
+import peersim.core.Node;\r
+\r
+/**\r
+ *\r
+ * @author Andrea Esposito <and1989@gmail.com>\r
+ */\r
+public class Message implements Cloneable {\r
+\r
+    public enum MessageType {\r
+\r
+        ROUTE, ROUTE_RESPONSE, ROUTE_FAIL,\r
+        JOIN, JOIN_RESPONSE,\r
+        UPDATE_NEIGHBOURS, UPDATE_NEIGHBOURS_RESPONSE,\r
+        REQUEST_LONG_RANGE_LINK, ACCEPTED_LONG_RANGE_LINK, REJECT_LONG_RANGE_LINK, DISCONNECT_LONG_RANGE_LINK, UNAVAILABLE_LONG_RANGE_LINK,\r
+        UPDATE_STATUS, UPDATE_STATUS_RESPONSE,\r
+        LEAVE,\r
+        KEEP_ALIVE, KEEP_ALIVE_RESPONSE\r
+    }\r
+    private long hopCounter;\r
+    private MessageType type;\r
+    private Node src;\r
+    private Node currentHop;\r
+    private Object body;\r
+    private static long globalID = 0;\r
+    private final long id;\r
+\r
+    public Message(Object body, Node src, MessageType type) {\r
+        this.type = type;\r
+        this.src = src;\r
+        this.body = body;\r
+        hopCounter = 0;\r
+        id = globalID++;\r
+        currentHop = src;\r
+    }\r
+\r
+    public long getID() {\r
+        return id;\r
+    }\r
+\r
+    public Object getBody() {\r
+        return body;\r
+    }\r
+\r
+    public void incrementHop() {\r
+        hopCounter++;\r
+    }\r
+\r
+    public long getHop() {\r
+        return hopCounter;\r
+    }\r
+\r
+    public MessageType getType() {\r
+        return type;\r
+    }\r
+\r
+    public Node getSourceNode() {\r
+        return src;\r
+    }\r
+\r
+    public Node getCurrentHop() {\r
+        return currentHop;\r
+    }\r
+\r
+    public void setCurrentHop(Node currentHop) {\r
+        this.currentHop = currentHop;\r
+    }\r
+\r
+    @Override\r
+    public Object clone() throws CloneNotSupportedException {\r
+        return super.clone();\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+\r
+        StringBuilder builder = new StringBuilder();\r
+        builder.append("Message@").append(this.hashCode()).append("[\n");\r
+\r
+        builder.append("\tID : ").append(id).append(",\n");\r
+        builder.append("\tSource ID: ").append(src.getID()).append(",\n");\r
+        builder.append("\tType : ").append(type).append(",\n");\r
+        builder.append("\tBody : ").append(body).append(",\n");\r
+        builder.append("\tCurrent Hop ID: ").append(currentHop.getID()).append(",\n");\r
+        builder.append("\tHop Counter : ").append(hopCounter).append("\n]\n");\r
+\r
+        return builder.toString();\r
+    }\r
+}\r