package Communication.Messages.TCP;
import Communication.Messages.Service.MessageFactory;
import Communication.Messages.Service.MessageSession;
import Communication.Messages.Service.MessageSessionImpl;
import Communication.Messages.Service.StandardReceivingThread;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.net.ServerSocket;
import java.net.Socket;
public class ReceivingStreamThread extends StandardReceivingThread
{
private final WeakReference sock;
public ReceivingStreamThread(ServerSocket sock)
{
this.sock = new WeakReference<>(sock);
}
@Override
public void receive() throws InterruptedException, IOException
{
Socket socket = this.sock.get().accept();
new Thread(() -> {
try
{
MessageSession messageSessionImpl = MessageFactory.getInstance().getSession(socket);
while (socket.isConnected())
{
messageSessionImpl.receive();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}).start();
}
}