/// /// \file cafeEnum.h /// \author Jan Chrin, PSI /// \date Release: February 2015 /// \version CAFE 1.0.0 /// #ifndef CAFEENUM_H #define CAFEENUM_H #include namespace CAFENUM { /** * Data request buffer types \n * i.e. whether PRIMITIVE, STS, TIME, GR or CTRL */ enum DBR_TYPE { DBR_PRIMITIVE, DBR_PLAIN=DBR_PRIMITIVE, DBR_STS, DBR_TIME, DBR_GR, DBR_CTRL, DBR_PUT, //DBR_PUT_ACKT and DBR_PUT_ACKS Write only - used from global alarm acknowledge. DBR_STSACK, // is DBR_STSACK_STRING DBR_CLASS, // is DBR_CLASS_NAME, DBR_NONE // should not occur, but used internally within cafeVectors.h }; /** * Define enum type to flush io after creating channels */ enum ChannelFlushSendBufferPolicyKind { WITH_FLUSH_IO, WITH_PEND_IO, // needs timeout duration WITH_PEND_EVENT, // needs timeout duration WITH_POLL }; /** * Define enum type defining when to flush io after creating channels */ enum ChannelWhenToFlushSendBufferPolicyKind { FLUSH_AUTOMATIC=0, FLUSH_NOW=FLUSH_AUTOMATIC, FLUSH_AFTER_EACH_CHANNEL_CREATION=FLUSH_NOW, // instantly FLUSH_AFTER_EACH_CHANNEL_SUBSCRIPTION=FLUSH_NOW, FLUSH_AFTER_EACH_MESSAGE=FLUSH_NOW, FLUSH_AFTER_EACH_GROUP_CREATION=FLUSH_NOW, FLUSH_DESIGNATED_TO_CLIENT // }; /** * Enum type defining ca server dispatch priority * Note that specifying different priorities within the same program * can increase resource consumption in thw client and server because * an independent virtual circuit, and associated data structures, is * created for each priority that is used on a particular server */ enum ChannelServerDispatchPriority { CA_SERVER_DISPATCH_PRIORITY_MIN =CA_PRIORITY_MIN, //0 CA_SERVER_DISPATCH_PRIORITY_VERYLOW =CA_PRIORITY_MIN+1, CA_SERVER_DISPATCH_PRIORITY_DEFAULT =CA_PRIORITY_MAX, //CA_SERVER_DISPATCH_PRIORITY_VERYLOW, //1 CA_SERVER_DISPATCH_PRIORITY_LOW =CA_PRIORITY_MIN+25, CA_SERVER_DISPATCH_PRIORITY_MED =CA_PRIORITY_MIN+50, CA_SERVER_DISPATCH_PRIORITY_HIGH =CA_PRIORITY_MIN+75, CA_SERVER_DISPATCH_PRIORITY_VERYHIGH=CA_PRIORITY_MIN+98, CA_SERVER_DISPATCH_PRIORITY_MAX =CA_PRIORITY_MAX }; /** * Enum type defining the wait/nowait modes for cache operations. * Meant for use within callbacks to ensure that cache operations * are never blocked */ enum ChannelGetCacheWaitPolicyKind { GET_CACHE_NO_CHECK=0, GET_CACHE_NO_WAIT, GET_CACHE_NOW =GET_CACHE_NO_WAIT, GET_CACHE_WAIT }; /** * Enum type defining the modes for get operations when a * monitor is in place * */ enum ChannelGetActionWhenMonitorPolicyKind { GET_FROM_CACHE, GET_FROM_IOC }; /** * Enum type defining the blocking modes for ca operations. * Blocking can be achieved with or without callback. * Callback can further be supplied by the user */ enum ChannelRequestPolicyKind { WITHOUT_CALLBACK, WITH_CALLBACK_DEFAULT, WITH_CALLBACK_USER_SUPPLIED }; /** * Enum type defining level of datatype conversion at the IOC * */ enum ChannelRequestDataTypePolicyKind { NATIVE_DATATYPE, LOWEST_DATATYPE // The smaller in byte size of type requested and native datatype }; /** * Enum type defining whether to wait for a response * from a message sent with a callback, whether it be * user supplied or the CAFE default. */ enum ChannelWaitForResponsePolicyKind { BLOCKING=0, WAIT=BLOCKING, NON_BLOCKING=1, NO_WAIT=NON_BLOCKING }; enum StatusMessageKind { NO_MESSAGE, PRE_REQUEST, FROM_REQUEST, FROM_PEND, FROM_CALLBACK, FROM_MESSAGE }; enum CallbackProgressKind { NOT_INITIATED, PENDING, COMPLETE }; }; //namespace CAFENUM #endif // CAFEENUM_H