public class org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol extends org.apache.dubbo.rpc.protocol.AbstractProxyProtocol
{
public static final int DEFAULT_PORT;
private final java.util.concurrent.ConcurrentMap channelMap;
private final java.lang.Object lock;
public void <init>()
{
java.util.concurrent.ConcurrentHashMap v;
java.lang.Object v;
org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol v;
v := @this: org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol;
specialinvoke v.<org.apache.dubbo.rpc.protocol.AbstractProxyProtocol: void <init>()>();
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.util.concurrent.ConcurrentMap channelMap> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.lang.Object lock> = v;
return;
}
protected java.lang.Runnable doExport(java.lang.Object, java.lang.Class, org.apache.dubbo.common.URL) throws org.apache.dubbo.rpc.RpcException
{
java.lang.IllegalStateException v, v;
java.lang.Object[] v;
java.lang.Runnable v;
java.util.function.Function v;
org.apache.dubbo.common.URL v;
org.apache.dubbo.rpc.model.ProviderModel v;
java.util.Map v;
java.lang.String v, v, v, v, v;
java.lang.reflect.Method v;
boolean v;
org.apache.dubbo.remoting.RemotingServer v;
java.lang.Class[] v;
java.lang.Exception v;
org.apache.dubbo.rpc.model.ServiceRepository v;
org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol v;
org.apache.dubbo.rpc.protocol.grpc.DubboHandlerRegistry v;
java.lang.Class v, v;
java.lang.Object v, v, v;
v := @this: org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Class;
v := @parameter: org.apache.dubbo.common.URL;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getAddress()>();
v = v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.util.Map serverMap>;
v = staticinvoke <org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol$lambda_doExport_0__6: java.util.function.Function bootstrap$(org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol,org.apache.dubbo.common.URL)>(v, v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object computeIfAbsent(java.lang.Object,java.util.function.Function)>(v, v);
v = interfaceinvoke v.<org.apache.dubbo.rpc.ProtocolServer: org.apache.dubbo.remoting.RemotingServer getRemotingServer()>();
v = staticinvoke <org.apache.dubbo.rpc.model.ApplicationModel: org.apache.dubbo.rpc.model.ServiceRepository getServiceRepository()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getServiceKey()>();
v = virtualinvoke v.<org.apache.dubbo.rpc.model.ServiceRepository: org.apache.dubbo.rpc.model.ProviderModel lookupExportedService(java.lang.String)>(v);
if v != null goto label;
v = new java.lang.IllegalStateException;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getServiceKey()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Service \u0001should have already been stored in service repository, but failed to find it.");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<org.apache.dubbo.rpc.model.ProviderModel: java.lang.Object getServiceInstance()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
label:
v = newarray (java.lang.Class)[1];
v[0] = v;
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method getMethod(java.lang.String,java.lang.Class[])>("setProxiedImpl", v);
v = newarray (java.lang.Object)[1];
v[0] = v;
virtualinvoke v.<java.lang.reflect.Method: java.lang.Object invoke(java.lang.Object,java.lang.Object[])>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("Failed to set dubbo proxied service impl to stub, please make sure your stub was generated by the dubbo-protoc-compiler.", v);
throw v;
label:
v = virtualinvoke v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol$GrpcRemotingServer: org.apache.dubbo.rpc.protocol.grpc.DubboHandlerRegistry getRegistry()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getServiceKey()>();
virtualinvoke v.<org.apache.dubbo.rpc.protocol.grpc.DubboHandlerRegistry: void addService(io.grpc.BindableService,java.lang.String)>(v, v);
v = virtualinvoke v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol$GrpcRemotingServer: boolean isStarted()>();
if v != 0 goto label;
virtualinvoke v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol$GrpcRemotingServer: void start()>();
label:
v = staticinvoke <org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol$lambda_doExport_1__7: java.lang.Runnable bootstrap$(org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol$GrpcRemotingServer,org.apache.dubbo.common.URL)>(v, v);
return v;
catch java.lang.Exception from label to label with label;
}
protected org.apache.dubbo.rpc.Invoker protocolBindingRefer(java.lang.Class, org.apache.dubbo.common.URL) throws org.apache.dubbo.rpc.RpcException
{
io.grpc.CallOptions v;
java.lang.IllegalStateException v;
java.lang.Object[] v;
org.apache.dubbo.rpc.ProxyFactory v;
java.lang.NoSuchMethodException v;
org.apache.dubbo.rpc.protocol.grpc.ReferenceCountManagedChannel v;
org.apache.dubbo.config.ReferenceConfigBase v;
java.lang.ReflectiveOperationException v;
org.apache.dubbo.rpc.Invoker v;
org.apache.dubbo.common.URL v;
java.lang.String v, v, v, v, v;
java.lang.reflect.Method v;
org.apache.dubbo.rpc.protocol.grpc.GrpcInvoker v;
java.lang.Class[] v;
java.util.Set v;
java.lang.IllegalArgumentException v, v;
org.apache.dubbo.rpc.model.ConsumerModel v;
org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol v;
java.lang.Class v, v;
java.lang.Object v;
v := @this: org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol;
v := @parameter: java.lang.Class;
v := @parameter: org.apache.dubbo.common.URL;
v = virtualinvoke v.<java.lang.Class: java.lang.Class getEnclosingClass()>();
if v != null goto label;
v = new java.lang.IllegalArgumentException;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u must be declared inside protobuf generated classes, should be something like ServiceNameGrpc.IServiceName.");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = newarray (java.lang.Class)[4];
v[0] = class "Lio/grpc/Channel;";
v[1] = class "Lio/grpc/CallOptions;";
v[2] = class "Lorg/apache/dubbo/common/URL;";
v[3] = class "Lorg/apache/dubbo/config/ReferenceConfigBase;";
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method getDeclaredMethod(java.lang.String,java.lang.Class[])>("getDubboStub", v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalArgumentException;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Does not find getDubboStub in \u, please use the customized protoc-gen-dubbo-java to update the generated classes.");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = specialinvoke v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: org.apache.dubbo.rpc.protocol.grpc.ReferenceCountManagedChannel getSharedChannel(org.apache.dubbo.common.URL)>(v);
label:
v = newarray (java.lang.Object)[4];
v[0] = v;
v = staticinvoke <org.apache.dubbo.rpc.protocol.grpc.GrpcOptionsUtils: io.grpc.CallOptions buildCallOptions(org.apache.dubbo.common.URL)>(v);
v[1] = v;
v[2] = v;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getServiceKey()>();
v = staticinvoke <org.apache.dubbo.rpc.model.ApplicationModel: org.apache.dubbo.rpc.model.ConsumerModel getConsumerModel(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.dubbo.rpc.model.ConsumerModel: org.apache.dubbo.config.ReferenceConfigBase getReferenceConfig()>();
v[3] = v;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Object invoke(java.lang.Object,java.lang.Object[])>(null, v);
v = v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: org.apache.dubbo.rpc.ProxyFactory proxyFactory>;
v = interfaceinvoke v.<org.apache.dubbo.rpc.ProxyFactory: org.apache.dubbo.rpc.Invoker getInvoker(java.lang.Object,java.lang.Class,org.apache.dubbo.common.URL)>(v, v, v);
v = new org.apache.dubbo.rpc.protocol.grpc.GrpcInvoker;
specialinvoke v.<org.apache.dubbo.rpc.protocol.grpc.GrpcInvoker: void <init>(java.lang.Class,org.apache.dubbo.common.URL,org.apache.dubbo.rpc.Invoker,org.apache.dubbo.rpc.protocol.grpc.ReferenceCountManagedChannel)>(v, v, v, v);
v = v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.util.Set invokers>;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("Could not create stub through reflection.", v);
throw v;
catch java.lang.NoSuchMethodException from label to label with label;
catch java.lang.IllegalAccessException from label to label with label;
catch java.lang.reflect.InvocationTargetException from label to label with label;
}
protected java.lang.Object doRefer(java.lang.Class, org.apache.dubbo.common.URL) throws org.apache.dubbo.rpc.RpcException
{
java.lang.UnsupportedOperationException v;
org.apache.dubbo.common.URL v;
java.lang.Class v;
org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol v;
v := @this: org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol;
v := @parameter: java.lang.Class;
v := @parameter: org.apache.dubbo.common.URL;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>(java.lang.String)>("not used");
throw v;
}
private org.apache.dubbo.rpc.protocol.grpc.ReferenceCountManagedChannel getSharedChannel(org.apache.dubbo.common.URL)
{
java.lang.Throwable v;
io.grpc.ManagedChannel v;
org.apache.dubbo.rpc.protocol.grpc.ReferenceCountManagedChannel v;
java.util.concurrent.ConcurrentMap v, v, v;
org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol v;
org.apache.dubbo.common.URL v;
java.lang.Object v, v, v;
java.lang.String v;
boolean v, v;
v := @this: org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol;
v := @parameter: org.apache.dubbo.common.URL;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getAddress()>();
v = v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.util.concurrent.ConcurrentMap channelMap>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = virtualinvoke v.<org.apache.dubbo.rpc.protocol.grpc.ReferenceCountManagedChannel: boolean isTerminated()>();
if v != 0 goto label;
virtualinvoke v.<org.apache.dubbo.rpc.protocol.grpc.ReferenceCountManagedChannel: void incrementAndGetCount()>();
return v;
label:
v = v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.lang.Object lock>;
entermonitor v;
label:
v = v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.util.concurrent.ConcurrentMap channelMap>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = virtualinvoke v.<org.apache.dubbo.rpc.protocol.grpc.ReferenceCountManagedChannel: boolean isTerminated()>();
if v != 0 goto label;
virtualinvoke v.<org.apache.dubbo.rpc.protocol.grpc.ReferenceCountManagedChannel: void incrementAndGetCount()>();
goto label;
label:
v = new org.apache.dubbo.rpc.protocol.grpc.ReferenceCountManagedChannel;
v = specialinvoke v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: io.grpc.ManagedChannel initChannel(org.apache.dubbo.common.URL)>(v);
specialinvoke v.<org.apache.dubbo.rpc.protocol.grpc.ReferenceCountManagedChannel: void <init>(io.grpc.ManagedChannel)>(v);
v = v;
v = v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.util.concurrent.ConcurrentMap channelMap>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return v;
catch java.lang.Throwable from label to label with label;
}
private io.grpc.ManagedChannel initChannel(org.apache.dubbo.common.URL)
{
org.apache.dubbo.common.URL v;
io.grpc.ManagedChannel v;
org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol v;
v := @this: org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol;
v := @parameter: org.apache.dubbo.common.URL;
v = staticinvoke <org.apache.dubbo.rpc.protocol.grpc.GrpcOptionsUtils: io.grpc.ManagedChannel buildManagedChannel(org.apache.dubbo.common.URL)>(v);
return v;
}
public int getDefaultPort()
{
int v;
org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol v;
v := @this: org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol;
v = (int) 50051;
return v;
}
public void destroy()
{
java.util.Collection v, v;
java.util.concurrent.ConcurrentMap v, v;
org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol v;
java.util.function.Consumer v, v;
java.util.Map v, v;
v := @this: org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol;
v = v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.util.Map serverMap>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = staticinvoke <org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol$close__8: java.util.function.Consumer bootstrap$()>();
interfaceinvoke v.<java.util.Collection: void forEach(java.util.function.Consumer)>(v);
v = v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.util.concurrent.ConcurrentMap channelMap>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Collection values()>();
v = staticinvoke <org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol$shutdown__9: java.util.function.Consumer bootstrap$()>();
interfaceinvoke v.<java.util.Collection: void forEach(java.util.function.Consumer)>(v);
v = v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.util.Map serverMap>;
interfaceinvoke v.<java.util.Map: void clear()>();
v = v.<org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol: java.util.concurrent.ConcurrentMap channelMap>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: void clear()>();
specialinvoke v.<org.apache.dubbo.rpc.protocol.AbstractProxyProtocol: void destroy()>();
return;
}
}