diff --git a/src/kademlia/message/KademliaMessageFactory.java b/src/kademlia/message/KademliaMessageFactory.java new file mode 100644 index 0000000..850cbd4 --- /dev/null +++ b/src/kademlia/message/KademliaMessageFactory.java @@ -0,0 +1,37 @@ +package kademlia.message; + +import java.io.DataInputStream; +import java.io.IOException; +import kademlia.core.KadServer; + +/** + * A factory that handles creating messages and receivers + * + * @author Joshua Kissoon + * @since 20140523 + */ +public interface KademliaMessageFactory +{ + + /** + * Method that creates a message based on the code and input stream + * + * @param code The message code + * @param in An input stream with the message data + * + * @return A message + * + * @throws java.io.IOException + */ + public Message createMessage(byte code, DataInputStream in) throws IOException; + + /** + * Method that returns a receiver to handle a specific type of message + * + * @param code The message code + * @param server + * + * @return A receiver + */ + public Receiver createReceiver(byte code, KadServer server); +} diff --git a/src/kademlia/message/MessageFactory.java b/src/kademlia/message/MessageFactory.java index c06621e..e4fe630 100644 --- a/src/kademlia/message/MessageFactory.java +++ b/src/kademlia/message/MessageFactory.java @@ -13,7 +13,7 @@ import kademlia.dht.DHT; * @author Joshua Kissoon * @since 20140202 */ -public class MessageFactory +public class MessageFactory implements KademliaMessageFactory { private final KademliaNode localNode; @@ -27,6 +27,7 @@ public class MessageFactory this.config = config; } + @Override public Message createMessage(byte code, DataInputStream in) throws IOException { switch (code) @@ -54,6 +55,7 @@ public class MessageFactory } } + @Override public Receiver createReceiver(byte code, KadServer server) { switch (code)