2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 <2020> 2021 2022 2023 2024 2025 | Index | 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 <2020> 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: write to a single element of an array field |
From: | "Johnson, Andrew N. via Core-talk" <core-talk at aps.anl.gov> |
To: | Ralph Lange <ralph.lange at gmx.de> |
Cc: | EPICS core-talk <core-talk at aps.anl.gov> |
Date: | Thu, 19 Mar 2020 20:26:30 +0000 |
Some more older background:
The original purpose of the db_field_log (dbf) was to handle monitors without duplicating code. It holds the scalar data that Ralph describes below that gets captured from a field when something calls db_post_events() for that field. Once the
data has been saved, an object containing a pointer to it is pushed onto the event queue, and as it comes out the other end the dbf is passed into a call to dbGetField() to the same field. This copies the scalar data out of the dbf and at the same time also
grabs any metadata needed from the record for the DBR_* type that was subscribed. The same dbGetField() routine is passed a NULL for the dbf when you do a ca_get(), so in that case the data must be copied straight from the record at the same time as the metadata.
I’m sure Jeff has a different and better solution in his server, but migrating to that would need modifying the server-side filters that are currently using it – there are operational systems now using our filtering, so we will have to maintain compatibility
with them for the future.
- Andrew
--
Complexity comes for free, simplicity you have to work for.
|