AckCmdWriter¶
-
class
lsst.ts.salobj.topics.
AckCmdWriter
(salinfo)¶ Bases:
lsst.ts.salobj.topics.WriteTopic
Command Acknowledgement writer.
Attributes Summary
DataType
The type (class) for a message of this topic. data
Internally cached message. has_data
Has data
ever been set?metadata
Get topic metadata as a TopicMetadata
, if available, elseNone
.Methods Summary
close
()Shut down and release resources. put
([data, priority])Output this topic. set
(**kwargs)Set one or more fields of message data cache self.data
.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_start
to start a command.CommandEvent.set_put
to write an event.CommandTelemetry.set_put
to write a telemetry message.
However, it is also possible to use
DataType
to create a message, then write, it as separate operations. For example, assuming we have aRemote
for 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)
-
data
¶ Internally cached message.
Raises: - TypeError
If
data
is not an instance ofDataType
Notes
Do not assume the data will be constant. You can make a copy using
copy.copy(data)
.
Methods Documentation
-
close
()¶ Shut down and release resources.
Intended to be called by SalInfo.close(), since that tracks all topics.
-
put
(data=None, priority=0)¶ Output this topic.
Parameters: Raises: - TypeError
If
data
is not None and not an instance ofDataType
.
-
set
(**kwargs)¶ Set one or more fields of message data cache
self.data
.Parameters: - **kwargs :
dict
[str
,any
] Dict of field name: new value for that field:
- Any key whose value is
None
is checked for existence, but the value of the field is not changed. - If the field being set is an array then the value must either be an array of the same length or a scalar (which replaces every element of the array).
- Any key whose value is
Returns: Raises: - AttributeError
If the topic does not have the specified field.
- ValueError
If the field cannot be set to the specified value.
Notes
If one or more fields cannot be set, the message data may be partially updated.
- **kwargs :
-