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

91 lines
2.8 KiB
Java

package org.kne.cloud.network.klalb;
import java.io.IOException;
import java.net.*;
import java.nio.channels.SocketChannel;
import org.kne.cloud.network.VirtualSocket;
import org.kne.cloud.network.VirtualSocketImpl;
public class KLALBVirtualSocket extends VirtualSocket {
@Override
protected KLALBVirtualSocketImpl getVirtualImpl() {
return (KLALBVirtualSocketImpl) super.getVirtualImpl();
}
private KLALBController controller;
protected SocketChannel channel;
public KLALBVirtualSocket(KLALBController controler) throws SocketException {
super(controler.createVirtualSocketImpl());
this.controller = controler;
}
protected KLALBController getController() {
return controller;
}
public KLALBVirtualSocket(KLALBController controler,String host, int port) throws UnknownHostException, IOException {
this(controler,host != null ? new InetSocketAddress(host, port)
: new InetSocketAddress(InetAddress.getByName(null), port), (SocketAddress) null);
}
public KLALBVirtualSocket(KLALBController controler,SocketAddress address, SocketAddress localAddr) throws IOException {
this(controler);
// backward compatibility
if (address == null)
throw new NullPointerException();
try {
if (localAddr != null)
bind(localAddr);
connect(address);
} catch (IOException | IllegalArgumentException | SecurityException e) {
try {
close();
} catch (IOException ce) {
e.addSuppressed(ce);
}
throw e;
}
}
public KLALBVirtualSocket(KLALBController controler,String host, int port, InetAddress localAddr, int localPort) throws IOException {
this(controler,host != null ? new InetSocketAddress(host, port)
: new InetSocketAddress(InetAddress.getByName(null), port),
new InetSocketAddress(localAddr, localPort));
}
public KLALBVirtualSocket(KLALBController controler,InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException {
this(controler,address != null ? new InetSocketAddress(address, port) : null,
new InetSocketAddress(localAddr, localPort));
}
public KLALBVirtualSocket(KLALBController controler,InetAddress address, int port) throws IOException {
this(controler,address != null ? new InetSocketAddress(address, port) : null,
(SocketAddress) null);
}
public void setCompress(int i) {
((KLALBVirtualSocketImpl)getVirtualImpl()).setCompress(i);
}
public int setCompress() {
return ((KLALBVirtualSocketImpl)getVirtualImpl()).getCompress();
}
@Override
public SocketChannel getChannel() {
return channel;
}
public boolean isConnectionPending() {
return ((KLALBVirtualSocketImpl)getVirtualImpl()).isConnectionPending();
}
}