archiver-appliance / epicsarchiverap

This is an implementation of an archiver for EPICS control systems that aims to archive millions of PVs.
Other
38 stars 37 forks source link

Allow usage of Field Modifiers #193

Closed jacomago closed 1 month ago

jacomago commented 7 months ago

Allow usage of field Modifiers.

Essentially allows the archiving of pvs, or channels with path "pvName.fieldName.fieldModifier". Field Modifiers are documented at https://epics.anl.gov/base/R7-0/8-docs/filters.html .

Examples of Field Modifiers are Channel Filters, such as

PVNAME.{'dbnd':{'rel':0.1}}

Which filters all changes that have a change < 0.1 from being sent along the connection.

Fixes #192

Implementation notes:

Have to update 3 main places.

PVNames.java now splits up a channel name into a pvName, Field and FieldModifier. Then uses these to check a channelName is valid, or if it is a field channel.

PVsMatchingParameter is refactored to simplify and becomes the main place to handle multiple pvs as input to a BPLAction. In addition a new api accepting a list of pvs of the form [{"pv": "pvName"}, {"pv": "pvName2"}], this is to allow fieldModifiers with "," character. Which would have failed using the www-form-encoded input api.

mgmt.js and reportable.js are then updated to use the new json api, to support channel names with field modifiers.

Note

Note the filters support many different special characters. So filenames may be strange.

thelarsjohansson commented 2 months ago

It's a myriad of changes and difficult to understand where and how changes come into play. Content in link in associated GitHub ticket, https://github.com/archiver-appliance/epicsarchiverap/issues/192, will be lost looking in repository after a merge.

I would like

Architecture of tool is complex and so understanding is complex..