RemoteTelemetry¶
-
class
lsst.ts.salobj.topics.
RemoteTelemetry
(salinfo, name, max_history=1, queue_len=100)¶ Bases:
lsst.ts.salobj.topics.ReadTopic
Read a specific telemetry topic.
Parameters: - salinfo :
SalInfo
SAL component information
- name :
str
Telemetry topic name
- max_history :
int
(optional) Maximum number of historical items to read:
- 0 if none; strongly recommended for
RemoteCommand
&AckCmdReader
- 1 is recommended for events and telemetry
- 0 if none; strongly recommended for
- queue_len :
int
Number of elements that can be queued for
get_oldest
.
Notes
All functions that return data return from an internal cache. This cached value is replaced by all read operations, so as long as no other code modifies the data, the returned data will not change.
Attributes Summary
DataType
The class of data for this topic. allow_multiple_callbacks
Can callbacks can run simultaneously? callback
Callback function, or None if there is not one. has_callback
Return True if there is a callback function. has_data
Has any data been seen for this topic? max_history
metadata
Get topic metadata as a TopicMetadata
, if available, elseNone
.Methods Summary
aget
([timeout])Get the current value, if any, else wait for the next value. close
()Shut down and release resources. flush
()Flush the queue of unread data. get
([flush])Get the most recently seen value, or None
if no data ever seen.get_oldest
()Pop and return the oldest value from the queue, or None
if the queue is empty.next
(*, flush[, timeout])Wait for a value, possibly returning the oldest queued value. Attributes Documentation
-
DataType
¶ The class of data for this topic.
-
allow_multiple_callbacks
¶ Can callbacks can run simultaneously?
Notes
Ignored for synchronous callbacks because those block while running. In particular, if the callback is synchronous but launches one or more background jobs then the number of those jobs cannot be limited by this class.
-
callback
¶ Callback function, or None if there is not one.
The callback function is called when new data is received; it receives one argument: the data.
Raises: - TypeError
When setting a new callback if the callback is not None and is not callable.
Notes
The callback function can be synchronous or asynchronous (e.g. defined with
async def
).Setting a callback flushes the queue, and it will remain empty as long as there is a callback.
get_oldest
andnext
are prohibited if there is a callback function. Technically they could both work, butget_oldest
would always returnNone
andnext
would miss data if it arrived while waiting for something else. It seemed safer to just raise an exception.
-
has_callback
¶ Return True if there is a callback function.
-
has_data
¶ Has any data been seen for this topic?
-
max_history
¶
Methods Documentation
-
aget
(timeout=None)¶ Get the current value, if any, else wait for the next value.
Parameters: - timeout :
float
(optional) Time limit, in seconds. If None then no time limit.
Returns: - data :
DataType
The current or next value.
Raises: - RuntimeError
If a callback function is present.
Notes
Do not modify the returned data. To make a copy that you can modify use
copy.copy(value)
.- timeout :
-
close
()¶ Shut down and release resources.
Intended to be called by SalInfo.close(), since that tracks all topics.
-
flush
()¶ Flush the queue of unread data.
Raises: - RuntimeError
If a callback function is present.
-
get
(flush=True)¶ Get the most recently seen value, or
None
if no data ever seen.Parameters: Returns:
-
get_oldest
()¶ Pop and return the oldest value from the queue, or
None
if the queue is empty.Returns: Raises: - RuntimeError
If a callback function is present.
Notes
Use with caution when mixing with
next
, since that also consumes data from the queue.
- salinfo :