public class org.fusesource.hawtdispatch.transport.UdpTransportServer extends org.fusesource.hawtdispatch.transport.ServiceBase implements org.fusesource.hawtdispatch.transport.TransportServer
{
private final java.lang.String bindScheme;
private final java.net.InetSocketAddress bindAddress;
private java.nio.channels.DatagramChannel channel;
private org.fusesource.hawtdispatch.transport.TransportServerListener listener;
private org.fusesource.hawtdispatch.DispatchQueue dispatchQueue;
private java.util.concurrent.Executor blockingExecutor;
private org.fusesource.hawtdispatch.transport.UdpTransport transport;
public void <init>(java.net.URI) throws java.net.UnknownHostException
{
java.net.InetSocketAddress v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
java.net.InetAddress v;
int v, v;
java.lang.String v, v, v;
java.net.URI v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v := @parameter: java.net.URI;
specialinvoke v.<org.fusesource.hawtdispatch.transport.ServiceBase: void <init>()>();
v = virtualinvoke v.<java.net.URI: java.lang.String getScheme()>();
v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.lang.String bindScheme> = v;
v = virtualinvoke v.<java.net.URI: java.lang.String getHost()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v != 0 goto label;
label:
v = "::";
goto label;
label:
v = v;
label:
v = new java.net.InetSocketAddress;
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getByName(java.lang.String)>(v);
v = virtualinvoke v.<java.net.URI: int getPort()>();
specialinvoke v.<java.net.InetSocketAddress: void <init>(java.net.InetAddress,int)>(v, v);
v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.net.InetSocketAddress bindAddress> = v;
return;
}
public void setTransportServerListener(org.fusesource.hawtdispatch.transport.TransportServerListener)
{
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
org.fusesource.hawtdispatch.transport.TransportServerListener v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v := @parameter: org.fusesource.hawtdispatch.transport.TransportServerListener;
v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.transport.TransportServerListener listener> = v;
return;
}
public java.net.InetSocketAddress getSocketAddress()
{
java.net.DatagramSocket v;
java.net.SocketAddress v;
java.nio.channels.DatagramChannel v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.nio.channels.DatagramChannel channel>;
v = virtualinvoke v.<java.nio.channels.DatagramChannel: java.net.DatagramSocket socket()>();
v = virtualinvoke v.<java.net.DatagramSocket: java.net.SocketAddress getLocalSocketAddress()>();
return v;
}
public org.fusesource.hawtdispatch.DispatchQueue getDispatchQueue()
{
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.DispatchQueue dispatchQueue>;
return v;
}
public void setDispatchQueue(org.fusesource.hawtdispatch.DispatchQueue)
{
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v := @parameter: org.fusesource.hawtdispatch.DispatchQueue;
v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.DispatchQueue dispatchQueue> = v;
return;
}
protected void _start(org.fusesource.hawtdispatch.Task)
{
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.hawtdispatch.Task v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v := @parameter: org.fusesource.hawtdispatch.Task;
specialinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: void accept()>();
if v == null goto label;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.DispatchQueue dispatchQueue>;
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void execute(org.fusesource.hawtdispatch.Task)>(v);
label:
return;
}
private void queueAccept()
{
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.hawtdispatch.transport.UdpTransportServer$1 v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.DispatchQueue dispatchQueue>;
v = new org.fusesource.hawtdispatch.transport.UdpTransportServer$1;
specialinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransportServer$1: void <init>(org.fusesource.hawtdispatch.transport.UdpTransportServer)>(v);
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void execute(org.fusesource.hawtdispatch.Task)>(v);
return;
}
private void accept()
{
org.fusesource.hawtdispatch.transport.UdpTransportServer$2 v;
java.nio.channels.DatagramChannel v, v, v;
java.net.DatagramSocket v;
org.fusesource.hawtdispatch.transport.UdpTransport v, v, v, v;
boolean v, v;
org.fusesource.hawtdispatch.transport.TransportServerListener v, v;
org.fusesource.hawtdispatch.transport.ServiceBase$State v, v;
java.net.InetSocketAddress v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
java.lang.Exception v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v = virtualinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.transport.ServiceBase$State getServiceState()>();
v = virtualinvoke v.<org.fusesource.hawtdispatch.transport.ServiceBase$State: boolean isStarted()>();
if v != 0 goto label;
v = virtualinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.transport.ServiceBase$State getServiceState()>();
v = virtualinvoke v.<org.fusesource.hawtdispatch.transport.ServiceBase$State: boolean isStarting()>();
if v == 0 goto label;
label:
v = virtualinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.transport.UdpTransport createTransport()>();
v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.transport.UdpTransport transport> = v;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.transport.UdpTransport transport>;
v = new org.fusesource.hawtdispatch.transport.UdpTransportServer$2;
specialinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransportServer$2: void <init>(org.fusesource.hawtdispatch.transport.UdpTransportServer)>(v);
v.<org.fusesource.hawtdispatch.transport.UdpTransport: org.fusesource.hawtdispatch.Task onDispose> = v;
v = staticinvoke <java.nio.channels.DatagramChannel: java.nio.channels.DatagramChannel open()>();
v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.nio.channels.DatagramChannel channel> = v;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.nio.channels.DatagramChannel channel>;
v = virtualinvoke v.<java.nio.channels.DatagramChannel: java.net.DatagramSocket socket()>();
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.net.InetSocketAddress bindAddress>;
virtualinvoke v.<java.net.DatagramSocket: void bind(java.net.SocketAddress)>(v);
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.transport.UdpTransport transport>;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.nio.channels.DatagramChannel channel>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransport: void connected(java.nio.channels.DatagramChannel)>(v);
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.transport.TransportServerListener listener>;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.transport.UdpTransport transport>;
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.TransportServerListener: void onAccept(org.fusesource.hawtdispatch.transport.Transport)>(v);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.transport.TransportServerListener listener>;
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.TransportServerListener: void onAcceptError(java.lang.Exception)>(v);
label:
return;
catch java.lang.Exception from label to label with label;
}
protected org.fusesource.hawtdispatch.transport.UdpTransport createTransport()
{
java.util.concurrent.Executor v;
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.hawtdispatch.transport.UdpTransport v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v = new org.fusesource.hawtdispatch.transport.UdpTransport;
specialinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransport: void <init>()>();
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.util.concurrent.Executor blockingExecutor>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransport: void setBlockingExecutor(java.util.concurrent.Executor)>(v);
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.DispatchQueue dispatchQueue>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransport: void setDispatchQueue(org.fusesource.hawtdispatch.DispatchQueue)>(v);
return v;
}
protected void _stop(org.fusesource.hawtdispatch.Task)
{
org.fusesource.hawtdispatch.Task v;
org.fusesource.hawtdispatch.transport.UdpTransport v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v := @parameter: org.fusesource.hawtdispatch.Task;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.transport.UdpTransport transport>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransport: void stop(org.fusesource.hawtdispatch.Task)>(v);
return;
}
public void suspend()
{
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.DispatchQueue dispatchQueue>;
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void suspend()>();
return;
}
public void resume()
{
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: org.fusesource.hawtdispatch.DispatchQueue dispatchQueue>;
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void resume()>();
return;
}
public java.lang.String getBoundAddress()
{
java.net.URISyntaxException v;
java.nio.channels.DatagramChannel v;
java.lang.RuntimeException v;
java.net.InetSocketAddress v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
java.net.DatagramSocket v;
java.net.InetAddress v;
int v;
java.lang.String v, v, v;
java.net.URI v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
label:
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.net.InetSocketAddress bindAddress>;
v = virtualinvoke v.<java.net.InetSocketAddress: java.net.InetAddress getAddress()>();
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.nio.channels.DatagramChannel channel>;
v = virtualinvoke v.<java.nio.channels.DatagramChannel: java.net.DatagramSocket socket()>();
v = virtualinvoke v.<java.net.DatagramSocket: int getLocalPort()>();
v = new java.net.URI;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.lang.String bindScheme>;
specialinvoke v.<java.net.URI: void <init>(java.lang.String,java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String)>(v, null, v, v, null, null, null);
v = virtualinvoke v.<java.net.URI: java.lang.String toString()>();
label:
return v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.net.URISyntaxException from label to label with label;
}
public java.lang.String toString()
{
java.lang.String v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v = virtualinvoke v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.lang.String getBoundAddress()>();
return v;
}
public java.util.concurrent.Executor getBlockingExecutor()
{
java.util.concurrent.Executor v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v = v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.util.concurrent.Executor blockingExecutor>;
return v;
}
public void setBlockingExecutor(java.util.concurrent.Executor)
{
java.util.concurrent.Executor v;
org.fusesource.hawtdispatch.transport.UdpTransportServer v;
v := @this: org.fusesource.hawtdispatch.transport.UdpTransportServer;
v := @parameter: java.util.concurrent.Executor;
v.<org.fusesource.hawtdispatch.transport.UdpTransportServer: java.util.concurrent.Executor blockingExecutor> = v;
return;
}
}