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();
}
}