Files
KLALB/src/org/kne/cloud/network/klalb/StreamKLALBPacketLink.java
T

82 lines
2.0 KiB
Java

package org.kne.cloud.network.klalb;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketException;
import java.nio.ByteBuffer;
import org.kne.cloud.network.MultiProtocolSocketAddress;
public class StreamKLALBPacketLink extends AbstractKLALBPacketLink implements KLALBPacketLink {
@Override
public String toString() {
return new MultiProtocolSocketAddress((InetSocketAddress)connectSocket.getLocalSocketAddress())+"←"+new MultiProtocolSocketAddress((InetSocketAddress)connectSocket.getRemoteSocketAddress());
}
private Socket connectSocket;
private KLALBInputStream in;
private KLALBOutputStream out;
public StreamKLALBPacketLink(Socket connectSocket) throws IOException {
this.connectSocket=connectSocket;
connectSocket.setTcpNoDelay(true);
setSoTimeout(getDefaultSoTimeout());
out=new KLALBOutputStream(connectSocket.getOutputStream());
out.flush();
in=new KLALBInputStream( connectSocket.getInputStream());
//connectSocket.setSendBufferSize(1024*1024*1024);
}
@Override
public void writeKLALBPacket(KLALBPacket kp) throws IOException {
out.writeKLALBPacket(kp);
}
@Override
public KLALBPacket readKLALBPacket() throws IOException {
return in.readKLALBPacket();
}
@Override
public void close() throws IOException {
connectSocket.close();
}
@Override
public boolean isClosed() {
return connectSocket.isClosed();
}
@Override
public void setSoTimeout(int val) throws SocketException {
connectSocket.setSoTimeout(val);
}
@Override
public int getSoTimeout() throws SocketException {
return connectSocket.getSoTimeout();
}
@Override
public void flush() throws IOException {
out.flush();
}
@Override
public boolean isStream() {
return true;
}
@Override
public void writePacket(ByteBuffer kp) throws IOException {
out.writePacket(kp);
}
@Override
public ByteBuffer readPacket() throws IOException {
return in.readPacket();
}
}