package se.rhel.server;
import se.rhel.Connection;
import se.rhel.Server;
import se.rhel.TcpConnection;
import se.rhel.packet.HandshakeResponsePacket;
import java.io.IOException;
import java.net.ServerSocket;
/**
* Created by Emil on 2014-03-05.
* Waiting for incomming TCP connections
*/
public class TcpListener implements Runnable {
private ServerSocket mTCPSocket;
private Server mServer;
private ServerPacketHandler mHandler;
public TcpListener(ServerSocket tcpSocket, Server server, ServerPacketHandler handler) {
mTCPSocket = tcpSocket;
mServer = server;
mHandler = handler;
}
@Override
public void run() {
while(true) {
try {
TcpConnection tcpCon = new TcpConnection(mHandler);
tcpCon.bindSocket(mTCPSocket.accept());
Connection connection = mServer.createConnection(tcpCon);
mServer.addConnection(connection);
mServer.sendTCP(new HandshakeResponsePacket(connection.getId()), connection);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void start() {
new Thread(this, "TcpListenerThread").start();
}
public void stop() {
try {
mTCPSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}