pub struct PropertyPost {
pub writes: Vec<(String, EpicsValue)>,
pub post_field: String,
}Expand description
One out-of-band PROPERTY post from a device support: the fields it writes and the one field it posts on.
The two are deliberately different sets. C’s enum re-propagation callbacks
(devAsynInt32.c:712-766, devAsynUInt32Digital.c:547-601, asyn
e2a281e2) are three statements under one dbScanLock:
setEnums((char*)&pr->zrst, (int*)&pr->zrvl, &pr->zrsv, ...);
db_post_events(pr, &pr->val, DBE_PROPERTY);setEnums rewrites ZRST/ZRVL/ZRSV… in place and posts on none of them;
the single db_post_events names &pr->val, so it is the client
monitoring the PV itself that learns the choices moved and re-reads
DBR_GR_ENUM. Collapsing the two sets into one field list would post
every state field and nothing on VAL — the opposite of both halves.
Measured end to end against C libca clients (R7.0.10 host build), not
just at this layer — the mbbi_enum_property_ioc example in epics-ca-rs
is the IOC half. On the post, a DBR_GR_ENUM + DBE_PROPERTY
subscription (base’s own attribute-re-read shape, dbCa.c) receives a
second event carrying ["OFF","ON","FAULT"] with value unmoved at 1,
and camonitor -m p re-renders One as ON. A camonitor -m va on the
same record sees only its initial event, which is the discrimination this
type exists for: re-keyed labels are not a new reading.
Fields§
§writes: Vec<(String, EpicsValue)>Fields to store without posting.
post_field: StringThe field db_post_events names, posted DBE_PROPERTY after the
writes land, under the same record lock.
Trait Implementations§
Source§impl Clone for PropertyPost
impl Clone for PropertyPost
Source§fn clone(&self) -> PropertyPost
fn clone(&self) -> PropertyPost
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more