Class EpicsChannelMonitorService

java.lang.Object
ch.psi.wica.controlsystem.epics.monitor.EpicsChannelMonitorService

@Service @ThreadSafe public class EpicsChannelMonitorService extends Object
A service which establishes EPICS CA monitors on user-specified channels of interest, subsequently publishing the information from each monitor update to interested consumers within the application.
  • Constructor Details

    • EpicsChannelMonitorService

      public EpicsChannelMonitorService(@Autowired EpicsChannelManager.EpicsMonitoredChannelManagerService epicsChannelManager, @Autowired EpicsChannelMonitorPublisher epicsChannelMonitorPublisher)
      Constructs a new instance.
      Parameters:
      epicsChannelManager - an object which can be used to get the channel.
      epicsChannelMonitorPublisher - an object which can be used to get the channel value.
  • Method Details

    • getStatistics

      public EpicsChannelMonitorStatistics getStatistics()
      Returns the statistics associated with this service.
      Returns:
      the statistics.
    • startMonitoring

      public void startMonitoring(EpicsChannelMonitorRequest requestObject)
      Starts monitoring the EPICS control system channel according to the parameters in the supplied request object.

      The creation of the underlying EPICS monitor is performed asynchronously so the invocation of this method does NOT incur the cost of a network round trip.

      The EPICS channel may or may not be online when this method is invoked. The connection-state-change event will be published when the connection to the remote IOC is eventually established. Subsequently, the value-change event will be published to provide the latest value of the channel.

      Parameters:
      requestObject - the request specification object.
      Throws:
      NullPointerException - if the 'requestObject' argument was null.
      IllegalStateException - if this service was previously closed.
      IllegalStateException - if the 'requestObject' was already active.
    • stopMonitoring

      public void stopMonitoring(EpicsChannelMonitorRequest requestObject)
      Stops monitoring the EPICS control system channel specified by the supplied request object.
      Parameters:
      requestObject - the request specification object.
      Throws:
      NullPointerException - if the 'requestObject' argument was null.
      IllegalStateException - if this service was previously closed.
      IllegalStateException - if the 'requestObject' was not recognised.
    • close

      public void close()
      Closes the service.