@@ -0,0 +1,976 @@
+package galileo.net;%0A%0Aimport java.io.IOException;%0A%0A/**%0A * A %22dual%22 MessageRouter instance that can act as both a server and a client.%0A * This implementation is made up of a %7B@link ClientMessageRouter%7D and a%0A * %7B@link ServerMessageRouter%7D instance, meaning outgoing and incoming messages%0A * are processed by separate threads.%0A *%0A * @author malensek%0A */%0Apublic class DualMessageRouter %7B%0A%0A    private ServerMessageRouter serverRouter;%0A    private ClientMessageRouter clientRouter;%0A%0A    public DualMessageRouter() %7B %7D%0A%0A    public void sendMessage(NetworkDestination destination,%0A            GalileoMessage message)%0A    throws IOException %7B%0A        clientRouter.sendMessage(destination, message);%0A    %7D%0A%0A    public void shutdown()%0A    throws IOException %7B%0A        serverRouter.shutdown();%0A        clientRouter.shutdown();%0A    %7D%0A%0A    public void addListener(MessageListener listener) %7B%0A        serverRouter.addListener(listener);%0A        clientRouter.addListener(listener);%0A    %7D%0A%7D%0A

Create combination client/server router