forked from KNEMC/KLALB
91 lines
2.8 KiB
Java
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();
|
|
}
|
|
|
|
|
|
|
|
|
|
} |