Class ConnectionRegistry
java.lang.Object
org.nustaq.kontraktor.remoting.base.ConnectionRegistry
public abstract class ConnectionRegistry
extends java.lang.Object
Created by moelrue on 5/7/15.
Manages mapping of remote refs and callbacks of a single connection. E.g. if an actor ref or callback or spore is sent to
a remote actor, during serialization ConnectionRegistry generates and maps the callback id's required
to later on route incoming messages from remote to the appropriate local instances
-
Field Summary
Fields Modifier and Type Field Description protected java.util.concurrent.atomic.AtomicLongactorIdCountprotected org.nustaq.serialization.FSTConfigurationconfstatic java.util.function.Supplier<com.fasterxml.jackson.databind.ObjectMapper>CreateDefaultObjectMapperprotected java.util.function.Consumer<Actor>disconnectHandlerprotected booleanisObsoleteprotected longlastRoutingClientPingstatic intMAX_BATCH_CALLSstatic java.lang.ObjectOUT_OF_ORDER_SEQprotected java.util.concurrent.ConcurrentHashMap<java.lang.Long,java.lang.Object>publishedActorMapprotected java.util.concurrent.ConcurrentHashMap<java.lang.Object,java.lang.Long>publishedActorMappingReverseprotected java.util.Map<java.lang.String,RateLimitEntry>rateLimitsprotected java.util.concurrent.ConcurrentHashMap<java.lang.Long,Actor>remoteActorMapprotected java.util.concurrent.ConcurrentLinkedQueue<Actor>remoteActorsprotected java.util.function.BiFunction<Actor,java.lang.String,java.lang.Boolean>remoteCallInterceptorstatic java.util.function.BiFunctionremoteCallMapperprotected RemoteSchedulerschedulerprotected booleanterminatedjava.util.concurrent.atomic.AtomicReference<java.lang.Object>userData -
Constructor Summary
Constructors Constructor Description ConnectionRegistry(Coding code)ConnectionRegistry(org.nustaq.serialization.FSTConfiguration conf, Coding coding) -
Method Summary
Modifier and Type Method Description voidcleanUp()cleanup after (virtual) connection closevoidclose(Actor closedOne)IPromisecloseNetwork()protected voidcloseRef(CallEntry ce, ObjectSocket chan)protected voidconfigureSerialization(Coding code)voiddisconnect()called from ObjectSocket in case of disconnect (decoding errors or network issues)voidforwardRemoteMessage(RemoteCallEntry rce)org.nustaq.serialization.FSTConfigurationgetConf()java.lang.StringgetConnectionIdentifier()java.util.function.Consumer<Actor>getDisconnectHandler()ActorgetFacadeActor()abstract ActorgetFacadeProxy()longgetLastRoutingClientPing()intgetOpenRemoteMappingsCount()ActorgetPublishedActor(long id)long[]getPublishedActorIds()CallbackgetPublishedCallback(long id)java.util.concurrent.ConcurrentHashMap<java.lang.Long,Actor>getRemoteActorMap()java.util.concurrent.ConcurrentLinkedQueue<Actor>getRemoteActors()intgetRemoteActorSize()java.util.function.BiFunction<Actor,java.lang.String,java.lang.Boolean>getRemoteCallInterceptor()long[]getRemotedActorIds()longgetRemoteId(Actor act)RemoteSchedulergetScheduler()ActorServergetServer()ObjectSocketgetSocketRef()abstract java.util.concurrent.atomic.AtomicReference<ObjectSocket>getWriteObjectSocket()voidinFacadeThread(java.lang.Runnable toRun)static booleanIsJsonConfiguration(org.nustaq.serialization.FSTConfiguration conf)booleanisJsonSerialized()booleanisObsolete()booleanisTerminated()voidpingFromRoutingClient()booleanpollAndSend2Remote(java.util.concurrent.atomic.AtomicReference<ObjectSocket> chanHolder)poll remote actor proxies and send. return true if there was at least one messageprotected booleanprocessRemoteCallEntry(ObjectSocket objSocket, RemoteCallEntry response, java.util.List<IPromise> createdFutures, java.lang.Object authContext)longpublishActor(Actor act)voidreceiveCBResult(ObjectSocket chan, long id, java.lang.Object result, java.lang.Object error)booleanreceiveObject(ObjectSocket responseChannel, ObjectSink receiver, java.lang.Object response, java.util.List<IPromise> createdFutures, java.lang.Object authContext)process a remote call entry or an array of remote call entries.static voidregisterDefaultClassMappings(org.nustaq.serialization.FSTConfiguration conf)longregisterPublishedCallback(Callback cb)ActorregisterRemoteActorRef(java.lang.Class actorClazz, long remoteId, java.lang.Object client)voidregisterRemoteRefDirect(Actor act)protected voidremoteRefStopped(Actor actor)warning: MThreadedvoidremovePublishedObject(long receiverKey)protected voidremoveRemoteActor(Actor act)voidsetClassLoader(java.lang.ClassLoader l)voidsetDisconnectHandler(java.util.function.Consumer<Actor> disconnectHandler)voidsetFacadeActor(Actor facadeActor)voidsetIsObsolete(boolean isObsolete)give the application a way to explecitely flag a connection as obsoletevoidsetServer(ActorServer server)voidsetTerminated(boolean terminated)voidstopRemoteRefs()voidunpublishActor(Actor act)remove currentmappings if present. protected voidwriteObject(ObjectSocket chan, RemoteCallEntry rce)
-
Field Details
-
OUT_OF_ORDER_SEQ
public static final java.lang.Object OUT_OF_ORDER_SEQ -
MAX_BATCH_CALLS
public static int MAX_BATCH_CALLS -
remoteCallMapper
public static java.util.function.BiFunction remoteCallMapper -
CreateDefaultObjectMapper
public static java.util.function.Supplier<com.fasterxml.jackson.databind.ObjectMapper> CreateDefaultObjectMapper -
userData
public java.util.concurrent.atomic.AtomicReference<java.lang.Object> userData -
lastRoutingClientPing
protected long lastRoutingClientPing -
conf
protected org.nustaq.serialization.FSTConfiguration conf -
scheduler
-
actorIdCount
protected java.util.concurrent.atomic.AtomicLong actorIdCount -
publishedActorMap
protected java.util.concurrent.ConcurrentHashMap<java.lang.Long,java.lang.Object> publishedActorMap -
publishedActorMappingReverse
protected java.util.concurrent.ConcurrentHashMap<java.lang.Object,java.lang.Long> publishedActorMappingReverse -
remoteActors
-
remoteActorMap
-
terminated
protected volatile boolean terminated -
disconnectHandler
-
isObsolete
protected boolean isObsolete -
rateLimits
-
remoteCallInterceptor
protected java.util.function.BiFunction<Actor,java.lang.String,java.lang.Boolean> remoteCallInterceptor
-
-
Constructor Details
-
Method Details
-
registerDefaultClassMappings
public static void registerDefaultClassMappings(org.nustaq.serialization.FSTConfiguration conf) -
IsJsonConfiguration
public static boolean IsJsonConfiguration(org.nustaq.serialization.FSTConfiguration conf) -
getRemoteCallInterceptor
public java.util.function.BiFunction<Actor,java.lang.String,java.lang.Boolean> getRemoteCallInterceptor() -
configureSerialization
-
getOpenRemoteMappingsCount
public int getOpenRemoteMappingsCount() -
getPublishedActor
-
getPublishedCallback
-
getScheduler
-
getRemoteActors
-
getRemoteActorMap
-
isTerminated
public boolean isTerminated() -
setTerminated
public void setTerminated(boolean terminated) -
publishActor
-
unpublishActor
remove currentmappings if present. return map containing removed mappings (for reconnection) - Parameters:
act-
-
registerPublishedCallback
-
removePublishedObject
public void removePublishedObject(long receiverKey) -
registerRemoteRefDirect
-
registerRemoteActorRef
public Actor registerRemoteActorRef(java.lang.Class actorClazz, long remoteId, java.lang.Object client) -
remoteRefStopped
warning: MThreaded- Parameters:
actor-
-
stopRemoteRefs
public void stopRemoteRefs() -
removeRemoteActor
-
receiveObject
public boolean receiveObject(ObjectSocket responseChannel, ObjectSink receiver, java.lang.Object response, java.util.List<IPromise> createdFutures, java.lang.Object authContext) throws java.lang.Exceptionprocess a remote call entry or an array of remote call entries.- Parameters:
responseChannel- - writer required to route callback messagesresponse-createdFutures- - can be null. Contains futures created by the submitted callsequenceauthContext-- Returns:
- Throws:
java.lang.Exception
-
processRemoteCallEntry
protected boolean processRemoteCallEntry(ObjectSocket objSocket, RemoteCallEntry response, java.util.List<IPromise> createdFutures, java.lang.Object authContext) throws java.lang.Exception- Throws:
java.lang.Exception
-
cleanUp
public void cleanUp()cleanup after (virtual) connection close -
disconnect
public void disconnect()called from ObjectSocket in case of disconnect (decoding errors or network issues) -
closeRef
- Throws:
java.io.IOException
-
writeObject
- Throws:
java.lang.Exception
-
inFacadeThread
public void inFacadeThread(java.lang.Runnable toRun) -
forwardRemoteMessage
-
receiveCBResult
public void receiveCBResult(ObjectSocket chan, long id, java.lang.Object result, java.lang.Object error) -
close
-
getConf
public org.nustaq.serialization.FSTConfiguration getConf() -
getFacadeProxy
-
setDisconnectHandler
-
getDisconnectHandler
-
setClassLoader
public void setClassLoader(java.lang.ClassLoader l) -
getRemoteId
-
pollAndSend2Remote
public boolean pollAndSend2Remote(java.util.concurrent.atomic.AtomicReference<ObjectSocket> chanHolder) throws java.lang.Exceptionpoll remote actor proxies and send. return true if there was at least one message- Parameters:
chanHolder-- Throws:
java.lang.Exception
-
getWriteObjectSocket
-
getSocketRef
-
isObsolete
public boolean isObsolete() -
setIsObsolete
public void setIsObsolete(boolean isObsolete)give the application a way to explecitely flag a connection as obsolete -
getRemoteActorSize
public int getRemoteActorSize() -
setFacadeActor
-
getFacadeActor
-
setServer
-
getServer
-
closeNetwork
-
pingFromRoutingClient
public void pingFromRoutingClient() -
getLastRoutingClientPing
public long getLastRoutingClientPing() -
getRemotedActorIds
public long[] getRemotedActorIds() -
getPublishedActorIds
public long[] getPublishedActorIds() -
getConnectionIdentifier
public java.lang.String getConnectionIdentifier() -
isJsonSerialized
public boolean isJsonSerialized()
-