Added Netty based messaging. Updated cluster management to use Netty based messaging
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/messaging/impl/MessageEncoder.java b/core/store/dist/src/main/java/org/onlab/onos/store/messaging/impl/MessageEncoder.java
new file mode 100644
index 0000000..b1c660c
--- /dev/null
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/messaging/impl/MessageEncoder.java
@@ -0,0 +1,62 @@
+package org.onlab.onos.store.messaging.impl;
+
+import org.onlab.onos.store.cluster.messaging.SerializationService;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.MessageToByteEncoder;
+
+/**
+ * Encode InternalMessage out into a byte buffer.
+ */
+public class MessageEncoder extends MessageToByteEncoder<InternalMessage> {
+
+ // onosiscool in ascii
+ public static final byte[] PREAMBLE = "onosiscool".getBytes();
+
+ private final SerializationService serializationService;
+
+ public MessageEncoder(SerializationService serializationService) {
+ this.serializationService = serializationService;
+ }
+
+ @Override
+ protected void encode(ChannelHandlerContext context, InternalMessage message,
+ ByteBuf out) throws Exception {
+
+ // write preamble
+ out.writeBytes(PREAMBLE);
+
+ // write id
+ out.writeLong(message.id());
+
+ // write type length
+ out.writeInt(message.type().length());
+
+ // write type
+ out.writeBytes(message.type().getBytes());
+
+ // write sender host name size
+ out.writeInt(message.sender().host().length());
+
+ // write sender host name.
+ out.writeBytes(message.sender().host().getBytes());
+
+ // write port
+ out.writeInt(message.sender().port());
+
+ try {
+ serializationService.encode(message.payload());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ byte[] payload = serializationService.encode(message.payload());
+
+ // write payload length.
+ out.writeInt(payload.length);
+
+ // write payload bytes
+ out.writeBytes(payload);
+ }
+}