public class org.apache.dubbo.registry.integration.RegistryProtocol extends java.lang.Object implements org.apache.dubbo.rpc.Protocol
{
public static final java.lang.String[] DEFAULT_REGISTER_PROVIDER_KEYS;
public static final java.lang.String[] DEFAULT_REGISTER_CONSUMER_KEYS;
private static final java.lang.String REGISTRY_PROTOCOL_LISTENER_KEY;
private static final int DEFAULT_PORT;
private static final org.apache.dubbo.common.logger.Logger LOGGER;
private final java.util.Map overrideListeners;
private final java.util.Map serviceConfigurationListeners;
private final org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener providerConfigurationListener;
private final java.util.concurrent.ConcurrentMap bounds;
protected org.apache.dubbo.rpc.Protocol protocol;
protected org.apache.dubbo.registry.RegistryFactory registryFactory;
protected org.apache.dubbo.rpc.ProxyFactory proxyFactory;
private java.util.concurrent.ConcurrentMap reExportFailedTasks;
private org.apache.dubbo.common.timer.HashedWheelTimer retryTimer;
private static org.apache.dubbo.registry.integration.RegistryProtocol INSTANCE;
private static java.lang.String[] getHiddenKeys(org.apache.dubbo.common.URL)
{
java.lang.Object[] v;
java.util.function.Predicate v;
java.util.Set v;
java.lang.String[] v;
org.apache.dubbo.common.URL v;
java.util.stream.Stream v, v;
java.util.Map v;
boolean v;
java.util.function.IntFunction v;
v := @parameter: org.apache.dubbo.common.URL;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.util.Map getParameters()>();
v = staticinvoke <org.apache.dubbo.common.utils.CollectionUtils: boolean isNotEmptyMap(java.util.Map)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Map: java.util.Set keySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.stream.Stream stream()>();
v = staticinvoke <org.apache.dubbo.registry.integration.RegistryProtocol$lambda_getHiddenKeys_0__535: java.util.function.Predicate bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream filter(java.util.function.Predicate)>(v);
v = staticinvoke <org.apache.dubbo.registry.integration.RegistryProtocol$lambda_getHiddenKeys_1__536: java.util.function.IntFunction bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object[] toArray(java.util.function.IntFunction)>(v);
return v;
label:
v = newarray (java.lang.String)[0];
return v;
}
public void setProtocol(org.apache.dubbo.rpc.Protocol)
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.Protocol v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.Protocol;
v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.Protocol protocol> = v;
return;
}
public void setRegistryFactory(org.apache.dubbo.registry.RegistryFactory)
{
org.apache.dubbo.registry.RegistryFactory v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.registry.RegistryFactory;
v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.RegistryFactory registryFactory> = v;
return;
}
public void setProxyFactory(org.apache.dubbo.rpc.ProxyFactory)
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.ProxyFactory v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.ProxyFactory;
v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.ProxyFactory proxyFactory> = v;
return;
}
public int getDefaultPort()
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
return 9090;
}
public java.util.Map getOverrideListeners()
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.util.Map v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.Map overrideListeners>;
return v;
}
private void registerStatedUrl(org.apache.dubbo.common.URL, org.apache.dubbo.common.URL, boolean)
{
org.apache.dubbo.rpc.model.ProviderModel$RegisterStatedURL v;
org.apache.dubbo.common.URL v, v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.model.ProviderModel v;
java.lang.String v;
boolean v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: boolean;
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.ProviderModel getProviderModel(java.lang.String)>(v);
v = new org.apache.dubbo.rpc.model.ProviderModel$RegisterStatedURL;
specialinvoke v.<org.apache.dubbo.rpc.model.ProviderModel$RegisterStatedURL: void <init>(org.apache.dubbo.common.URL,org.apache.dubbo.common.URL,boolean)>(v, v, v);
virtualinvoke v.<org.apache.dubbo.rpc.model.ProviderModel: void addStatedUrl(org.apache.dubbo.rpc.model.ProviderModel$RegisterStatedURL)>(v);
return;
}
public org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker) throws org.apache.dubbo.rpc.RpcException
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.Invoker v;
org.apache.dubbo.registry.integration.RegistryProtocol$DestroyableExporter v;
org.apache.dubbo.common.URL v, v, v, v, v;
org.apache.dubbo.registry.integration.RegistryProtocol$OverrideListener v;
java.util.Map v;
org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper v;
boolean v;
org.apache.dubbo.registry.Registry v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.Invoker;
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL getRegistryUrl(org.apache.dubbo.rpc.Invoker)>(v);
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL getProviderUrl(org.apache.dubbo.rpc.Invoker)>(v);
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL getSubscribedOverrideUrl(org.apache.dubbo.common.URL)>(v);
v = new org.apache.dubbo.registry.integration.RegistryProtocol$OverrideListener;
specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$OverrideListener: void <init>(org.apache.dubbo.registry.integration.RegistryProtocol,org.apache.dubbo.common.URL,org.apache.dubbo.rpc.Invoker)>(v, v, v);
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.Map overrideListeners>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL overrideUrlWithConfig(org.apache.dubbo.common.URL,org.apache.dubbo.registry.integration.RegistryProtocol$OverrideListener)>(v, v);
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper doLocalExport(org.apache.dubbo.rpc.Invoker,org.apache.dubbo.common.URL)>(v, v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.Registry getRegistry(org.apache.dubbo.rpc.Invoker)>(v);
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL getUrlToRegistry(org.apache.dubbo.common.URL,org.apache.dubbo.common.URL)>(v, v);
v = virtualinvoke v.<org.apache.dubbo.common.URL: boolean getParameter(java.lang.String,boolean)>("register", 1);
if v == 0 goto label;
interfaceinvoke v.<org.apache.dubbo.registry.Registry: void register(org.apache.dubbo.common.URL)>(v);
label:
specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: void registerStatedUrl(org.apache.dubbo.common.URL,org.apache.dubbo.common.URL,boolean)>(v, v, v);
virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper: void setRegisterUrl(org.apache.dubbo.common.URL)>(v);
virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper: void setSubscribeUrl(org.apache.dubbo.common.URL)>(v);
interfaceinvoke v.<org.apache.dubbo.registry.Registry: void subscribe(org.apache.dubbo.common.URL,org.apache.dubbo.registry.NotifyListener)>(v, v);
specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: void notifyExport(org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper)>(v);
v = new org.apache.dubbo.registry.integration.RegistryProtocol$DestroyableExporter;
specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$DestroyableExporter: void <init>(org.apache.dubbo.rpc.Exporter)>(v);
return v;
}
private void notifyExport(org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper)
{
org.apache.dubbo.common.extension.ExtensionLoader v;
java.util.Iterator v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.Invoker v;
java.util.List v;
org.apache.dubbo.common.URL v;
java.lang.Object v;
org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper v;
boolean v, v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/registry/integration/RegistryProtocolListener;");
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper: org.apache.dubbo.rpc.Invoker getOriginInvoker()>();
v = interfaceinvoke v.<org.apache.dubbo.rpc.Invoker: org.apache.dubbo.common.URL getUrl()>();
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.List getActivateExtension(org.apache.dubbo.common.URL,java.lang.String)>(v, "registry.protocol.listener");
v = staticinvoke <org.apache.dubbo.common.utils.CollectionUtils: boolean isNotEmpty(java.util.Collection)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
interfaceinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocolListener: void onExport(org.apache.dubbo.registry.integration.RegistryProtocol,org.apache.dubbo.rpc.Exporter)>(v, v);
goto label;
label:
return;
}
private org.apache.dubbo.common.URL overrideUrlWithConfig(org.apache.dubbo.common.URL, org.apache.dubbo.registry.integration.RegistryProtocol$OverrideListener)
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.registry.integration.RegistryProtocol$ServiceConfigurationListener v;
org.apache.dubbo.common.URL v, v, v;
org.apache.dubbo.registry.integration.RegistryProtocol$OverrideListener v;
java.util.Map v;
org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener v;
java.lang.String v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: org.apache.dubbo.registry.integration.RegistryProtocol$OverrideListener;
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener providerConfigurationListener>;
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener: org.apache.dubbo.common.URL overrideUrl(org.apache.dubbo.common.URL)>(v);
v = new org.apache.dubbo.registry.integration.RegistryProtocol$ServiceConfigurationListener;
specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$ServiceConfigurationListener: void <init>(org.apache.dubbo.registry.integration.RegistryProtocol,org.apache.dubbo.common.URL,org.apache.dubbo.registry.integration.RegistryProtocol$OverrideListener)>(v, v, v);
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.Map serviceConfigurationListeners>;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getServiceKey()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$ServiceConfigurationListener: org.apache.dubbo.common.URL overrideUrl(org.apache.dubbo.common.URL)>(v);
return v;
}
private org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper doLocalExport(org.apache.dubbo.rpc.Invoker, org.apache.dubbo.common.URL)
{
org.apache.dubbo.common.URL v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.lang.Object v;
java.lang.String v;
org.apache.dubbo.rpc.Invoker v;
java.util.function.Function v;
java.util.concurrent.ConcurrentMap v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.Invoker;
v := @parameter: org.apache.dubbo.common.URL;
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.lang.String getCacheKey(org.apache.dubbo.rpc.Invoker)>(v);
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.concurrent.ConcurrentMap bounds>;
v = staticinvoke <org.apache.dubbo.registry.integration.RegistryProtocol$lambda_doLocalExport_2__537: java.util.function.Function bootstrap$(org.apache.dubbo.registry.integration.RegistryProtocol,org.apache.dubbo.rpc.Invoker,org.apache.dubbo.common.URL)>(v, v, v);
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object computeIfAbsent(java.lang.Object,java.util.function.Function)>(v, v);
return v;
}
public void reExport(org.apache.dubbo.rpc.Exporter, org.apache.dubbo.common.URL)
{
org.apache.dubbo.rpc.Exporter v;
org.apache.dubbo.common.URL v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.Invoker v;
boolean v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.Exporter;
v := @parameter: org.apache.dubbo.common.URL;
v = v instanceof org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper;
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper: org.apache.dubbo.rpc.Invoker getOriginInvoker()>();
virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: void reExport(org.apache.dubbo.rpc.Invoker,org.apache.dubbo.common.URL)>(v, v);
label:
return;
}
public void reExport(org.apache.dubbo.rpc.Invoker, org.apache.dubbo.common.URL)
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.registry.retry.ReExportTask v;
org.apache.dubbo.rpc.Invoker v;
java.lang.Runnable v;
java.util.concurrent.ConcurrentMap v, v, v;
org.apache.dubbo.rpc.Protocol v;
org.apache.dubbo.common.URL v, v, v, v;
int v;
java.lang.String v;
boolean v;
org.apache.dubbo.rpc.Exporter v;
org.apache.dubbo.registry.integration.RegistryProtocol$InvokerDelegate v;
org.apache.dubbo.common.timer.HashedWheelTimer v;
java.lang.Exception v;
java.util.concurrent.TimeUnit v;
java.lang.Object v, v, v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.Invoker;
v := @parameter: org.apache.dubbo.common.URL;
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.lang.String getCacheKey(org.apache.dubbo.rpc.Invoker)>(v);
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.concurrent.ConcurrentMap bounds>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper: org.apache.dubbo.common.URL getRegisterUrl()>();
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL getRegistryUrl(org.apache.dubbo.rpc.Invoker)>(v);
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL getUrlToRegistry(org.apache.dubbo.common.URL,org.apache.dubbo.common.URL)>(v, v);
v = new org.apache.dubbo.registry.integration.RegistryProtocol$InvokerDelegate;
specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$InvokerDelegate: void <init>(org.apache.dubbo.rpc.Invoker,org.apache.dubbo.common.URL)>(v, v);
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.Protocol protocol>;
v = interfaceinvoke v.<org.apache.dubbo.rpc.Protocol: org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker)>(v);
virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper: void setExporter(org.apache.dubbo.rpc.Exporter)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.URL: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
label:
specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: void doReExport(org.apache.dubbo.rpc.Invoker,org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper,org.apache.dubbo.common.URL,org.apache.dubbo.common.URL,org.apache.dubbo.common.URL)>(v, v, v, v, v);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.concurrent.ConcurrentMap reExportFailedTasks>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
return;
label:
v = new org.apache.dubbo.registry.retry.ReExportTask;
v = staticinvoke <org.apache.dubbo.registry.integration.RegistryProtocol$lambda_reExport_3__538: java.lang.Runnable bootstrap$(org.apache.dubbo.registry.integration.RegistryProtocol,org.apache.dubbo.rpc.Invoker,org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper,org.apache.dubbo.common.URL,org.apache.dubbo.common.URL,org.apache.dubbo.common.URL)>(v, v, v, v, v, v);
specialinvoke v.<org.apache.dubbo.registry.retry.ReExportTask: void <init>(java.lang.Runnable,org.apache.dubbo.common.URL,org.apache.dubbo.registry.support.FailbackRegistry)>(v, v, null);
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.concurrent.ConcurrentMap reExportFailedTasks>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object putIfAbsent(java.lang.Object,java.lang.Object)>(v, v);
if v != null goto label;
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.timer.HashedWheelTimer retryTimer>;
v = virtualinvoke v.<org.apache.dubbo.common.URL: int getParameter(java.lang.String,int)>("retry.period", 5000);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
virtualinvoke v.<org.apache.dubbo.common.timer.HashedWheelTimer: org.apache.dubbo.common.timer.Timeout newTimeout(org.apache.dubbo.common.timer.TimerTask,long,java.util.concurrent.TimeUnit)>(v, v, v);
label:
return;
catch java.lang.Exception from label to label with label;
}
private void doReExport(org.apache.dubbo.rpc.Invoker, org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper, org.apache.dubbo.common.URL, org.apache.dubbo.common.URL, org.apache.dubbo.common.URL)
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.Invoker v;
org.apache.dubbo.common.URL v, v, v, v;
java.lang.String v, v;
boolean v;
org.apache.dubbo.rpc.model.ProviderModel$RegisterStatedURL v;
org.apache.dubbo.common.logger.Logger v, v;
org.apache.dubbo.registry.support.SkipFailbackWrapperException v, v;
java.lang.Exception v, v;
org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper v;
org.apache.dubbo.registry.Registry v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.Invoker;
v := @parameter: org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: org.apache.dubbo.common.URL;
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL getProviderUrl(org.apache.dubbo.rpc.Invoker)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.URL: boolean getParameter(java.lang.String,boolean)>("register", 1);
if v == 0 goto label;
label:
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.Registry getRegistry(org.apache.dubbo.rpc.Invoker)>(v);
label:
goto label;
label:
v := @caughtexception;
v = new org.apache.dubbo.registry.support.SkipFailbackWrapperException;
specialinvoke v.<org.apache.dubbo.registry.support.SkipFailbackWrapperException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = <org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.logger.Logger LOGGER>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.dubbo.common.URL)>(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[])>("Try to unregister old url: \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void info(java.lang.String)>(v);
interfaceinvoke v.<org.apache.dubbo.registry.Registry: void reExportUnregister(org.apache.dubbo.common.URL)>(v);
v = <org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.logger.Logger LOGGER>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.dubbo.common.URL)>(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[])>("Try to register new url: \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void info(java.lang.String)>(v);
interfaceinvoke v.<org.apache.dubbo.registry.Registry: void reExportRegister(org.apache.dubbo.common.URL)>(v);
label:
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.model.ProviderModel$RegisterStatedURL getStatedUrl(org.apache.dubbo.common.URL,org.apache.dubbo.common.URL)>(v, v);
virtualinvoke v.<org.apache.dubbo.rpc.model.ProviderModel$RegisterStatedURL: void setProviderUrl(org.apache.dubbo.common.URL)>(v);
virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$ExporterChangeableWrapper: void setRegisterUrl(org.apache.dubbo.common.URL)>(v);
label:
goto label;
label:
v := @caughtexception;
v = new org.apache.dubbo.registry.support.SkipFailbackWrapperException;
specialinvoke v.<org.apache.dubbo.registry.support.SkipFailbackWrapperException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.lang.Exception from label to label with label;
catch java.lang.Exception from label to label with label;
}
private org.apache.dubbo.rpc.model.ProviderModel$RegisterStatedURL getStatedUrl(org.apache.dubbo.common.URL, org.apache.dubbo.common.URL)
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.util.function.Predicate v;
java.util.function.Supplier v;
org.apache.dubbo.rpc.model.ServiceRepository v;
java.util.List v;
org.apache.dubbo.common.URL v, v;
java.util.stream.Stream v, v;
org.apache.dubbo.rpc.model.ProviderModel v;
java.util.Optional v;
java.lang.Object v;
java.lang.String v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: org.apache.dubbo.common.URL;
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);
v = virtualinvoke v.<org.apache.dubbo.rpc.model.ProviderModel: java.util.List getStatedUrl()>();
v = interfaceinvoke v.<java.util.List: java.util.stream.Stream stream()>();
v = staticinvoke <org.apache.dubbo.registry.integration.RegistryProtocol$lambda_getStatedUrl_4__539: java.util.function.Predicate bootstrap$(org.apache.dubbo.common.URL,org.apache.dubbo.common.URL)>(v, v);
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream filter(java.util.function.Predicate)>(v);
v = interfaceinvoke v.<java.util.stream.Stream: java.util.Optional findFirst()>();
v = staticinvoke <org.apache.dubbo.registry.integration.RegistryProtocol$lambda_getStatedUrl_5__540: java.util.function.Supplier bootstrap$()>();
v = virtualinvoke v.<java.util.Optional: java.lang.Object orElseThrow(java.util.function.Supplier)>(v);
return v;
}
protected org.apache.dubbo.registry.Registry getRegistry(org.apache.dubbo.rpc.Invoker)
{
org.apache.dubbo.common.URL v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.Invoker v;
org.apache.dubbo.registry.Registry v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.Invoker;
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL getRegistryUrl(org.apache.dubbo.rpc.Invoker)>(v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.Registry getRegistry(org.apache.dubbo.common.URL)>(v);
return v;
}
protected org.apache.dubbo.registry.Registry getRegistry(org.apache.dubbo.common.URL)
{
java.lang.Throwable v;
org.apache.dubbo.registry.RegistryFactory v;
org.apache.dubbo.common.URL v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.common.logger.Logger v;
java.lang.String v;
org.apache.dubbo.registry.Registry v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.common.URL;
label:
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.RegistryFactory registryFactory>;
v = interfaceinvoke v.<org.apache.dubbo.registry.RegistryFactory: org.apache.dubbo.registry.Registry getRegistry(org.apache.dubbo.common.URL)>(v);
label:
return v;
label:
v := @caughtexception;
v = <org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.logger.Logger LOGGER>;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
catch java.lang.Throwable from label to label with label;
}
protected org.apache.dubbo.common.URL getRegistryUrl(org.apache.dubbo.rpc.Invoker)
{
org.apache.dubbo.common.URL v;
org.apache.dubbo.rpc.Invoker v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.Invoker;
v = interfaceinvoke v.<org.apache.dubbo.rpc.Invoker: org.apache.dubbo.common.URL getUrl()>();
return v;
}
protected org.apache.dubbo.common.URL getRegistryUrl(org.apache.dubbo.common.URL)
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.common.URL v, v, v;
java.lang.String v, v, v;
boolean v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.common.URL;
v = "service-discovery-registry";
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getProtocol()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
return v;
label:
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getProtocol()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL addParameter(java.lang.String,java.lang.String)>("registry", v);
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL setProtocol(java.lang.String)>("service-discovery-registry");
return v;
}
private org.apache.dubbo.common.URL getUrlToRegistry(org.apache.dubbo.common.URL, org.apache.dubbo.common.URL)
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.lang.String[] v, v, v, v, v, v, v;
org.apache.dubbo.common.URL v, v, v, v, v, v;
java.lang.String v, v, v;
boolean v, v, v;
java.util.regex.Pattern v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: org.apache.dubbo.common.URL;
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL removeUselessParameters(org.apache.dubbo.common.URL)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.URL: boolean getParameter(java.lang.String,boolean)>("simplified", 0);
if v != 0 goto label;
v = staticinvoke <org.apache.dubbo.registry.integration.RegistryProtocol: java.lang.String[] getHiddenKeys(org.apache.dubbo.common.URL)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL removeParameters(java.lang.String[])>(v);
v = newarray (java.lang.String)[9];
v[0] = "monitor";
v[1] = "bind.ip";
v[2] = "bind.port";
v[3] = "qos.enable";
v[4] = "qos.host";
v[5] = "qos.port";
v[6] = "qos.accept.foreign.ip";
v[7] = "validation";
v[8] = "interfaces";
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL removeParameters(java.lang.String[])>(v);
return v;
label:
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getParameter(java.lang.String,java.lang.String)>("extra-keys", "");
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getPath()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getParameter(java.lang.String)>("interface");
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isNotEmpty(java.lang.String)>(v);
if v == 0 goto label;
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,");
label:
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[])>("\u0001interface");
label:
v = <org.apache.dubbo.registry.integration.RegistryProtocol: java.lang.String[] DEFAULT_REGISTER_PROVIDER_KEYS>;
v = <org.apache.dubbo.common.constants.CommonConstants: java.util.regex.Pattern COMMA_SPLIT_PATTERN>;
v = virtualinvoke v.<java.util.regex.Pattern: java.lang.String[] split(java.lang.CharSequence)>(v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.lang.String[] getParamsToRegistry(java.lang.String[],java.lang.String[])>(v, v);
v = (java.lang.String[]) null;
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String[] getParameter(java.lang.String,java.lang.String[])>("methods", v);
v = staticinvoke <org.apache.dubbo.common.URL: org.apache.dubbo.common.URL valueOf(org.apache.dubbo.common.URL,java.lang.String[],java.lang.String[])>(v, v, v);
return v;
}
private org.apache.dubbo.common.URL removeUselessParameters(org.apache.dubbo.common.URL)
{
org.apache.dubbo.common.URL v, v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.lang.String[] v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.common.URL;
v = newarray (java.lang.String)[2];
v[0] = "onconnect";
v[1] = "ondisconnect";
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL removeParameters(java.lang.String[])>(v);
return v;
}
private org.apache.dubbo.common.URL getSubscribedOverrideUrl(org.apache.dubbo.common.URL)
{
org.apache.dubbo.common.URL v, v, v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.lang.String[] v;
java.lang.String v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.common.URL;
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL setProtocol(java.lang.String)>("provider");
v = newarray (java.lang.String)[4];
v[0] = "category";
v[1] = "configurators";
v[2] = "check";
v = staticinvoke <java.lang.String: java.lang.String valueOf(boolean)>(0);
v[3] = v;
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL addParameters(java.lang.String[])>(v);
return v;
}
private org.apache.dubbo.common.URL getProviderUrl(org.apache.dubbo.rpc.Invoker)
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.Invoker v;
java.lang.IllegalArgumentException v;
org.apache.dubbo.common.URL v, v, v;
int v;
java.lang.String v, v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.Invoker;
v = interfaceinvoke v.<org.apache.dubbo.rpc.Invoker: org.apache.dubbo.common.URL getUrl()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getParameterAndDecoded(java.lang.String)>("export");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v != 0 goto label;
label:
v = new java.lang.IllegalArgumentException;
v = interfaceinvoke v.<org.apache.dubbo.rpc.Invoker: org.apache.dubbo.common.URL getUrl()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.dubbo.common.URL)>(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[])>("The registry export url is null! registry: \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = staticinvoke <org.apache.dubbo.common.URL: org.apache.dubbo.common.URL valueOf(java.lang.String)>(v);
return v;
}
private java.lang.String getCacheKey(org.apache.dubbo.rpc.Invoker)
{
org.apache.dubbo.common.URL v, v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.lang.String[] v;
java.lang.String v;
org.apache.dubbo.rpc.Invoker v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.Invoker;
v = specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL getProviderUrl(org.apache.dubbo.rpc.Invoker)>(v);
v = newarray (java.lang.String)[2];
v[0] = "dynamic";
v[1] = "enabled";
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL removeParameters(java.lang.String[])>(v);
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String toFullString()>();
return v;
}
public org.apache.dubbo.rpc.Invoker refer(java.lang.Class, org.apache.dubbo.common.URL) throws org.apache.dubbo.rpc.RpcException
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.ProxyFactory v;
java.lang.String[] v;
org.apache.dubbo.rpc.Invoker v, v, v;
org.apache.dubbo.common.URL v, v;
java.util.Map v;
int v, v;
java.lang.String v, v;
boolean v, v;
org.apache.dubbo.rpc.cluster.Cluster v, v;
java.lang.Class v, v;
java.lang.Object v, v;
java.util.regex.Pattern v;
org.apache.dubbo.registry.Registry v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: java.lang.Class;
v := @parameter: org.apache.dubbo.common.URL;
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL getRegistryUrl(org.apache.dubbo.common.URL)>(v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.Registry getRegistry(org.apache.dubbo.common.URL)>(v);
v = class "Lorg/apache/dubbo/registry/RegistryService;";
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: 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);
return v;
label:
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getParameterAndDecoded(java.lang.String)>("refer");
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: java.util.Map parseQueryString(java.lang.String)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("group");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = <org.apache.dubbo.common.constants.CommonConstants: java.util.regex.Pattern COMMA_SPLIT_PATTERN>;
v = virtualinvoke v.<java.util.regex.Pattern: java.lang.String[] split(java.lang.CharSequence)>(v);
v = lengthof v;
if v > 1 goto label;
v = "*";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
v = staticinvoke <org.apache.dubbo.rpc.cluster.Cluster: org.apache.dubbo.rpc.cluster.Cluster getCluster(java.lang.String)>("mergeable");
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.Invoker doRefer(org.apache.dubbo.rpc.cluster.Cluster,org.apache.dubbo.registry.Registry,java.lang.Class,org.apache.dubbo.common.URL,java.util.Map)>(v, v, v, v, v);
return v;
label:
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("cluster");
v = staticinvoke <org.apache.dubbo.rpc.cluster.Cluster: org.apache.dubbo.rpc.cluster.Cluster getCluster(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.Invoker doRefer(org.apache.dubbo.rpc.cluster.Cluster,org.apache.dubbo.registry.Registry,java.lang.Class,org.apache.dubbo.common.URL,java.util.Map)>(v, v, v, v, v);
return v;
}
protected org.apache.dubbo.rpc.Invoker doRefer(org.apache.dubbo.rpc.cluster.Cluster, org.apache.dubbo.registry.Registry, java.lang.Class, org.apache.dubbo.common.URL, java.util.Map)
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.Invoker v;
org.apache.dubbo.rpc.cluster.Cluster v;
org.apache.dubbo.common.URL v, v;
org.apache.dubbo.rpc.cluster.ClusterInvoker v;
java.util.Map v;
java.lang.Class v;
java.lang.Object v;
java.lang.String v;
org.apache.dubbo.registry.Registry v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.cluster.Cluster;
v := @parameter: org.apache.dubbo.registry.Registry;
v := @parameter: java.lang.Class;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: java.util.Map;
v = new org.apache.dubbo.common.URL;
v = interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>("register.ip");
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
specialinvoke v.<org.apache.dubbo.common.URL: void <init>(java.lang.String,java.lang.String,int,java.lang.String,java.util.Map)>("consumer", v, 0, v, v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.cluster.ClusterInvoker getMigrationInvoker(org.apache.dubbo.registry.integration.RegistryProtocol,org.apache.dubbo.rpc.cluster.Cluster,org.apache.dubbo.registry.Registry,java.lang.Class,org.apache.dubbo.common.URL,org.apache.dubbo.common.URL)>(v, v, v, v, v, v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.Invoker interceptInvoker(org.apache.dubbo.rpc.cluster.ClusterInvoker,org.apache.dubbo.common.URL,org.apache.dubbo.common.URL)>(v, v, v);
return v;
}
protected org.apache.dubbo.rpc.cluster.ClusterInvoker getMigrationInvoker(org.apache.dubbo.registry.integration.RegistryProtocol, org.apache.dubbo.rpc.cluster.Cluster, org.apache.dubbo.registry.Registry, java.lang.Class, org.apache.dubbo.common.URL, org.apache.dubbo.common.URL)
{
org.apache.dubbo.registry.integration.RegistryProtocol v, v;
org.apache.dubbo.rpc.cluster.Cluster v;
org.apache.dubbo.common.URL v, v;
java.lang.Class v;
org.apache.dubbo.registry.client.migration.ServiceDiscoveryMigrationInvoker v;
org.apache.dubbo.registry.Registry v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.cluster.Cluster;
v := @parameter: org.apache.dubbo.registry.Registry;
v := @parameter: java.lang.Class;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: org.apache.dubbo.common.URL;
v = new org.apache.dubbo.registry.client.migration.ServiceDiscoveryMigrationInvoker;
specialinvoke v.<org.apache.dubbo.registry.client.migration.ServiceDiscoveryMigrationInvoker: void <init>(org.apache.dubbo.registry.integration.RegistryProtocol,org.apache.dubbo.rpc.cluster.Cluster,org.apache.dubbo.registry.Registry,java.lang.Class,org.apache.dubbo.common.URL,org.apache.dubbo.common.URL)>(v, v, v, v, v, v);
return v;
}
protected org.apache.dubbo.rpc.Invoker interceptInvoker(org.apache.dubbo.rpc.cluster.ClusterInvoker, org.apache.dubbo.common.URL, org.apache.dubbo.common.URL)
{
java.util.Iterator v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.util.List v;
org.apache.dubbo.common.URL v, v;
org.apache.dubbo.rpc.cluster.ClusterInvoker v;
java.lang.Object v;
boolean v, v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.cluster.ClusterInvoker;
v := @parameter: org.apache.dubbo.common.URL;
v := @parameter: org.apache.dubbo.common.URL;
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.List findRegistryProtocolListeners(org.apache.dubbo.common.URL)>(v);
v = staticinvoke <org.apache.dubbo.common.utils.CollectionUtils: boolean isEmpty(java.util.Collection)>(v);
if v == 0 goto label;
return v;
label:
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
interfaceinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocolListener: void onRefer(org.apache.dubbo.registry.integration.RegistryProtocol,org.apache.dubbo.rpc.cluster.ClusterInvoker,org.apache.dubbo.common.URL)>(v, v, v);
goto label;
label:
return v;
}
public org.apache.dubbo.rpc.cluster.ClusterInvoker getServiceDiscoveryInvoker(org.apache.dubbo.rpc.cluster.Cluster, org.apache.dubbo.registry.Registry, java.lang.Class, org.apache.dubbo.common.URL)
{
org.apache.dubbo.common.URL v;
org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory v;
org.apache.dubbo.rpc.cluster.ClusterInvoker v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.lang.Class v;
org.apache.dubbo.rpc.cluster.Cluster v;
org.apache.dubbo.registry.Registry v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.cluster.Cluster;
v := @parameter: org.apache.dubbo.registry.Registry;
v := @parameter: java.lang.Class;
v := @parameter: org.apache.dubbo.common.URL;
v = new org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory;
specialinvoke v.<org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory: void <init>(java.lang.Class,org.apache.dubbo.common.URL)>(v, v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.cluster.ClusterInvoker doCreateInvoker(org.apache.dubbo.registry.integration.DynamicDirectory,org.apache.dubbo.rpc.cluster.Cluster,org.apache.dubbo.registry.Registry,java.lang.Class)>(v, v, v, v);
return v;
}
public org.apache.dubbo.rpc.cluster.ClusterInvoker getInvoker(org.apache.dubbo.rpc.cluster.Cluster, org.apache.dubbo.registry.Registry, java.lang.Class, org.apache.dubbo.common.URL)
{
org.apache.dubbo.common.URL v;
org.apache.dubbo.rpc.cluster.ClusterInvoker v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.registry.integration.RegistryDirectory v;
java.lang.Class v;
org.apache.dubbo.rpc.cluster.Cluster v;
org.apache.dubbo.registry.Registry v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.cluster.Cluster;
v := @parameter: org.apache.dubbo.registry.Registry;
v := @parameter: java.lang.Class;
v := @parameter: org.apache.dubbo.common.URL;
v = new org.apache.dubbo.registry.integration.RegistryDirectory;
specialinvoke v.<org.apache.dubbo.registry.integration.RegistryDirectory: void <init>(java.lang.Class,org.apache.dubbo.common.URL)>(v, v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.cluster.ClusterInvoker doCreateInvoker(org.apache.dubbo.registry.integration.DynamicDirectory,org.apache.dubbo.rpc.cluster.Cluster,org.apache.dubbo.registry.Registry,java.lang.Class)>(v, v, v, v);
return v;
}
protected org.apache.dubbo.rpc.cluster.ClusterInvoker doCreateInvoker(org.apache.dubbo.registry.integration.DynamicDirectory, org.apache.dubbo.rpc.cluster.Cluster, org.apache.dubbo.registry.Registry, java.lang.Class)
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.util.HashMap v;
org.apache.dubbo.rpc.Invoker v;
org.apache.dubbo.rpc.Protocol v;
org.apache.dubbo.common.URL v, v, v, v;
java.util.Map v;
org.apache.dubbo.registry.integration.DynamicDirectory v;
java.lang.String v;
boolean v;
org.apache.dubbo.rpc.cluster.Cluster v;
java.lang.Class v;
java.lang.Object v;
org.apache.dubbo.registry.Registry v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.registry.integration.DynamicDirectory;
v := @parameter: org.apache.dubbo.rpc.cluster.Cluster;
v := @parameter: org.apache.dubbo.registry.Registry;
v := @parameter: java.lang.Class;
virtualinvoke v.<org.apache.dubbo.registry.integration.DynamicDirectory: void setRegistry(org.apache.dubbo.registry.Registry)>(v);
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.Protocol protocol>;
virtualinvoke v.<org.apache.dubbo.registry.integration.DynamicDirectory: void setProtocol(org.apache.dubbo.rpc.Protocol)>(v);
v = new java.util.HashMap;
v = virtualinvoke v.<org.apache.dubbo.registry.integration.DynamicDirectory: org.apache.dubbo.common.URL getConsumerUrl()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.util.Map getParameters()>();
specialinvoke v.<java.util.HashMap: void <init>(java.util.Map)>(v);
v = new org.apache.dubbo.common.URL;
v = interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>("register.ip");
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
specialinvoke v.<org.apache.dubbo.common.URL: void <init>(java.lang.String,java.lang.String,int,java.lang.String,java.util.Map)>("consumer", v, 0, v, v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.DynamicDirectory: boolean isShouldRegister()>();
if v == 0 goto label;
virtualinvoke v.<org.apache.dubbo.registry.integration.DynamicDirectory: void setRegisteredConsumerUrl(org.apache.dubbo.common.URL)>(v);
v = virtualinvoke v.<org.apache.dubbo.registry.integration.DynamicDirectory: org.apache.dubbo.common.URL getRegisteredConsumerUrl()>();
interfaceinvoke v.<org.apache.dubbo.registry.Registry: void register(org.apache.dubbo.common.URL)>(v);
label:
virtualinvoke v.<org.apache.dubbo.registry.integration.DynamicDirectory: void buildRouterChain(org.apache.dubbo.common.URL)>(v);
v = staticinvoke <org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.URL toSubscribeUrl(org.apache.dubbo.common.URL)>(v);
virtualinvoke v.<org.apache.dubbo.registry.integration.DynamicDirectory: void subscribe(org.apache.dubbo.common.URL)>(v);
v = interfaceinvoke v.<org.apache.dubbo.rpc.cluster.Cluster: org.apache.dubbo.rpc.Invoker join(org.apache.dubbo.rpc.cluster.Directory)>(v);
return v;
}
public void reRefer(org.apache.dubbo.rpc.cluster.ClusterInvoker, org.apache.dubbo.common.URL)
{
org.apache.dubbo.common.URL v;
org.apache.dubbo.rpc.cluster.ClusterInvoker v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.common.logger.Logger v;
java.lang.Class v;
java.lang.String v;
boolean v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.rpc.cluster.ClusterInvoker;
v := @parameter: org.apache.dubbo.common.URL;
v = v instanceof org.apache.dubbo.rpc.cluster.support.migration.MigrationClusterInvoker;
if v != 0 goto label;
v = <org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.logger.Logger LOGGER>;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(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[])>("Only invoker type of MigrationClusterInvoker supports reRefer, current invoker is \u0001");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void error(java.lang.String)>(v);
return;
label:
interfaceinvoke v.<org.apache.dubbo.rpc.cluster.support.migration.MigrationClusterInvoker: void reRefer(org.apache.dubbo.common.URL)>(v);
return;
}
public static org.apache.dubbo.common.URL toSubscribeUrl(org.apache.dubbo.common.URL)
{
org.apache.dubbo.common.URL v, v;
v := @parameter: org.apache.dubbo.common.URL;
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL addParameter(java.lang.String,java.lang.String)>("category", "providers,configurators,routers");
return v;
}
protected java.util.List findRegistryProtocolListeners(org.apache.dubbo.common.URL)
{
java.util.List v;
org.apache.dubbo.common.URL v;
org.apache.dubbo.common.extension.ExtensionLoader v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: org.apache.dubbo.common.URL;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/registry/integration/RegistryProtocolListener;");
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.List getActivateExtension(org.apache.dubbo.common.URL,java.lang.String)>(v, "registry.protocol.listener");
return v;
}
public java.lang.String[] getParamsToRegistry(java.lang.String[], java.lang.String[])
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.lang.String[] v, v, v;
int v, v, v, v, v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v := @parameter: java.lang.String[];
v := @parameter: java.lang.String[];
v = lengthof v;
v = lengthof v;
v = v + v;
v = newarray (java.lang.String)[v];
v = lengthof v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, 0, v, 0, v);
v = lengthof v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, 0, v, v, v);
return v;
}
public void destroy()
{
org.apache.dubbo.common.extension.ExtensionLoader v, v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.util.ArrayList v;
java.util.concurrent.ConcurrentMap v, v;
org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener v;
java.lang.String v, v;
boolean v, v, v;
java.util.Iterator v, v;
java.util.Collection v;
java.util.List v;
java.lang.Object v, v, v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/registry/integration/RegistryProtocolListener;");
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.util.List getLoadedExtensionInstances()>();
v = staticinvoke <org.apache.dubbo.common.utils.CollectionUtils: boolean isNotEmpty(java.util.Collection)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
interfaceinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocolListener: void onDestroy()>();
goto label;
label:
v = new java.util.ArrayList;
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.concurrent.ConcurrentMap bounds>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Collection values()>();
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
interfaceinvoke v.<org.apache.dubbo.rpc.Exporter: void unexport()>();
goto label;
label:
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.concurrent.ConcurrentMap bounds>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: void clear()>();
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/rpc/cluster/governance/GovernanceRuleRepository;");
v = virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getDefaultExtension()>();
v = staticinvoke <org.apache.dubbo.rpc.model.ApplicationModel: java.lang.String getApplication()>();
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.configurators");
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener providerConfigurationListener>;
interfaceinvoke v.<org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository: void removeListener(java.lang.String,org.apache.dubbo.common.config.configcenter.ConfigurationListener)>(v, v);
return;
}
public java.util.List getServers()
{
java.util.List v;
org.apache.dubbo.registry.integration.RegistryProtocol v;
org.apache.dubbo.rpc.Protocol v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
v = v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.rpc.Protocol protocol>;
v = interfaceinvoke v.<org.apache.dubbo.rpc.Protocol: java.util.List getServers()>();
return v;
}
private static org.apache.dubbo.common.URL getConfiguredInvokerUrl(java.util.List, org.apache.dubbo.common.URL)
{
java.util.List v;
org.apache.dubbo.common.URL v;
java.util.Iterator v;
int v;
java.lang.Object v;
boolean v;
v := @parameter: java.util.List;
v := @parameter: org.apache.dubbo.common.URL;
if v == null goto label;
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= 0 goto label;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<org.apache.dubbo.rpc.cluster.Configurator: org.apache.dubbo.common.URL configure(org.apache.dubbo.common.URL)>(v);
goto label;
label:
return v;
}
public void <init>()
{
org.apache.dubbo.registry.integration.RegistryProtocol v;
java.util.concurrent.ConcurrentHashMap v, v, v, v;
org.apache.dubbo.common.timer.HashedWheelTimer v;
org.apache.dubbo.common.utils.NamedThreadFactory v;
java.util.concurrent.TimeUnit v;
org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener v;
v := @this: org.apache.dubbo.registry.integration.RegistryProtocol;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.Map overrideListeners> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.Map serviceConfigurationListeners> = v;
v = new org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener;
specialinvoke v.<org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener: void <init>(org.apache.dubbo.registry.integration.RegistryProtocol)>(v);
v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.integration.RegistryProtocol$ProviderConfigurationListener providerConfigurationListener> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.concurrent.ConcurrentMap bounds> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.dubbo.registry.integration.RegistryProtocol: java.util.concurrent.ConcurrentMap reExportFailedTasks> = v;
v = new org.apache.dubbo.common.timer.HashedWheelTimer;
v = new org.apache.dubbo.common.utils.NamedThreadFactory;
specialinvoke v.<org.apache.dubbo.common.utils.NamedThreadFactory: void <init>(java.lang.String,boolean)>("DubboReexportTimer", 1);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
specialinvoke v.<org.apache.dubbo.common.timer.HashedWheelTimer: void <init>(java.util.concurrent.ThreadFactory,long,java.util.concurrent.TimeUnit,int)>(v, 5000L, v, 128);
v.<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.timer.HashedWheelTimer retryTimer> = v;
<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.integration.RegistryProtocol INSTANCE> = v;
return;
}
public static org.apache.dubbo.registry.integration.RegistryProtocol getRegistryProtocol()
{
org.apache.dubbo.common.extension.ExtensionLoader v;
org.apache.dubbo.registry.integration.RegistryProtocol v, v;
v = <org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.integration.RegistryProtocol INSTANCE>;
if v != null goto label;
v = staticinvoke <org.apache.dubbo.common.extension.ExtensionLoader: org.apache.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class)>(class "Lorg/apache/dubbo/rpc/Protocol;");
virtualinvoke v.<org.apache.dubbo.common.extension.ExtensionLoader: java.lang.Object getExtension(java.lang.String)>("registry");
label:
v = <org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.registry.integration.RegistryProtocol INSTANCE>;
return v;
}
static void <clinit>()
{
java.lang.String[] v, v;
org.apache.dubbo.common.logger.Logger v;
v = newarray (java.lang.String)[19];
v[0] = "application";
v[1] = "codec";
v[2] = "exchanger";
v[3] = "serialization";
v[4] = "cluster";
v[5] = "connections";
v[6] = "deprecated";
v[7] = "group";
v[8] = "loadbalance";
v[9] = "mock";
v[10] = "path";
v[11] = "timeout";
v[12] = "token";
v[13] = "version";
v[14] = "warmup";
v[15] = "weight";
v[16] = "timestamp";
v[17] = "dubbo";
v[18] = "release";
<org.apache.dubbo.registry.integration.RegistryProtocol: java.lang.String[] DEFAULT_REGISTER_PROVIDER_KEYS> = v;
v = newarray (java.lang.String)[5];
v[0] = "application";
v[1] = "version";
v[2] = "group";
v[3] = "dubbo";
v[4] = "release";
<org.apache.dubbo.registry.integration.RegistryProtocol: java.lang.String[] DEFAULT_REGISTER_CONSUMER_KEYS> = v;
v = staticinvoke <org.apache.dubbo.common.logger.LoggerFactory: org.apache.dubbo.common.logger.Logger getLogger(java.lang.Class)>(class "Lorg/apache/dubbo/registry/integration/RegistryProtocol;");
<org.apache.dubbo.registry.integration.RegistryProtocol: org.apache.dubbo.common.logger.Logger LOGGER> = v;
return;
}
}