HOME PCB
..ReceivingStreamThread.javaSendingStreamThread.javaTCPMessageService.javaTCPSession.java
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();


    }
}