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:
- name
str, optional Client name (corresponding to
samp.namemetadata keyword).- description
str, optional Client description (corresponding to
samp.description.textmetadata keyword).- metadata
dict, optional Client application metadata in the standard SAMP format.
- addr
str, 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.
- port
int, 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.
- name
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:
- mtype
str MType to be caught.
- function
callable() 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()).- metadata
dict, optional Dictionary containing additional metadata to declare associated with the MType subscribed to (see also
declare_subscriptions()).
- mtype
- 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:
- mtype
str MType to be caught.
- function
callable() 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()).- metadata
dict, optional Dictionary containing additional metadata to declare associated with the MType subscribed to (see also
declare_subscriptions()).
- mtype
- 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:
- mtype
str MType to be caught.
- function
callable() 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()).- metadata
dict, optional Dictionary containing additional metadata to declare associated with the MType subscribed to (see also
declare_subscriptions()).
- mtype
- 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_tag
str Message-tag to be caught.
- function
callable() Application function to be used when
msg_tagis received.
- msg_tag
- 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_params
dict, 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_size
int, 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:
- subscriptions
dict, optional Dictionary containing the list of MTypes to subscribe to, with the same format of the
subscriptionsmap passed to thedeclare_subscriptions()method.
- subscriptions
- 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:
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:
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:
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:
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:
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:
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:
- key
str Client private key.
- key
- get_public_id()[source]¶
Return public client ID obtained at registration time (
samp.self-id).- Returns:
- id
str Client public ID.
- 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).
- 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).
- 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).
- 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:
- mtype
str MType to be removed.
- declarebool
Specify whether the client must be automatically declared as unsubscribed from the MType (see also
declare_subscriptions()).
- mtype
- 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:
- mtype
str MType to be removed.
- declarebool
Specify whether the client must be automatically declared as unsubscribed from the MType (see also
declare_subscriptions()).
- mtype