package io.vivarium.server;
import java.io.IOException;
import java.net.InetSocketAddress;
import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import io.vivarium.client.VivariumResearchClient;
import io.vivarium.util.concurrency.StartableStoppable;
public class ServerNetworkModule extends WebSocketServer implements StartableStoppable
{
private final MessageRouter _router;
public ServerNetworkModule(InetSocketAddress port, MessageRouter router)
{
super(port);
_router = router;
}
@Override
public void start()
{
super.start();
_router.start();
}
@Override
public void stop() throws IOException, InterruptedException
{
_router.stop();
super.stop();
}
@Override
public void onOpen(WebSocket conn, ClientHandshake handshake)
{
if (handshake.hasFieldValue(VivariumResearchClient.CLIENT_ID_HEADER))
{
System.out.println(handshake.getFieldValue(VivariumResearchClient.CLIENT_ID_HEADER));
}
else
{
System.out.println("CLIENT DOESN'T HAVE ID");
}
_router.onOpen(conn, handshake);
}
@Override
public void onClose(WebSocket conn, int code, String reason, boolean remote)
{
_router.onClose(conn, code, reason, remote);
}
@Override
public void onMessage(WebSocket conn, String message)
{
_router.onMessage(conn, message);
}
@Override
public void onError(WebSocket conn, Exception ex)
{
_router.onError(conn, ex);
}
}