final class io.netty.handler.ssl.JettyNpnSslEngine extends io.netty.handler.ssl.JdkSslEngine
{
private static boolean available;
static boolean isAvailable()
{
boolean v;
staticinvoke <io.netty.handler.ssl.JettyNpnSslEngine: void updateAvailability()>();
v = <io.netty.handler.ssl.JettyNpnSslEngine: boolean available>;
return v;
}
private static void updateAvailability()
{
java.lang.Exception v;
boolean v;
v = <io.netty.handler.ssl.JettyNpnSslEngine: boolean available>;
if v == 0 goto label;
return;
label:
staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String,boolean,java.lang.ClassLoader)>("sun.security.ssl.NextProtoNegoExtension", 1, null);
<io.netty.handler.ssl.JettyNpnSslEngine: boolean available> = 1;
label:
goto label;
label:
v := @caughtexception;
label:
return;
catch java.lang.Exception from label to label with label;
}
void <init>(javax.net.ssl.SSLEngine, io.netty.handler.ssl.JdkApplicationProtocolNegotiator, boolean)
{
io.netty.handler.ssl.JettyNpnSslEngine$1 v;
io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelectionListener v;
io.netty.handler.ssl.JettyNpnSslEngine$2 v;
io.netty.handler.ssl.JdkApplicationProtocolNegotiator v;
io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelectionListenerFactory v;
io.netty.handler.ssl.JettyNpnSslEngine v;
javax.net.ssl.SSLEngine v;
java.util.List v, v;
io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelectorFactory v;
io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelector v;
java.lang.Object v, v;
java.util.LinkedHashSet v;
boolean v;
v := @this: io.netty.handler.ssl.JettyNpnSslEngine;
v := @parameter: javax.net.ssl.SSLEngine;
v := @parameter: io.netty.handler.ssl.JdkApplicationProtocolNegotiator;
v := @parameter: boolean;
specialinvoke v.<io.netty.handler.ssl.JdkSslEngine: void <init>(javax.net.ssl.SSLEngine)>(v);
staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "applicationNegotiator");
if v == 0 goto label;
v = interfaceinvoke v.<io.netty.handler.ssl.JdkApplicationProtocolNegotiator: io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelectionListenerFactory protocolListenerFactory()>();
v = interfaceinvoke v.<io.netty.handler.ssl.JdkApplicationProtocolNegotiator: java.util.List protocols()>();
v = interfaceinvoke v.<io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelectionListenerFactory: io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelectionListener newListener(javax.net.ssl.SSLEngine,java.util.List)>(v, v);
v = staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "protocolListener");
v = new io.netty.handler.ssl.JettyNpnSslEngine$1;
specialinvoke v.<io.netty.handler.ssl.JettyNpnSslEngine$1: void <init>(io.netty.handler.ssl.JettyNpnSslEngine,io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelectionListener,io.netty.handler.ssl.JdkApplicationProtocolNegotiator)>(v, v, v);
staticinvoke <org.eclipse.jetty.npn.NextProtoNego: void put(javax.net.ssl.SSLEngine,org.eclipse.jetty.npn.NextProtoNego$Provider)>(v, v);
goto label;
label:
v = interfaceinvoke v.<io.netty.handler.ssl.JdkApplicationProtocolNegotiator: io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelectorFactory protocolSelectorFactory()>();
v = new java.util.LinkedHashSet;
v = interfaceinvoke v.<io.netty.handler.ssl.JdkApplicationProtocolNegotiator: java.util.List protocols()>();
specialinvoke v.<java.util.LinkedHashSet: void <init>(java.util.Collection)>(v);
v = interfaceinvoke v.<io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelectorFactory: io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelector newSelector(javax.net.ssl.SSLEngine,java.util.Set)>(v, v);
v = staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "protocolSelector");
v = new io.netty.handler.ssl.JettyNpnSslEngine$2;
specialinvoke v.<io.netty.handler.ssl.JettyNpnSslEngine$2: void <init>(io.netty.handler.ssl.JettyNpnSslEngine,io.netty.handler.ssl.JdkApplicationProtocolNegotiator$ProtocolSelector)>(v, v);
staticinvoke <org.eclipse.jetty.npn.NextProtoNego: void put(javax.net.ssl.SSLEngine,org.eclipse.jetty.npn.NextProtoNego$Provider)>(v, v);
label:
return;
}
public void closeInbound() throws javax.net.ssl.SSLException
{
io.netty.handler.ssl.JettyNpnSslEngine v;
javax.net.ssl.SSLEngine v;
v := @this: io.netty.handler.ssl.JettyNpnSslEngine;
v = virtualinvoke v.<io.netty.handler.ssl.JettyNpnSslEngine: javax.net.ssl.SSLEngine getWrappedEngine()>();
staticinvoke <org.eclipse.jetty.npn.NextProtoNego: org.eclipse.jetty.npn.NextProtoNego$Provider remove(javax.net.ssl.SSLEngine)>(v);
specialinvoke v.<io.netty.handler.ssl.JdkSslEngine: void closeInbound()>();
return;
}
public void closeOutbound()
{
io.netty.handler.ssl.JettyNpnSslEngine v;
javax.net.ssl.SSLEngine v;
v := @this: io.netty.handler.ssl.JettyNpnSslEngine;
v = virtualinvoke v.<io.netty.handler.ssl.JettyNpnSslEngine: javax.net.ssl.SSLEngine getWrappedEngine()>();
staticinvoke <org.eclipse.jetty.npn.NextProtoNego: org.eclipse.jetty.npn.NextProtoNego$Provider remove(javax.net.ssl.SSLEngine)>(v);
specialinvoke v.<io.netty.handler.ssl.JdkSslEngine: void closeOutbound()>();
return;
}
}