Class LinkedValueProcessor
java.lang.Object
org.scictrl.csshell.epics.server.processor.AbstractValueProcessor
org.scictrl.csshell.epics.server.processor.MemoryValueProcessor
org.scictrl.csshell.epics.server.processor.LinkedValueProcessor
- All Implemented Interfaces:
PropertyChangeListener,EventListener,ValueProcessor
- Direct Known Subclasses:
ANDValueProcessor,EnumToBitsProcessor,ORValueProcessor
Value processor, which connects to provided remote names and captures their value.
By default first value from array of linked values is used. Implementation can extend this behavior.
To implement own processing of linked values, then override the processInput(ValueHolder[]) method.
Link works in both ways, setting this processor forwards value to remote link as well. Polynomial transformation can be used to convert value in both directions.
- Author:
- igor@scictrl.com
-
Field Summary
FieldsFields inherited from class org.scictrl.csshell.epics.server.processor.MemoryValueProcessor
fixed, lastChangeTimestamp, timestamp, valueFields inherited from class org.scictrl.csshell.epics.server.processor.AbstractValueProcessor
log, record, trigger, type -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidactivate()Record has now reference to Database.voidConfigures the internals of value processor, provides reference to parent record and to configuration with root inside processor tag.booleanReturns true if links are connected and ready to be used.static final LinkedValueProcessornewProcessor(String name, gov.aps.jca.dbr.DBRType type, String description, String link) Creates processor, configures it and returns it embedded within the returned record.voidprintLinkDebug.protected ObjectprocessInput(ValueLinks.ValueHolder[] inputValues) Override this method to provide own conversion from input values to new processor value.voidvoidreconnect.voidreconnect.voidreconnect.voidSets new value to the processor.Methods inherited from class org.scictrl.csshell.epics.server.processor.MemoryValueProcessor
_forceValueUpdateEvent, _setValue, _setValue, _setValue, _setValue, convert, getChangeAccessTimestamp, getTimestamp, getValue, getValueAsBoolean, isFixed, newBooleanProcessor, newDoubleProcessor, newProcessor, newProcessor, setFixedMethods inherited from class org.scictrl.csshell.epics.server.processor.AbstractValueProcessor
getName, getRecord, getTrigger, getType, process, toString
-
Field Details
-
input
Input value remote link.
-
-
Constructor Details
-
LinkedValueProcessor
public LinkedValueProcessor()Constructor for LinkedValueProcessor.
-
-
Method Details
-
newProcessor
public static final LinkedValueProcessor newProcessor(String name, gov.aps.jca.dbr.DBRType type, String description, String link) Creates processor, configures it and returns it embedded within the returned record.- Parameters:
name- name of the returned recordtype- type of the returned recorddescription- the description of the recordlink- the link of the returned processor- Returns:
- new record with embedded and configured processor
-
configure
public void configure(Record record, org.apache.commons.configuration.HierarchicalConfiguration config) Configures the internals of value processor, provides reference to parent record and to configuration with root inside processor tag. Parent record is not yet initialized, so does not have reference to Database, the Database reference will be available during activate call.- Specified by:
configurein interfaceValueProcessor- Overrides:
configurein classMemoryValueProcessor- Parameters:
record- the parent record.config- configuration with room inside processor tag.
-
reconnect
public void reconnect()reconnect.
-
reconnect
reconnect.
-
reconnect
reconnect.
-
activate
public void activate()Record has now reference to Database. processor might want to connect to other records on this server or PVs on other servers. This can not be done until all records from configuration has been loaded. Call to this method signals to the processor that records has been loaded and linking to other values can be commenced.- Specified by:
activatein interfaceValueProcessor- Overrides:
activatein classMemoryValueProcessor
-
setValue
Sets new value to the processor. If value is different from current processor value, then event is fired. Timestamp is updated regardless if value is changed, since timestamp indicates last value update or confirmation. This method is used by remote EPICS entity or other record within same Database. By definition calling setValue must always update value, because further processing must be triggered.- Specified by:
setValuein interfaceValueProcessor- Overrides:
setValuein classMemoryValueProcessor- Parameters:
val- aObjectobject
-
propertyChange
- Specified by:
propertyChangein interfacePropertyChangeListener
-
processInput
Override this method to provide own conversion from input values to new processor value.- Parameters:
inputValues- array wit input values- Returns:
- new value which is set to this processor
-
isInvalid
public boolean isInvalid()Returns true if links are connected and ready to be used.- Returns:
- a boolean
-
printLinkDebug
printLinkDebug.
- Parameters:
ap- aAppendableobject- Throws:
IOException- if any.
-