Package org.astrogrid.samp.xmlrpc
Class HubXmlRpcHandler.HubActorImpl
- java.lang.Object
-
- org.astrogrid.samp.xmlrpc.HubXmlRpcHandler.HubActorImpl
-
- All Implemented Interfaces:
HubActor
- Enclosing class:
- HubXmlRpcHandler
private static class HubXmlRpcHandler.HubActorImpl extends java.lang.Object implements HubActor
Implementation of theHubActor
interface which does the work for this class. Apart from a few methods which have Standard-Profile-specific aspects, the work is simply delegated to the hub connection factory.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map
clientMap_
private KeyGenerator
keyGen_
private ClientProfile
profile_
private java.lang.String
secret_
private SampXmlRpcClientFactory
xClientFactory_
-
Constructor Summary
Constructors Constructor Description HubActorImpl(SampXmlRpcClientFactory xClientFactory, ClientProfile profile, java.lang.String secret, KeyGenerator keyGen)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
call(java.lang.String privateKey, java.lang.String recipientId, java.lang.String msgTag, java.util.Map msg)
Sends a message to a given client expecting a response.java.util.Map
callAll(java.lang.String privateKey, java.lang.String msgTag, java.util.Map msg)
Sends a message to all subscribed clients expecting responses.java.util.Map
callAndWait(java.lang.String privateKey, java.lang.String recipientId, java.util.Map msg, java.lang.String timeoutStr)
Sends a message synchronously to a client.void
declareMetadata(java.lang.String privateKey, java.util.Map metadata)
Declares metadata for the calling client.void
declareSubscriptions(java.lang.String privateKey, java.util.Map subs)
Declares subscription information for the calling client.private HubConnection
getConnection(java.lang.String privateKey)
Returns the HubConnection associated with a private key used by this hub actor.java.util.Map
getMetadata(java.lang.String privateKey, java.lang.String clientId)
Returns metadata for a given client.java.util.List
getRegisteredClients(java.lang.String privateKey)
Returns a list of the public-ids of all currently registered clients.java.util.Map
getSubscribedClients(java.lang.String privateKey, java.lang.String mtype)
Returns a map of the clients subscribed to a given MType.java.util.Map
getSubscriptions(java.lang.String privateKey, java.lang.String clientId)
Returns subscriptions for a given client.void
notify(java.lang.String privateKey, java.lang.String recipientId, java.util.Map msg)
Sends a message to a given client without wanting a response.java.util.List
notifyAll(java.lang.String privateKey, java.util.Map msg)
Sends a message to all subscribed clients without wanting a response.void
ping()
Throws an exception if service is not operating.void
ping(java.lang.String privateKey)
Throws an exception if service is not operating.java.util.Map
register(java.lang.String secret)
Registers a new client and returns a map with registration information.void
reply(java.lang.String privateKey, java.lang.String msgId, java.util.Map response)
Responds to a previously sent message.void
setXmlrpcCallback(java.lang.String privateKey, java.lang.String surl)
Sets the XML-RPC URL to use for callbacks for a callable client.void
unregister(java.lang.String privateKey)
Unregisters a registered client.
-
-
-
Field Detail
-
xClientFactory_
private final SampXmlRpcClientFactory xClientFactory_
-
profile_
private final ClientProfile profile_
-
secret_
private final java.lang.String secret_
-
keyGen_
private final KeyGenerator keyGen_
-
clientMap_
private final java.util.Map clientMap_
-
-
Constructor Detail
-
HubActorImpl
HubActorImpl(SampXmlRpcClientFactory xClientFactory, ClientProfile profile, java.lang.String secret, KeyGenerator keyGen)
Constructor.- Parameters:
xClientFactory
- XML-RPC client factory implementationprofile
- hub connection factorysecret
- password required for client registrationkeyGen
- generator for private keys
-
-
Method Detail
-
register
public java.util.Map register(java.lang.String secret) throws SampException
Description copied from interface:HubActor
Registers a new client and returns a map with registration information.- Specified by:
register
in interfaceHubActor
- Parameters:
secret
- registration password- Returns:
RegInfo
-like map.- Throws:
SampException
-
unregister
public void unregister(java.lang.String privateKey) throws SampException
Description copied from interface:HubActor
Unregisters a registered client.- Specified by:
unregister
in interfaceHubActor
- Parameters:
privateKey
- calling client private key- Throws:
SampException
-
ping
public void ping(java.lang.String privateKey) throws SampException
Description copied from interface:HubActor
Throws an exception if service is not operating.- Specified by:
ping
in interfaceHubActor
- Parameters:
privateKey
- ignored- Throws:
SampException
-
setXmlrpcCallback
public void setXmlrpcCallback(java.lang.String privateKey, java.lang.String surl) throws SampException
Description copied from interface:HubActor
Sets the XML-RPC URL to use for callbacks for a callable client.- Specified by:
setXmlrpcCallback
in interfaceHubActor
- Parameters:
privateKey
- calling client private keysurl
- XML-RPC endpoint for client API callbacks- Throws:
SampException
-
declareMetadata
public void declareMetadata(java.lang.String privateKey, java.util.Map metadata) throws SampException
Description copied from interface:HubActor
Declares metadata for the calling client.- Specified by:
declareMetadata
in interfaceHubActor
- Parameters:
privateKey
- calling client private keymetadata
-Metadata
-like map- Throws:
SampException
-
getMetadata
public java.util.Map getMetadata(java.lang.String privateKey, java.lang.String clientId) throws SampException
Description copied from interface:HubActor
Returns metadata for a given client.- Specified by:
getMetadata
in interfaceHubActor
- Parameters:
privateKey
- calling client private keyclientId
- public ID for client whose metadata is required- Returns:
Metadata
-like map- Throws:
SampException
-
declareSubscriptions
public void declareSubscriptions(java.lang.String privateKey, java.util.Map subs) throws SampException
Description copied from interface:HubActor
Declares subscription information for the calling client.- Specified by:
declareSubscriptions
in interfaceHubActor
- Parameters:
privateKey
- calling client private keysubs
-Subscriptions
-like map- Throws:
SampException
-
getSubscriptions
public java.util.Map getSubscriptions(java.lang.String privateKey, java.lang.String clientId) throws SampException
Description copied from interface:HubActor
Returns subscriptions for a given client.- Specified by:
getSubscriptions
in interfaceHubActor
- Parameters:
privateKey
- calling client private key- Returns:
Subscriptions
-like map- Throws:
SampException
-
getRegisteredClients
public java.util.List getRegisteredClients(java.lang.String privateKey) throws SampException
Description copied from interface:HubActor
Returns a list of the public-ids of all currently registered clients.- Specified by:
getRegisteredClients
in interfaceHubActor
- Parameters:
privateKey
- calling client private key- Returns:
- list of Strings
- Throws:
SampException
-
getSubscribedClients
public java.util.Map getSubscribedClients(java.lang.String privateKey, java.lang.String mtype) throws SampException
Description copied from interface:HubActor
Returns a map of the clients subscribed to a given MType.- Specified by:
getSubscribedClients
in interfaceHubActor
- Parameters:
privateKey
- calling client private keymtype
- MType of interest- Returns:
- map in which the keys are the public-ids of clients subscribed
to
mtype
- Throws:
SampException
-
notify
public void notify(java.lang.String privateKey, java.lang.String recipientId, java.util.Map msg) throws SampException
Description copied from interface:HubActor
Sends a message to a given client without wanting a response.- Specified by:
notify
in interfaceHubActor
- Parameters:
privateKey
- calling client private keyrecipientId
- public-id of client to receive messagemsg
-Message
-like map- Throws:
SampException
-
notifyAll
public java.util.List notifyAll(java.lang.String privateKey, java.util.Map msg) throws SampException
Description copied from interface:HubActor
Sends a message to all subscribed clients without wanting a response.- Specified by:
notifyAll
in interfaceHubActor
- Parameters:
privateKey
- calling client private keymsg
-Message
-like map- Returns:
- list of public-ids for clients to which the notify will be sent
- Throws:
SampException
-
call
public java.lang.String call(java.lang.String privateKey, java.lang.String recipientId, java.lang.String msgTag, java.util.Map msg) throws SampException
Description copied from interface:HubActor
Sends a message to a given client expecting a response.- Specified by:
call
in interfaceHubActor
- Parameters:
privateKey
- calling client private keyrecipientId
- public-id of client to receive messagemsgTag
- arbitrary string tagging this message for caller's benefitmsg
-Message
-like map- Returns:
- message ID
- Throws:
SampException
-
callAll
public java.util.Map callAll(java.lang.String privateKey, java.lang.String msgTag, java.util.Map msg) throws SampException
Description copied from interface:HubActor
Sends a message to all subscribed clients expecting responses.- Specified by:
callAll
in interfaceHubActor
- Parameters:
privateKey
- calling client private keymsgTag
- arbitrary string tagging this message for caller's benefitmsg
-Message
-like map- Returns:
- public-id->msg-id map for clients to which an attempt to send the call will be made
- Throws:
SampException
-
callAndWait
public java.util.Map callAndWait(java.lang.String privateKey, java.lang.String recipientId, java.util.Map msg, java.lang.String timeoutStr) throws SampException
Description copied from interface:HubActor
Sends a message synchronously to a client.- Specified by:
callAndWait
in interfaceHubActor
- Parameters:
privateKey
- calling client private keyrecipientId
- public-id of client to receive messagemsg
-Message
-like maptimeoutStr
- timeout in seconds encoded as a SAMP int- Returns:
Response
-like map- Throws:
SampException
-
reply
public void reply(java.lang.String privateKey, java.lang.String msgId, java.util.Map response) throws SampException
Description copied from interface:HubActor
Responds to a previously sent message.- Specified by:
reply
in interfaceHubActor
- Parameters:
privateKey
- calling client private keymsgId
- ID associated with earlier sendresponse
-Response
-like map- Throws:
SampException
-
ping
public void ping() throws SampException
Description copied from interface:HubActor
Throws an exception if service is not operating.- Specified by:
ping
in interfaceHubActor
- Throws:
SampException
-
getConnection
private HubConnection getConnection(java.lang.String privateKey) throws SampException
Returns the HubConnection associated with a private key used by this hub actor.- Parameters:
privateKey
- private key- Returns:
- connection for
privateKey
- Throws:
SampException
-
-