Class DefaultServerImpl

  • All Implemented Interfaces:
    Server

    public class DefaultServerImpl
    extends Object
    implements Server
    Default server implementation. Implementation keeps a hash-map of all registered PVs. When processVariableExistanceTest is called existance test is made on the hash-map. processVariableAttach metod simply retrieves PV from the hash-map.
    • Field Detail

      • pvs

        protected Map pvs
        Map of PVs.
    • Constructor Detail

      • DefaultServerImpl

        public DefaultServerImpl()
    • Method Detail

      • createMemoryProcessVariable

        public MemoryProcessVariable createMemoryProcessVariable​(String name,
                                                                 DBRType type,
                                                                 Object initialValue)
        Convenience method to create and register new in-memory process variables.
        Parameters:
        name - process variable name.
        type - process variable native type.
        initialValue - process variable initial value (array expected).
        Returns:
        created and registered process variable.
      • registerProcessVariable

        public void registerProcessVariable​(String aliasName,
                                            ProcessVariable pv)
        Register process variable. Note: if process variable with aliasName is already registered this will override it.
        Parameters:
        aliasName - process variable name.
        pv - process variable instance.
      • registerProcessVariable

        public void registerProcessVariable​(ProcessVariable pv)
        Register process variable. Note: if process variable with the same name is already registered this will override it.
        Parameters:
        pv - process variable instance.
      • unregisterProcessVariable

        public ProcessVariable unregisterProcessVariable​(String aliasName)
        Unregister process variable.
        Parameters:
        aliasName - process variable name
        Returns:
        unregistered process variable, null if non unregistered.
      • processVariableAttach

        public ProcessVariable processVariableAttach​(String aliasName,
                                                     ProcessVariableEventCallback eventCallback,
                                                     ProcessVariableAttachCallback asyncCompletionCallback)
                                              throws CAStatusException,
                                                     IllegalArgumentException,
                                                     IllegalStateException
        Description copied from interface: Server
        This function is called every time that a client attaches to the PV. The name supplied here will be either a canonical PV name or an alias PV name. The request is allowed to complete asynchronously. It is a responsibility of the server tool to detect attempts by the server library to attach to an existing PV. If the PV does not exist then the server tool should create it. Otherwise, the server tool typically will return a pointer to the preexisting PV. The server tool is encouraged to accept multiple PV name aliases for the same PV here. In most situations the server tool should avoid PV duplication by returning a pointer to an existing PV if the PV alias name matches a preexisting PV's name or any of its aliases. In certain specialized rare situations the server tool may choose to create client private process variables that are not shared between clients. In this situation there might be several process variables with the same name. One for each client. For example, a server tool might be written that provides access to archival storage of the historic values of a set of process variables. Each client would specify its date of interest by writing into a client private process variable. Next the client would determine the current value of its subset of named process variables at its privately specified date by attaching to additional client private process variables.
        Specified by:
        processVariableAttach in interface Server
        Parameters:
        aliasName - the process variable alias name.
        eventCallback - the process variable event callback (where PV reports value changes if interest is true).
        asyncCompletionCallback - if asynchronous completion is required method should return null and call ProcessVariableExistanceCompletionCallback.processVariableAttachCompleted() method.
        Returns:
        requested ProcessVariable instance, null if operation is to be done asynchronously or exception is thrown in case of an error (non-existant PV, etc.).
        Throws:
        CAStatusException - is thrown if a Channel Access error occured while creating the channel.
        IllegalArgumentException - is thrown if the channel's name is null or empty.
        IllegalStateException - if the context has been destroyed.
        See Also:
        Server.processVariableAttach(java.lang.String, gov.aps.jca.cas.ProcessVariableEventCallback, gov.aps.jca.cas.ProcessVariableAttachCallback)