BaseTopic¶
-
class
lsst.ts.salobj.topics.BaseTopic(*, salinfo, name, sal_prefix)¶ Bases:
abc.ABCBase class for topics.
Parameters: Raises: - RuntimeError
If the topic cannot be constructed.
Attributes: - salinfo :
SalInfo The
salinfoconstructor argument.- name :
str The
nameconstructor argument.- sal_name :
str The topic name used by SAL. For example: “logevent_summaryState”.
- log :
logging.Logger A logger.
- volatile :
bool Is this topic volatile (in which case it has no historical data)?
- attr_name :
str Name of topic attribute in
ControllerandRemote. For example: “evt_summaryState”.- rev_code :
str Revision hash code for the topic. This code changes whenever the schema for the topic changes, and it is part of the DDS topic name. For example: “90255bf1”
- dds_name :
str Name of topic seen by DDS. For example: “Test_logevent_summaryState_90255bf1”.
Attributes Summary
DataTypeThe type (class) for a message of this topic. metadataGet topic metadata as a TopicMetadata, if available, elseNone.Attributes Documentation
-
DataType¶ The type (class) for a message of this topic.
When you read or write a message for this topic you are reading or writing an instance of
DataType.Notes
The preferred way to write a message for a topic is:
RemoteCommand.set_startto start a command.CommandEvent.set_putto write an event.CommandTelemetry.set_putto write a telemetry message.
However, it is also possible to use
DataTypeto create a message, then write, it as separate operations. For example, assuming we have aRemotefor SAL component “Test”:# The preferred way to issue a command: await = remote.cmd_wait.set_put(duration=2, timeout=5) # But an alternative is to first create the command, # then send it, as two separate operations: message = remote.cmd_wait.DataType(duration=2) await remote.cmd_wait.start(message, timeout=5) # Or, even more verbosely: message = remote.cmd_wait.DataType() message.duration = 2 await remote.cmd_wait.start(message, timeout=5)