Package com.yahoo.messagebus.network.rpc
Class RPCNetwork
java.lang.Object
com.yahoo.messagebus.network.rpc.RPCNetwork
- All Implemented Interfaces:
com.yahoo.jrt.MethodHandler,Network
An RPC implementation of the Network interface.
- Author:
- havardpe
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanallocServiceAddress(RoutingNode recipient) Resolves the service address of the recipient referenced by the given routing node.voidattach(NetworkOwner owner) Attach the network layer to the given owner.booleandestroy()Sets the destroyed flag to true.protected voidThe network uses a cache of RPC targets (seeRPCTargetPool) that allows it to save time by reusing open connections.voidfreeServiceAddress(RoutingNode recipient) Frees the service address from the given routing node.Returns a string that represents the connection specs of this network.Returns the identity of this network.com.yahoo.jrt.slobrok.api.IMirrorReturns a reference to a name server mirror.intgetPort()Returns the port number this network listens to.getSendAdapter(com.yahoo.component.Version version) Determines and returns the send adapter that is compatible with the given version.voidinvoke(com.yahoo.jrt.Request request) voidregisterSession(String session) Register a session name with the network layer.resolveServiceAddress(RoutingNode recipient, String serviceName) Resolves and assigns a service address for the given recipient using the given address.voidsend(Message msg, List<RoutingNode> recipients) Send a message to the given recipients.voidsetVersion(com.yahoo.component.Version version) voidshutdown()Shuts down the network.voidsync()Synchronize with internal threads.voidunregisterSession(String session) Unregister a session name with the network layer.booleanwaitUntilReady(double seconds) Waits for at most the given number of seconds for all dependencies to become ready.
-
Constructor Details
-
RPCNetwork
Create an RPCNetwork. The servicePrefix is combined with session names to create service names. If the service prefix is 'a/b' and the session name is 'c', the resulting service name that identifies the session on the message bus will be 'a/b/c'- Parameters:
params- a complete set of parameters
-
-
Method Details
-
flushTargetPool
protected void flushTargetPool()The network uses a cache of RPC targets (seeRPCTargetPool) that allows it to save time by reusing open connections. It works by keeping a set of the most recently used targets open. Calling this method forces all unused connections to close immediately. -
waitUntilReady
public boolean waitUntilReady(double seconds) Description copied from interface:NetworkWaits for at most the given number of seconds for all dependencies to become ready.- Specified by:
waitUntilReadyin interfaceNetwork- Parameters:
seconds- the timeout- Returns:
- true if ready
-
allocServiceAddress
Description copied from interface:NetworkResolves the service address of the recipient referenced by the given routing node. If a recipient can not be resolved, this method tags the node with an error. If this method succeeds, you need to invokeNetwork.freeServiceAddress(RoutingNode)once you are done with the service address.- Specified by:
allocServiceAddressin interfaceNetwork- Parameters:
recipient- the node whose service address to allocate- Returns:
- true if a service address was allocated
-
freeServiceAddress
Description copied from interface:NetworkFrees the service address from the given routing node. This allows the network layer to track and close connections as required.- Specified by:
freeServiceAddressin interfaceNetwork- Parameters:
recipient- the node whose service address to free
-
attach
Description copied from interface:NetworkAttach the network layer to the given owner. -
registerSession
Description copied from interface:NetworkRegister a session name with the network layer. This will make the session visible to other nodes.- Specified by:
registerSessionin interfaceNetwork- Parameters:
session- the session name
-
unregisterSession
Description copied from interface:NetworkUnregister a session name with the network layer. This will make the session unavailable for other nodes.- Specified by:
unregisterSessionin interfaceNetwork- Parameters:
session- session name
-
sync
public void sync()Description copied from interface:NetworkSynchronize with internal threads. This method will handshake with all internal threads. This has the implicit effect of waiting for all active callbacks. Note that this method should never be invoked from a callback since that would make the thread wait for itself... forever. This method is typically used to untangle during session shutdown. -
shutdown
public void shutdown()Description copied from interface:NetworkShuts down the network. This is a blocking call that waits for all scheduled tasks to complete. -
getConnectionSpec
Description copied from interface:NetworkReturns a string that represents the connection specs of this network. It is in not a complete address since it know nothing of the sessions that run on it.- Specified by:
getConnectionSpecin interfaceNetwork
-
getMirror
public com.yahoo.jrt.slobrok.api.IMirror getMirror()Description copied from interface:NetworkReturns a reference to a name server mirror. -
invoke
public void invoke(com.yahoo.jrt.Request request) - Specified by:
invokein interfacecom.yahoo.jrt.MethodHandler
-
send
Description copied from interface:NetworkSend a message to the given recipients. ARoutingNodecontains all the necessary context for sending. -
destroy
public boolean destroy()Sets the destroyed flag to true. The very first time this method is called, it cleans up all its dependencies. Even if you retain a reference to this object, all of its content is allowed to be garbage collected.- Returns:
- true if content existed and was destroyed
-
setVersion
public void setVersion(com.yahoo.component.Version version) -
resolveServiceAddress
Resolves and assigns a service address for the given recipient using the given address. This is called by theallocServiceAddress(RoutingNode)method. The target allocated here is released when the routing node callsfreeServiceAddress(RoutingNode).- Parameters:
recipient- the recipient to assign the service address toserviceName- the name of the service to resolve- Returns:
- any error encountered, or null
-
getSendAdapter
Determines and returns the send adapter that is compatible with the given version. If no adapter can be found, this method returns null.- Parameters:
version- the version for which to return an adapter- Returns:
- the compatible adapter
-
getIdentity
Returns the identity of this network. -
getPort
public int getPort()Returns the port number this network listens to.
-