public class org.springframework.messaging.simp.user.MultiServerUserRegistry extends java.lang.Object implements org.springframework.messaging.simp.user.SimpUserRegistry, org.springframework.context.event.SmartApplicationListener
{
private final java.lang.String id;
private final org.springframework.messaging.simp.user.SimpUserRegistry localRegistry;
private final java.util.Map remoteRegistries;
private final boolean delegateApplicationEvents;
private final org.springframework.messaging.simp.user.MultiServerUserRegistry$SessionLookup sessionLookup;
public void <init>(org.springframework.messaging.simp.user.SimpUserRegistry)
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
java.util.concurrent.ConcurrentHashMap v;
org.springframework.messaging.simp.user.MultiServerUserRegistry$SessionLookup v;
org.springframework.messaging.simp.user.SimpUserRegistry v, v;
java.lang.String v;
boolean v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v := @parameter: org.springframework.messaging.simp.user.SimpUserRegistry;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: java.util.Map remoteRegistries> = v;
v = new org.springframework.messaging.simp.user.MultiServerUserRegistry$SessionLookup;
specialinvoke v.<org.springframework.messaging.simp.user.MultiServerUserRegistry$SessionLookup: void <init>(org.springframework.messaging.simp.user.MultiServerUserRegistry)>(v);
v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.MultiServerUserRegistry$SessionLookup sessionLookup> = v;
staticinvoke <org.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "\'localRegistry\' is required");
v = staticinvoke <org.springframework.messaging.simp.user.MultiServerUserRegistry: java.lang.String generateId()>();
v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: java.lang.String id> = v;
v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry> = v;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry>;
v = v instanceof org.springframework.context.event.SmartApplicationListener;
v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: boolean delegateApplicationEvents> = v;
return;
}
private static java.lang.String generateId()
{
java.net.InetAddress v;
java.lang.String v, v;
java.util.UUID v;
java.net.UnknownHostException v;
label:
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getLocalHost()>();
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
label:
goto label;
label:
v := @caughtexception;
v = "unknown";
label:
v = staticinvoke <java.util.UUID: java.util.UUID randomUUID()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.util.UUID)>(v, 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[])>("\u0001-\u0001");
return v;
catch java.net.UnknownHostException from label to label with label;
}
public int getOrder()
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
int v;
org.springframework.messaging.simp.user.SimpUserRegistry v;
boolean v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: boolean delegateApplicationEvents>;
if v == 0 goto label;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry>;
v = interfaceinvoke v.<org.springframework.context.event.SmartApplicationListener: int getOrder()>();
goto label;
label:
v = 2147483647;
label:
return v;
}
public boolean supportsEventType(java.lang.Class)
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
java.lang.Class v;
org.springframework.messaging.simp.user.SimpUserRegistry v;
boolean v, v, v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v := @parameter: java.lang.Class;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: boolean delegateApplicationEvents>;
if v == 0 goto label;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry>;
v = interfaceinvoke v.<org.springframework.context.event.SmartApplicationListener: boolean supportsEventType(java.lang.Class)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean supportsSourceType(java.lang.Class)
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
java.lang.Class v;
org.springframework.messaging.simp.user.SimpUserRegistry v;
boolean v, v, v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v := @parameter: java.lang.Class;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: boolean delegateApplicationEvents>;
if v == 0 goto label;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry>;
v = interfaceinvoke v.<org.springframework.context.event.SmartApplicationListener: boolean supportsSourceType(java.lang.Class)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void onApplicationEvent(org.springframework.context.ApplicationEvent)
{
org.springframework.context.ApplicationEvent v;
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
org.springframework.messaging.simp.user.SimpUserRegistry v;
boolean v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v := @parameter: org.springframework.context.ApplicationEvent;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: boolean delegateApplicationEvents>;
if v == 0 goto label;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry>;
interfaceinvoke v.<org.springframework.context.event.SmartApplicationListener: void onApplicationEvent(org.springframework.context.ApplicationEvent)>(v);
label:
return;
}
public org.springframework.messaging.simp.user.SimpUser getUser(java.lang.String)
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
java.util.Iterator v;
org.springframework.messaging.simp.user.SimpUser v;
java.util.Collection v;
org.springframework.messaging.simp.user.SimpUserRegistry v;
java.util.Map v, v;
java.lang.Object v, v;
java.lang.String v;
boolean v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v := @parameter: java.lang.String;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: java.util.Map remoteRegistries>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: 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 = virtualinvoke v.<org.springframework.messaging.simp.user.MultiServerUserRegistry$UserRegistrySnapshot: java.util.Map getUserMap()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
return v;
label:
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry>;
v = interfaceinvoke v.<org.springframework.messaging.simp.user.SimpUserRegistry: org.springframework.messaging.simp.user.SimpUser getUser(java.lang.String)>(v);
return v;
}
public java.util.Set getUsers()
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
java.util.Iterator v;
java.util.Collection v, v;
java.util.Set v;
org.springframework.messaging.simp.user.SimpUserRegistry v;
java.util.HashSet v;
java.util.Map v, v;
java.lang.Object v;
boolean v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: java.util.Map remoteRegistries>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: 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 = virtualinvoke v.<org.springframework.messaging.simp.user.MultiServerUserRegistry$UserRegistrySnapshot: java.util.Map getUserMap()>();
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
goto label;
label:
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry>;
v = interfaceinvoke v.<org.springframework.messaging.simp.user.SimpUserRegistry: java.util.Set getUsers()>();
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
return v;
}
public int getUserCount()
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
java.util.Iterator v;
java.util.Collection v;
org.springframework.messaging.simp.user.SimpUserRegistry v;
java.util.Map v, v;
int v, v, v, v;
java.lang.Object v;
boolean v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v = 0;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: java.util.Map remoteRegistries>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: 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 = virtualinvoke v.<org.springframework.messaging.simp.user.MultiServerUserRegistry$UserRegistrySnapshot: java.util.Map getUserMap()>();
v = interfaceinvoke v.<java.util.Map: int size()>();
v = v + v;
goto label;
label:
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry>;
v = interfaceinvoke v.<org.springframework.messaging.simp.user.SimpUserRegistry: int getUserCount()>();
v = v + v;
return v;
}
public java.util.Set findSubscriptions(org.springframework.messaging.simp.user.SimpSubscriptionMatcher)
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
java.util.Iterator v;
java.util.Collection v;
java.util.Set v, v;
org.springframework.messaging.simp.user.SimpUserRegistry v;
java.util.HashSet v;
org.springframework.messaging.simp.user.SimpSubscriptionMatcher v;
java.util.Map v;
java.lang.Object v;
boolean v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v := @parameter: org.springframework.messaging.simp.user.SimpSubscriptionMatcher;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: java.util.Map remoteRegistries>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: 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 = virtualinvoke v.<org.springframework.messaging.simp.user.MultiServerUserRegistry$UserRegistrySnapshot: java.util.Set findSubscriptions(org.springframework.messaging.simp.user.SimpSubscriptionMatcher)>(v);
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
goto label;
label:
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry>;
v = interfaceinvoke v.<org.springframework.messaging.simp.user.SimpUserRegistry: java.util.Set findSubscriptions(org.springframework.messaging.simp.user.SimpSubscriptionMatcher)>(v);
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
return v;
}
java.lang.Object getLocalRegistryDto()
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
org.springframework.messaging.simp.user.MultiServerUserRegistry$UserRegistrySnapshot v;
org.springframework.messaging.simp.user.SimpUserRegistry v;
java.lang.String v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v = new org.springframework.messaging.simp.user.MultiServerUserRegistry$UserRegistrySnapshot;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: java.lang.String id>;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry>;
specialinvoke v.<org.springframework.messaging.simp.user.MultiServerUserRegistry$UserRegistrySnapshot: void <init>(java.lang.String,org.springframework.messaging.simp.user.SimpUserRegistry)>(v, v);
return v;
}
void addRemoteRegistryDto(org.springframework.messaging.Message, org.springframework.messaging.converter.MessageConverter, long)
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
org.springframework.messaging.converter.MessageConverter v;
org.springframework.messaging.simp.user.MultiServerUserRegistry$SessionLookup v;
long v;
java.util.Map v;
java.lang.Object v;
org.springframework.messaging.Message v;
java.lang.String v, v, v;
boolean v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v := @parameter: org.springframework.messaging.Message;
v := @parameter: org.springframework.messaging.converter.MessageConverter;
v := @parameter: long;
v = interfaceinvoke v.<org.springframework.messaging.converter.MessageConverter: java.lang.Object fromMessage(org.springframework.messaging.Message,java.lang.Class)>(v, class "Lorg/springframework/messaging/simp/user/MultiServerUserRegistry$UserRegistrySnapshot;");
if v == null goto label;
v = virtualinvoke v.<org.springframework.messaging.simp.user.MultiServerUserRegistry$UserRegistrySnapshot: java.lang.String getId()>();
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: java.lang.String id>;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.MultiServerUserRegistry$SessionLookup sessionLookup>;
virtualinvoke v.<org.springframework.messaging.simp.user.MultiServerUserRegistry$UserRegistrySnapshot: void init(long,org.springframework.messaging.simp.user.MultiServerUserRegistry$SessionLookup)>(v, v);
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: java.util.Map remoteRegistries>;
v = virtualinvoke v.<org.springframework.messaging.simp.user.MultiServerUserRegistry$UserRegistrySnapshot: java.lang.String getId()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return;
}
void purgeExpiredRegistries()
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
java.util.Iterator v;
java.util.Set v;
long v;
java.util.Map v;
java.lang.Object v, v;
boolean v, v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: java.util.Map remoteRegistries>;
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
v = interfaceinvoke v.<java.util.Set: 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.<java.util.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<org.springframework.messaging.simp.user.MultiServerUserRegistry$UserRegistrySnapshot: boolean isExpired(long)>(v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
return;
}
public java.lang.String toString()
{
org.springframework.messaging.simp.user.MultiServerUserRegistry v;
java.util.Map v;
org.springframework.messaging.simp.user.SimpUserRegistry v;
java.lang.String v;
v := @this: org.springframework.messaging.simp.user.MultiServerUserRegistry;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: org.springframework.messaging.simp.user.SimpUserRegistry localRegistry>;
v = v.<org.springframework.messaging.simp.user.MultiServerUserRegistry: java.util.Map remoteRegistries>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.springframework.messaging.simp.user.SimpUserRegistry,java.util.Map)>(v, 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[])>("local=[\u], remote=\u0001");
return v;
}
}