SAMPIntegratedClient¶
-
class
astropy.samp.SAMPIntegratedClient(name=None, description=None, metadata=None, addr=None, port=0, callable=True)[source]¶ Bases:
objectA Simple SAMP client.
This class is meant to simplify the client usage providing a proxy class that merges the
SAMPClientandSAMPHubProxyfunctionalities in a simplified API.- Parameters
- namestr, optional
Client name (corresponding to
samp.namemetadata keyword).- descriptionstr, optional
Client description (corresponding to
samp.description.textmetadata keyword).- metadatadict, optional
Client application metadata in the standard SAMP format.
- addrstr, optional
Listening address (or IP). This defaults to 127.0.0.1 if the internet is not reachable, otherwise it defaults to the host name.
- portint, optional
Listening XML-RPC server socket port. If left set to 0 (the default), the operating system will select a free port.
- callablebool, optional
Whether the client can receive calls and notifications. If set to
False, then the client can send notifications and calls, but can not receive any.
Attributes Summary
Testing method to verify the client connection with a running Hub.
Methods Summary
bind_receive_call(mtype, function[, …])Bind a specific MType call to a function or class method.
bind_receive_message(mtype, function[, …])Bind a specific MType to a function or class method, being intended for a call or a notification.
bind_receive_notification(mtype, function[, …])Bind a specific MType notification to a function or class method.
bind_receive_response(msg_tag, function)Bind a specific msg-tag response to a function or class method.
call(recipient_id, msg_tag, message)Proxy to
callSAMP Hub method.call_all(msg_tag, message)Proxy to
callAllSAMP Hub method.call_and_wait(recipient_id, message, timeout)Proxy to
callAndWaitSAMP Hub method.connect([hub, hub_params, pool_size])Connect with the current or specified SAMP Hub, start and register the client.
declare_metadata(metadata)Proxy to
declareMetadataSAMP Hub method.declare_subscriptions([subscriptions])Declares the MTypes the client wishes to subscribe to, implicitly defined with the MType binding methods
bind_receive_notification()andbind_receive_call().Unregister the client from the current SAMP Hub, stop the client and disconnect from the Hub.
ecall(recipient_id, msg_tag, mtype, **params)Easy to use version of
call().ecall_all(msg_tag, mtype, **params)Easy to use version of
call_all().ecall_and_wait(recipient_id, mtype, timeout, …)Easy to use version of
call_and_wait().enotify(recipient_id, mtype, **params)Easy to use version of
notify().enotify_all(mtype, **params)Easy to use version of
notify_all().ereply(msg_id, status[, result, error])Easy to use version of
reply().get_metadata(client_id)Proxy to
getMetadataSAMP Hub method.Return the client private key used for the Standard Profile communications obtained at registration time (
samp.private-key).Return public client ID obtained at registration time (
samp.self-id).Proxy to
getRegisteredClientsSAMP Hub method.get_subscribed_clients(mtype)Proxy to
getSubscribedClientsSAMP Hub method.get_subscriptions(client_id)Proxy to
getSubscriptionsSAMP Hub method.notify(recipient_id, message)Proxy to
notifySAMP Hub method.notify_all(message)Proxy to
notifyAllSAMP Hub method.ping()Proxy to
pingSAMP Hub method (Standard Profile only).receive_call(private_key, sender_id, msg_id, …)Standard callable client
receive_callmethod.receive_notification(private_key, sender_id, …)Standard callable client
receive_notificationmethod.receive_response(private_key, responder_id, …)Standard callable client
receive_responsemethod.reply(msg_id, response)Proxy to
replySAMP Hub method.unbind_receive_call(mtype[, declare])Remove from the calls binding table the specified MType and unsubscribe the client from it (if required).
unbind_receive_notification(mtype[, declare])Remove from the notifications binding table the specified MType and unsubscribe the client from it (if required).
unbind_receive_response(msg_tag)Remove from the responses binding table the specified message-tag.
Attributes Documentation
-
is_connected¶ Testing method to verify the client connection with a running Hub.
- Returns
- is_connectedbool
True if the client is connected to a Hub, False otherwise.
Methods Documentation
-
bind_receive_call(mtype, function, declare=True, metadata=None)[source]¶ Bind a specific MType call to a function or class method.
The function must be of the form:
def my_function_or_method(<self,> private_key, sender_id, msg_id, mtype, params, extra)
where
private_keyis the client private-key,sender_idis the notification sender ID,msg_idis the Hub message-id,mtypeis the message MType,paramsis the message parameter set (content of"samp.params") andextrais a dictionary containing any extra message map entry. The client is automatically declared subscribed to the MType by default.- Parameters
- mtypestr
MType to be caught.
- functioncallable
Application function to be used when
mtypeis received.- declarebool, optional
Specify whether the client must be automatically declared as subscribed to the MType (see also
declare_subscriptions()).- metadatadict, optional
Dictionary containing additional metadata to declare associated with the MType subscribed to (see also
declare_subscriptions()).
-
bind_receive_message(mtype, function, declare=True, metadata=None)[source]¶ Bind a specific MType to a function or class method, being intended for a call or a notification.
The function must be of the form:
def my_function_or_method(<self,> private_key, sender_id, msg_id, mtype, params, extra)
where
private_keyis the client private-key,sender_idis the notification sender ID,msg_idis the Hub message-id (calls only, otherwise isNone),mtypeis the message MType,paramsis the message parameter set (content of"samp.params") andextrais a dictionary containing any extra message map entry. The client is automatically declared subscribed to the MType by default.- Parameters
- mtypestr
MType to be caught.
- functioncallable
Application function to be used when
mtypeis received.- declarebool, optional
Specify whether the client must be automatically declared as subscribed to the MType (see also
declare_subscriptions()).- metadatadict, optional
Dictionary containing additional metadata to declare associated with the MType subscribed to (see also
declare_subscriptions()).
-
bind_receive_notification(mtype, function, declare=True, metadata=None)[source]¶ Bind a specific MType notification to a function or class method.
The function must be of the form:
def my_function_or_method(<self,> private_key, sender_id, mtype, params, extra)
where
private_keyis the client private-key,sender_idis the notification sender ID,mtypeis the message MType,paramsis the notified message parameter set (content of"samp.params") andextrais a dictionary containing any extra message map entry. The client is automatically declared subscribed to the MType by default.- Parameters
- mtypestr
MType to be caught.
- functioncallable
Application function to be used when
mtypeis received.- declarebool, optional
Specify whether the client must be automatically declared as subscribed to the MType (see also
declare_subscriptions()).- metadatadict, optional
Dictionary containing additional metadata to declare associated with the MType subscribed to (see also
declare_subscriptions()).
-
bind_receive_response(msg_tag, function)[source]¶ Bind a specific msg-tag response to a function or class method.
The function must be of the form:
def my_function_or_method(<self,> private_key, responder_id, msg_tag, response)
where
private_keyis the client private-key,responder_idis the message responder ID,msg_tagis the message-tag provided at call time andresponseis the response received.- Parameters
- msg_tagstr
Message-tag to be caught.
- functioncallable
Application function to be used when
msg_tagis received.
-
connect(hub=None, hub_params=None, pool_size=20)[source]¶ Connect with the current or specified SAMP Hub, start and register the client.
- Parameters
- hub
SAMPHubServer, optional The hub to connect to.
- hub_paramsdict, optional
Optional dictionary containing the lock-file content of the Hub with which to connect. This dictionary has the form
{<token-name>: <token-string>, ...}.- pool_sizeint, optional
The number of socket connections opened to communicate with the Hub.
- hub
-
declare_subscriptions(subscriptions=None)[source]¶ Declares the MTypes the client wishes to subscribe to, implicitly defined with the MType binding methods
bind_receive_notification()andbind_receive_call().An optional
subscriptionsmap can be added to the final map passed to thedeclare_subscriptions()method.- Parameters
- subscriptionsdict, optional
Dictionary containing the list of MTypes to subscribe to, with the same format of the
subscriptionsmap passed to thedeclare_subscriptions()method.
-
disconnect()[source]¶ Unregister the client from the current SAMP Hub, stop the client and disconnect from the Hub.
-
ecall(recipient_id, msg_tag, mtype, **params)[source]¶ Easy to use version of
call().This is a proxy to
callmethod that allows to send a call message in a simplified way.Note that reserved
extra_kwskeyword is a dictionary with the special meaning of being used to add extra keywords, in addition to the standardsamp.mtypeandsamp.params, to the message sent.- Parameters
- recipient_idstr
Recipient ID
- msg_tagstr
Message tag to use
- mtypestr
MType to be sent
- paramsdict of set of keywords
Variable keyword set which contains the list of parameters for the specified MType.
Examples
>>> from astropy.samp import SAMPIntegratedClient >>> cli = SAMPIntegratedClient() >>> ... >>> msgid = cli.ecall("abc", "xyz", "samp.msg.progress", ... txt = "initialization", percent = "10", ... extra_kws = {"my.extra.info": "just an example"})
-
ecall_all(msg_tag, mtype, **params)[source]¶ Easy to use version of
call_all().This is a proxy to
callAllmethod that allows to send the call message in a simplified way.Note that reserved
extra_kwskeyword is a dictionary with the special meaning of being used to add extra keywords, in addition to the standardsamp.mtypeandsamp.params, to the message sent.- Parameters
- msg_tagstr
Message tag to use
- mtypestr
MType to be sent
- paramsdict of set of keywords
Variable keyword set which contains the list of parameters for the specified MType.
Examples
>>> from astropy.samp import SAMPIntegratedClient >>> cli = SAMPIntegratedClient() >>> ... >>> msgid = cli.ecall_all("xyz", "samp.msg.progress", ... txt = "initialization", percent = "10", ... extra_kws = {"my.extra.info": "just an example"})
-
ecall_and_wait(recipient_id, mtype, timeout, **params)[source]¶ Easy to use version of
call_and_wait().This is a proxy to
callAndWaitmethod that allows to send the call message in a simplified way.Note that reserved
extra_kwskeyword is a dictionary with the special meaning of being used to add extra keywords, in addition to the standardsamp.mtypeandsamp.params, to the message sent.- Parameters
- recipient_idstr
Recipient ID
- mtypestr
MType to be sent
- timeoutstr
Call timeout in seconds
- paramsdict of set of keywords
Variable keyword set which contains the list of parameters for the specified MType.
Examples
>>> from astropy.samp import SAMPIntegratedClient >>> cli = SAMPIntegratedClient() >>> ... >>> cli.ecall_and_wait("xyz", "samp.msg.progress", "5", ... txt = "initialization", percent = "10", ... extra_kws = {"my.extra.info": "just an example"})
-
enotify(recipient_id, mtype, **params)[source]¶ Easy to use version of
notify().This is a proxy to
notifymethod that allows to send the notification message in a simplified way.Note that reserved
extra_kwskeyword is a dictionary with the special meaning of being used to add extra keywords, in addition to the standardsamp.mtypeandsamp.params, to the message sent.- Parameters
- recipient_idstr
Recipient ID
- mtypestr
the MType to be notified
- paramsdict or set of keywords
Variable keyword set which contains the list of parameters for the specified MType.
Examples
>>> from astropy.samp import SAMPIntegratedClient >>> cli = SAMPIntegratedClient() >>> ... >>> cli.enotify("samp.msg.progress", msgid = "xyz", txt = "initialization", ... percent = "10", extra_kws = {"my.extra.info": "just an example"})
-
enotify_all(mtype, **params)[source]¶ Easy to use version of
notify_all().This is a proxy to
notifyAllmethod that allows to send the notification message in a simplified way.Note that reserved
extra_kwskeyword is a dictionary with the special meaning of being used to add extra keywords, in addition to the standardsamp.mtypeandsamp.params, to the message sent.- Parameters
- mtypestr
MType to be notified.
- paramsdict or set of keywords
Variable keyword set which contains the list of parameters for the specified MType.
Examples
>>> from astropy.samp import SAMPIntegratedClient >>> cli = SAMPIntegratedClient() >>> ... >>> cli.enotify_all("samp.msg.progress", txt = "initialization", ... percent = "10", ... extra_kws = {"my.extra.info": "just an example"})
-
ereply(msg_id, status, result=None, error=None)[source]¶ Easy to use version of
reply().This is a proxy to
replymethod that allows to send a reply message in a simplified way.- Parameters
- msg_idstr
Message ID to which reply.
- statusstr
Content of the
samp.statusresponse keyword.- resultdict
Content of the
samp.resultresponse keyword.- errordict
Content of the
samp.errorresponse keyword.
Examples
>>> from astropy.samp import SAMPIntegratedClient, SAMP_STATUS_ERROR >>> cli = SAMPIntegratedClient() >>> ... >>> cli.ereply("abd", SAMP_STATUS_ERROR, result={}, ... error={"samp.errortxt": "Test error message"})
-
get_private_key()[source]¶ Return the client private key used for the Standard Profile communications obtained at registration time (
samp.private-key).- Returns
- keystr
Client private key.
-
get_public_id()[source]¶ Return public client ID obtained at registration time (
samp.self-id).- Returns
- idstr
Client public ID.
-
get_registered_clients()[source]¶ Proxy to
getRegisteredClientsSAMP Hub method.This returns all the registered clients, excluding the current client.
-
receive_call(private_key, sender_id, msg_id, message)[source]¶ Standard callable client
receive_callmethod.This method is automatically handled when the
bind_receive_call()method is used to bind distinct operations to MTypes. In case of a customized callable client implementation that inherits from theSAMPClientclass this method should be overwritten.Note
When overwritten, this method must always return a string result (even empty).
- Parameters
- private_keystr
Client private key.
- sender_idstr
Sender public ID.
- msg_idstr
Message ID received.
- messagedict
Received message.
- Returns
- confirmationstr
Any confirmation string.
-
receive_notification(private_key, sender_id, message)[source]¶ Standard callable client
receive_notificationmethod.This method is automatically handled when the
bind_receive_notification()method is used to bind distinct operations to MTypes. In case of a customized callable client implementation that inherits from theSAMPClientclass this method should be overwritten.Note
When overwritten, this method must always return a string result (even empty).
- Parameters
- private_keystr
Client private key.
- sender_idstr
Sender public ID.
- messagedict
Received message.
- Returns
- confirmationstr
Any confirmation string.
-
receive_response(private_key, responder_id, msg_tag, response)[source]¶ Standard callable client
receive_responsemethod.This method is automatically handled when the
bind_receive_response()method is used to bind distinct operations to MTypes. In case of a customized callable client implementation that inherits from theSAMPClientclass this method should be overwritten.Note
When overwritten, this method must always return a string result (even empty).
- Parameters
- private_keystr
Client private key.
- responder_idstr
Responder public ID.
- msg_tagstr
Response message tag.
- responsedict
Received response.
- Returns
- confirmationstr
Any confirmation string.
-
unbind_receive_call(mtype, declare=True)[source]¶ Remove from the calls binding table the specified MType and unsubscribe the client from it (if required).
- Parameters
- mtypestr
MType to be removed.
- declarebool
Specify whether the client must be automatically declared as unsubscribed from the MType (see also
declare_subscriptions()).
-
unbind_receive_notification(mtype, declare=True)[source]¶ Remove from the notifications binding table the specified MType and unsubscribe the client from it (if required).
- Parameters
- mtypestr
MType to be removed.
- declarebool
Specify whether the client must be automatically declared as unsubscribed from the MType (see also
declare_subscriptions()).