HOME PCB
..ReceivingStreamThread.javaSendingStreamThread.javaTCPMessageService.javaTCPSession.java
package Communication.Messages.TCP;

import Communication.Messages.Service.MessageSession;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.net.Socket;

public class TCPSession extends MessageSession
{
    private final Socket sock;

    public TCPSession(Socket sock)
    {
        this.sock = sock;
    }

    @Override
    public DataInputStream getReceiveStream() throws IOException
    {
        return new DataInputStream(this.sock.getInputStream());
    }

    @Override
    protected void sendImpl(Object o, Object messageHandler, Method send) throws IOException, InvocationTargetException, IllegalAccessException
    {
        DataOutputStream dos = new DataOutputStream(this.sock.getOutputStream());
        send.invoke(messageHandler, dos, this);
    }

    @Override
    public InetSocketAddress getSocketAddress() {
        return (InetSocketAddress) this.sock.getRemoteSocketAddress();
    }

    @Override
    public boolean isClosed()
    {
        return this.sock.isClosed();
    }
}