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.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, finalize, 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
-