Intended audience: administrators, developers, Programming language: C++

Event Subscriber interface

More in detail the device server interface is summarized in table 1 and table 2.

Commands

AttributeAdd

add an attribute to archiving; the complete FQDN has to be specified otherwise it is completed by the using getaddrinfo()

AttributeContext

read the specified attribute current context

AttributePause

pause archiving specified attribute but do not unsubscribe archive event

AttributeRemove

remove an attribute from archiving; the archived data and the attribute archive event configuration are left untouched

AttributeStatus

read attribute status

AttributeStart

start archiving specified attribute

AttributeStop

stop archiving specified attribute, unsubscribe archive event

AttributeUpdate

update context of an already archived attribute

Pause

pause archiving all attributes but do not unsubscribe archive events

Start

start archiving

Stop

stop archiving, usubscribe all archive events

ResetStatistics

reset statistics

Table 1: Event Subscriber Command.

Attributes

AttributeContextList

return the list of attribute contexts

AttributeErrorList

return the list of attribute errors

AttributeEventNumberList

number of events received for each attribute

AttributeFailureFreq

total number of failures per time

AttributeFailureFreqList

per-attribute number of failures per time

AttributeList

return configured attribute list

AttributeMaxPendingNumber

maximum number of attributes waiting to be archived

AttributeMaxProcessingTime

max processing time

AttributeMaxStoreTime

max storing time

AttributeMinProcessingTime

min processing time

AttributeMinStoreTime

min storing time

AttributeNokList

return the list of attribute in error

AttributeNokNumber

number of archived attribute in error

AttributeNumber

number of attributes configured for archiving

AttributeOkList

return the list of attributes not in error

AttributeOkNumber

number of archived attributes not in error

AttributePausedList

list of paused attributes

AttributePausedNumber

number of paused attributes

AttributePendingList

list of attributes waiting to be archived

AttributePendingNumber

number of attributes waiting to be archived

AttributeRecordFreq

total number of records per time

AttributeRecordFreqList

per-attribute number of records per time

AttributeStartedList

list of started attributes

AttributeStartedNumber

number of started attributes

AttributeStoppedList

list of stopped attributes

AttributeStoppedNumber

number of stopped attributes

Context

archiver current context (r/w)

StatisticsResetTime

seconds elapsed since last statistics reset

Table 2: Event Subscriber Attributes.

The class and device properties availabile for configuration are shown in table 3. According to TANGO device server design guidelines, Device Properties, when defined, override Class properties. Please note that class and device Properties have changed since release of the TANGO device server.

Class properties

CheckPeriodicTimeoutDelay

delay before timeout when checking periodic events, in seconds

PollingThreadPeriod

default period for polling thread, in seconds

LibConfiguration

configuration parameters for backend support library

ContextsList

definition of possible archiver operating contexts

DefaultStrategy

default context for a new attribute (Default to RUN)

StatisticsTimeWindow

timeslot for statistics in seconds

SubscribeRetryPeriod

retry period for subscribe event, in seconds

Table 3: Event Subscriber Class properties.

The LibConfiguration property contains the following multi-line configuration parameters host, user, password, dbname, libname, port. Table shows example configuration parameters for backend:

host=srv-log-srf.fcs.elettra.trieste.it

user=hdbarchiver

password=myownpassword

dbname=hdbpp

libname=dependOnDatabase (see below)

port=3306

Table 4: LibConfiguration parameters for database.

Note

The event subscriber can be built directly against a specific backend or the dynamic libhdbpp. In case of direct linking, this information is not relevant.

libname should be set to one of the following values:

libname=libhdb++mysql.so if you intend to use HDB++ with the MySQL backend libname=libhdbmysql.so if you intend to use HDB++ with the MySQL Legacy backend libname=libhdb++cassandra.so if you intend to use HDB++ with the Cassandra backend libname=libhdb++timescale.so if you intend to use HDB++ with the TimescaleDB backend

The library specified in LibConfiguration->libname is loaded dynamically by the EventSubscriber device (e.g. hdb++-es-srv). You need to have your LD_LIBRARY_PATH environment variable correctly set (including the directory where the library you intend to use is located).

libhdb++mysql and libhdb++cassandra are just implementations of the classes defined in libhdb++ library. The user can decide which implementation to use by specifying this LibConfiguration -> libname device property config parameter.

The device dynamically loads the configured library configured (using dlopen()) during the device initialization. See Database interface section for more information.

Device properties

AttributeList

list of configured attributes

CheckPeriodicTimeoutDelay

delay before timeout when checking periodic events, in seconds

PollingThreadPeriod

default period for polling thread, in seconds

LibConfiguration

configuration parameters for backend support library

ContextsList

definition of possible archiver operating contexts

DefaultStrategy

default context for a new attribute (Default to RUN)

StatisticsTimeWindow

timeslot for statistics

SubscribeRetryPeriod

retry period for subscribe event, in seconds

Table 5: Event Subscriber Device properties.

In addition to the already described Class properties, device Properties comprehend the AttributeList property which contains the list of attributes in charge of the current device. The syntax is fully-qualified-attribute-name;context=CONTEXT where CONTEXT can be one or a combination of the defined contexts (logic OR). Whenever not specified the DefaultContext specified in the Class property or in the Device Property applies. Table shows some examples:

1$ tango://srv-tango-srf.fcs.elettra.trieste.it:20000/eos/climate/18b20 eos.01/State;context=RUN|SHUTDOWN
2$ tango://srv-tango-srf.fcs.elettra.trieste.it:20000/eos/climate/18b20 eos.01/Temperature;context=RUN|SHUTDOWN
3$ tango://srv-tango-srf.fcs.elettra.trieste.it:20000/ctf/diagnostics/ccd_ctf.01/State;context=RUN
4$ tango://srv-tango-srf.fcs.elettra.trieste.it:20000/ctf/diagnostics/ccd_ctf.01/HorProfile;context=RUN
5$ tango://srv-tango-srf.fcs.elettra.trieste.it:20000/ctf/diagnostics/ccd_ctf.01/VerProfile;context=RUN

Table 6: AttributeList example

The first two attributes will be archived in both RUN and SHUTDOWN contexts; the last three only when in RUN.