Package org.astrogrid.samp.xmlrpc
Class XmlRpcHubConnection
java.lang.Object
org.astrogrid.samp.xmlrpc.XmlRpcHubConnection
- All Implemented Interfaces:
HubConnection
Partial HubConnection implementation based on XML-RPC.
No implementation is provided for the
HubConnection.setCallable(org.astrogrid.samp.client.CallableClient)
method.
This is a useful base class for XML-RPC-based profile implementations,
but it is not perfectly general: some assumptions, compatible
with the Standard Profile, are made about the way that XML-RPC
calls are mapped on to SAMP hub interface calls.- Since:
- 16 Jul 2008
- Author:
- Mark Taylor, Sylvain Lafrasse
-
Constructor Summary
ConstructorsConstructorDescriptionXmlRpcHubConnection
(SampXmlRpcClient xClient, String prefix, List registerArgs) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionSends a message to a given client expecting a response.Sends a message to all subscribed clients expecting responses.callAndWait
(String recipientId, Map msg, int timeout) Sends a message synchronously to a client, waiting for the response.void
declareMetadata
(Map meta) Declares this registered client's metadata.void
declareSubscriptions
(Map subs) Declares this registered client's MType subscriptions.Makes an XML-RPC call to the SAMP hub represented by this connection.void
finalize()
Unregisters if not already unregistered.abstract Object
Returns an object which is used as the first argument of most XML-RPC calls to the hub.getMetadata
(String clientId) Returns the metadata for another registered client.Returns the registration information associated with this connection.String[]
Returns the list of client public IDs for those clients currently registered.getSubscribedClients
(String mtype) Returns a map of subscriptions for a given MType.getSubscriptions
(String clientId) Returns the subscriptions for another registered client.void
Sends a message to a given client without wanting a response.Sends a message to all subscribed clients without wanting a response.void
ping()
Tests whether the connection is currently open.Actually makes an XML-RPC call to the SAMP hub represented by this connection.void
Supplies a response to a previously received message.void
Unregisters the client and terminates this connection.Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.astrogrid.samp.client.HubConnection
setCallable
-
Constructor Details
-
XmlRpcHubConnection
public XmlRpcHubConnection(SampXmlRpcClient xClient, String prefix, List registerArgs) throws SampException Constructor.- Parameters:
xClient
- XML-RPC clientprefix
- string prepended to all hub interface method names to turn them into XML-RPC method namesregisterArgs
- arguments to the profile-specific "register" method to initiate this connection- Throws:
SampException
-
-
Method Details
-
getRegInfo
Description copied from interface:HubConnection
Returns the registration information associated with this connection.- Specified by:
getRegInfo
in interfaceHubConnection
- Returns:
- registration info
-
ping
Description copied from interface:HubConnection
Tests whether the connection is currently open.- Specified by:
ping
in interfaceHubConnection
- Throws:
SampException
- if the hub has disappeared or communications are disrupted in some other way
-
unregister
Description copied from interface:HubConnection
Unregisters the client and terminates this connection.- Specified by:
unregister
in interfaceHubConnection
- Throws:
SampException
-
declareMetadata
Description copied from interface:HubConnection
Declares this registered client's metadata.- Specified by:
declareMetadata
in interfaceHubConnection
- Parameters:
meta
-Metadata
-like map- Throws:
SampException
-
getMetadata
Description copied from interface:HubConnection
Returns the metadata for another registered client.- Specified by:
getMetadata
in interfaceHubConnection
- Parameters:
clientId
- public id for another registered client- Returns:
- metadata map
- Throws:
SampException
-
declareSubscriptions
Description copied from interface:HubConnection
Declares this registered client's MType subscriptions.Only permitted if this client is already callable.
- Specified by:
declareSubscriptions
in interfaceHubConnection
- Parameters:
subs
-Subscriptions
-like map- Throws:
SampException
-
getSubscriptions
Description copied from interface:HubConnection
Returns the subscriptions for another registered client.- Specified by:
getSubscriptions
in interfaceHubConnection
- Parameters:
clientId
- public id for another registered client- Returns:
- subscriptions map
- Throws:
SampException
-
getRegisteredClients
Description copied from interface:HubConnection
Returns the list of client public IDs for those clients currently registered.- Specified by:
getRegisteredClients
in interfaceHubConnection
- Returns:
- array of client ids, excluding the one for this client
- Throws:
SampException
-
getSubscribedClients
Description copied from interface:HubConnection
Returns a map of subscriptions for a given MType.- Specified by:
getSubscribedClients
in interfaceHubConnection
- Parameters:
mtype
- MType- Returns:
- map in which the keys are the public IDs of clients subscribed
to
mtype
- Throws:
SampException
-
notify
Description copied from interface:HubConnection
Sends a message to a given client without wanting a response.- Specified by:
notify
in interfaceHubConnection
- Parameters:
recipientId
- public-id of client to receive messagemsg
-Message
-like map- Throws:
SampException
-
notifyAll
Description copied from interface:HubConnection
Sends a message to all subscribed clients without wanting a response.- Specified by:
notifyAll
in interfaceHubConnection
- Parameters:
msg
-Message
-like map- Returns:
- list of public-ids for clients to which the notify will be sent
- Throws:
SampException
-
call
Description copied from interface:HubConnection
Sends a message to a given client expecting a response. ThereceiveResponse
method of this connection'sCallableClient
will be called with a response at some time in the future.Only permitted if this client is already callable.
- Specified by:
call
in interfaceHubConnection
- Parameters:
recipientId
- 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
Description copied from interface:HubConnection
Sends a message to all subscribed clients expecting responses. ThereceiveResponse
method of this connection'sCallableClient
will be called with responses at some time in the future.Only permitted if this client is already callable.
- Specified by:
callAll
in interfaceHubConnection
- Parameters:
msgTag
- 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
Description copied from interface:HubConnection
Sends a message synchronously to a client, waiting for the response. If more seconds elapse than the value of thetimeout
parameter, an exception will result.- Specified by:
callAndWait
in interfaceHubConnection
- Parameters:
recipientId
- public-id of client to receive messagemsg
-Message
-like maptimeout
- timeout in seconds, or <0 for no timeout- Returns:
- response
- Throws:
SampException
-
reply
Description copied from interface:HubConnection
Supplies a response to a previously received message.- Specified by:
reply
in interfaceHubConnection
- Parameters:
msgId
- ID associated with earlier sendresponse
-Response
-like map- Throws:
SampException
-
getClientKey
Returns an object which is used as the first argument of most XML-RPC calls to the hub.- Returns:
- SAMP-friendly object to identify this client
-
exec
Makes an XML-RPC call to the SAMP hub represented by this connection. The result ofgetClientKey()
is passed as the first argument of the XML-RPC call.- Parameters:
methodName
- unqualified SAMP hub API method nameparams
- array of method parameters- Returns:
- XML-RPC call return value
- Throws:
SampException
-
rawExec
Actually makes an XML-RPC call to the SAMP hub represented by this connection.- Parameters:
fqName
- fully qualified SAMP hub API method nameparamList
- list of method parameters- Returns:
- XML-RPC call return value
- Throws:
SampException
-
finalize
Unregisters if not already unregistered.
-