pvAccessCPP  7.1.7-dev
Classes | Typedefs | Enumerations | Functions | Variables
epics::pvAccess Namespace Reference

Holds all PVA related. More...

Classes

class  AuthenticationPlugin
 Actor through which authentication exchanges are initiated. More...
 
class  AuthenticationPluginControl
 Callbacks for use by AuthenticationSession. More...
 
class  AuthenticationRegistry
 Registry(s) for plugins. More...
 
class  AuthenticationSession
 A particular authentication exchange. More...
 
class  AuthorizationPlugin
 I modify PeerInfo after authentication is complete. More...
 
class  BeaconEmitter
 BeaconEmitter. More...
 
class  BeaconHandler
 BeaconHandler. More...
 
class  BeaconServerStatusProvider
 BeaconServerStatusProvider. More...
 
class  BlockingTCPAcceptor
 Channel Access Server TCP acceptor. More...
 
class  BlockingTCPConnector
 Channel Access TCP connector. More...
 
class  Channel
 The interface through which Operations (get, put, monitor, ...) are initiated. More...
 
class  ChannelArray
 Request to put and get Array Data. More...
 
class  ChannelArrayRequester
 The Requester for a ChannelArray. More...
 
struct  ChannelBaseRequester
 Base for all Requesters (callbacks to client) More...
 
class  ChannelGet
 Request to get data from a channel. More...
 
class  ChannelGetRequester
 Requester for channelGet. More...
 
class  ChannelProcess
 ChannelProcess - request that a channel be processed. More...
 
class  ChannelProcessRequester
 Requester for channelProcess. More...
 
class  ChannelProvider
 An instance of a Client or Server. More...
 
class  ChannelProviderFactory
 ChanneProvider factory interface. More...
 
class  ChannelProviderRegistry
 Interface for locating channel providers. More...
 
class  ChannelPut
 Interface for a channel access put request. More...
 
class  ChannelPutGet
 Channel access put/get request. More...
 
class  ChannelPutGetRequester
 Requester for ChannelPutGet. More...
 
class  ChannelPutRequester
 Requester for ChannelPut. More...
 
class  ChannelRequest
 Base interface for all channel requests (aka. More...
 
class  ChannelRequester
 Event notifications associated with Channel life-cycle. More...
 
class  ChannelRPC
 Handle for an RPC operation. More...
 
class  ChannelRPCRequester
 Notifications associated with Channel::createChannelRPC() More...
 
class  Configuration
 Configuration. More...
 
class  ConfigurationEnviron
 Lookup configuration strings from the process environment. More...
 
class  ConfigurationFactory
 Configuration factory. More...
 
class  ConfigurationMap
 Lookup configuration strings from an in memory store. More...
 
class  ConfigurationProvider
 Configuration provider. More...
 
class  ConfigurationStack
 Lookup configuration strings from a heap of sub-Configurations. More...
 
class  Context
 Not public IF, used by Transports, etc. More...
 
class  DefaultBeaconServerStatusProvider
 DefaultBeaconServerStatusProvider. More...
 
struct  DefaultChannelRequester
 Used when ChannelProvider::createChannel() is passed a NULL ChannelRequester. More...
 
class  Destroyable
 Instance declaring destroy method. More...
 
class  GetFieldRequester
 Completion notification for Channel::getField() More...
 
class  IntrospectionRegistry
 PVData Structure registry. More...
 
class  Monitor
 Access to Monitor subscription and queue. More...
 
class  MonitorElement
 An element for a monitorQueue. More...
 
class  MonitorFIFO
 Utility implementation of Monitor. More...
 
class  MonitorRequester
 Callback implemented by monitor clients. More...
 
struct  NetStats
 Expose statistics related to network transport. More...
 
struct  PeerInfo
 Information provded by a client to a server-type ChannelProvider. More...
 
class  ReferenceCountingLock
 Reference counting mutex implementation w/ deadlock detection. More...
 
class  Requester
 Callback class for passing messages to a requester. More...
 
class  ResponseHandler
 Interface defining response handler. More...
 
class  ResponseRequest
 A request that expects an response. More...
 
class  RPCClient
 RPCClient is an interface class that is used by a service client. More...
 
class  RPCServer
 Serves (only) RPCServiceAsync and RPCService instances. More...
 
class  ScopedLock
 Scope lock. More...
 
class  ServerArrayHandler
 Array request handler. More...
 
class  ServerBadResponse
 Bad request handler. More...
 
class  ServerCancelRequestHandler
 Cancel request handler. More...
 
class  ServerConnectionValidationHandler
 Connection validation message handler. More...
 
class  ServerContext
 The class representing a PVA Server context. More...
 
class  ServerCreateChannelHandler
 Create channel request handler. More...
 
class  ServerDestroyChannelHandler
 Destroy channel request handler. More...
 
class  ServerDestroyRequestHandler
 Destroy request handler. More...
 
class  ServerEchoHandler
 Echo request handler. More...
 
class  ServerGetFieldHandler
 Get field request handler. More...
 
class  ServerGetHandler
 Get request handler. More...
 
struct  ServerGUID
 Globally unique ID. More...
 
class  ServerMonitorHandler
 Monitor request handler. More...
 
class  ServerNoopResponse
 NOOP response. More...
 
class  ServerProcessHandler
 Process request handler. More...
 
class  ServerPutGetHandler
 Put request handler. More...
 
class  ServerPutHandler
 Put request handler. More...
 
class  ServerResponseHandler
 PVAS request handler - main handler which dispatches requests to appropriate handlers. More...
 
class  ServerRPCHandler
 RPC handler. More...
 
class  ServerSearchHandler
 Search channel request handler. More...
 
struct  SimpleChannelProviderFactory
 Simple ChannelProviderFactory which requires the existance of a ctor Provider(const std::tr1::shared_ptr<Configuration>& conf) which is called with a Configuration instance or NULL (use some defaults) More...
 
struct  SingletonChannelProviderFactory
 Helper for ChannelProviders which access a singleton resource (eg. More...
 
class  Transport
 Interface defining transport (connection). More...
 
class  TransportSendControl
 Interface defining transport send control. More...
 
class  TransportSender
 Interface defining transport sender (instance sending data over transport). More...
 
class  Wildcard
 Class which implements wildcard patterns and checks to see if a string matches a given pattern. More...
 

Typedefs

typedef std::tr1::shared_ptr< MonitorElementMonitorElementPtr
 
typedef std::vector< MonitorElementPtr > MonitorElementPtrArray
 
typedef std::tr1::shared_ptr< MonitorMonitorPtr
 
typedef Monitor PipelineMonitor
 Pipeline (streaming) support API (optional). More...
 
typedef ConfigurationEnviron SystemConfigurationImpl
 
typedef std::vector< osiSockAddr > InetAddrVector
 
typedef std::vector< ifaceNode > IfaceNodeVector
 
typedef std::map< const short, epics::pvData::FieldConstPtr > registryMap_t
 
typedef std::tr1::shared_ptr< RequesterRequesterPtr
 
typedef epicsInt32 pvAccessID
 
typedef std::vector< BlockingUDPTransport::shared_pointer > BlockingUDPTransportVector
 

Enumerations

enum  AccessRights { none, read, readWrite }
 
enum  FlushStrategy { IMMEDIATE, DELAYED, USER_CONTROLED }
 The FlushStrategy enum.
 
enum  pvAccessLogLevel {
  logLevelAll = 0, logLevelTrace, logLevelDebug, logLevelInfo,
  logLevelWarn, logLevelError, logLevelFatal, logLevelOff
}
 
enum  MessageType { infoMessage, warningMessage, errorMessage, fatalErrorMessage }
 
enum  InetAddressType { inetAddressType_all, inetAddressType_unicast, inetAddressType_broadcast_multicast }
 
enum  QoS {
  QOS_DEFAULT = 0x00, QOS_REPLY_REQUIRED = 0x01, QOS_BESY_EFFORT = 0x02, QOS_PROCESS = 0x04,
  QOS_INIT = 0x08, QOS_DESTROY = 0x10, QOS_SHARE = 0x20, QOS_GET = 0x40,
  QOS_GET_PUT = 0x80
}
 
enum  ApplicationCommands {
  CMD_BEACON = 0, CMD_CONNECTION_VALIDATION = 1, CMD_ECHO = 2, CMD_SEARCH = 3,
  CMD_SEARCH_RESPONSE = 4, CMD_AUTHNZ = 5, CMD_ACL_CHANGE = 6, CMD_CREATE_CHANNEL = 7,
  CMD_DESTROY_CHANNEL = 8, CMD_CONNECTION_VALIDATED = 9, CMD_GET = 10, CMD_PUT = 11,
  CMD_PUT_GET = 12, CMD_MONITOR = 13, CMD_ARRAY = 14, CMD_DESTROY_REQUEST = 15,
  CMD_PROCESS = 16, CMD_GET_FIELD = 17, CMD_MESSAGE = 18, CMD_MULTIPLE_DATA = 19,
  CMD_RPC = 20, CMD_CANCEL_REQUEST = 21, CMD_ORIGIN_TAG = 22
}
 
enum  ControlCommands { CMD_SET_MARKER = 0, CMD_ACK_MARKER = 1, CMD_SET_ENDIANESS = 2 }
 

Functions

epicsShareFunc ServerContext::shared_pointer startPVAServer (std::string const &providerNames=PVACCESS_ALL_PROVIDERS, int timeToRun=0, bool runInSeparateThread=false, bool printInfo=false)
 
void providerRegInit (void *)
 
epicsShareFunc Channel::shared_pointer createRPCChannel (ChannelProvider::shared_pointer const &provider, std::string const &channelName, ChannelRequester::shared_pointer const &channelRequester, RPCServiceAsync::shared_pointer const &rpcService)
 
epicsShareFunc std::ostream & operator<< (std::ostream &strm, const HexDump &hex)
 
epicsShareFunc int discoverInterfaces (IfaceNodeVector &list, SOCKET socket, const osiSockAddr *pMatchAddr=0)
 
epicsShareFunc void encodeAsIPv6Address (epics::pvData::ByteBuffer *buffer, const osiSockAddr *address)
 Encode IPv4 address as IPv6 address. More...
 
epicsShareFunc bool decodeAsIPv6Address (epics::pvData::ByteBuffer *buffer, osiSockAddr *address)
 Decode IPv6 address (as IPv4 address). More...
 
epicsShareFunc bool isMulticastAddress (const osiSockAddr *address)
 Check if an IPv4 address is a multicast address. More...
 
epicsShareFunc void getSocketAddressList (InetAddrVector &ret, const std::string &list, int defaultPort, const InetAddrVector *appendList=NULL)
 Parse space delimited addresss[:port] string and populate array of InetSocketAddress. More...
 
epicsShareFunc std::string inetAddressToString (const osiSockAddr &addr, bool displayPort=true, bool displayHex=false)
 
epicsShareFunc void pvAccessLog (pvAccessLogLevel level, const char *format,...) EPICS_PRINTF_STYLE(2
 
epicsShareFunc void epicsShareFunc void pvAccessSetLogLevel (pvAccessLogLevel level)
 
epicsShareFunc bool pvAccessIsLoggable (pvAccessLogLevel level)
 
epicsShareExtern std::string getMessageTypeName (MessageType messageType)
 
epicsShareFunc std::ostream & operator<< (std::ostream &o, const Version &v)
 
void initializeUDPTransports (bool serverFlag, BlockingUDPTransportVector &udpTransports, const IfaceNodeVector &ifaceList, const ResponseHandler::shared_pointer &responseHandler, BlockingUDPTransport::shared_pointer &sendTransport, epics::pvData::int32 &listenPort, bool autoAddressList, const std::string &addressList, const std::string &ignoreAddressList)
 
void hackAroundRTEMSSocketInterrupt ()
 
epicsShareFunc void osdGetRoles (const std::string &account, PeerInfo::roles_t &roles)
 Query OS specific DB for role/group names assocated with a user account. More...
 

Variables

const epics::pvData::int8 PVA_MAGIC = static_cast<epics::pvData::int8>(0xCA)
 PVA protocol magic number.
 
const epics::pvData::int8 PVA_SERVER_PROTOCOL_REVISION = 2
 
const epics::pvData::int8 PVA_CLIENT_PROTOCOL_REVISION = 2
 
const epics::pvData::int8 PVA_PROTOCOL_REVISION EPICS_DEPRECATED = 1
 PVA protocol revision (implemented by this library). More...
 
const epics::pvData::int32 PVA_SERVER_PORT = 5075
 Default PVA server port. More...
 
const epics::pvData::int32 PVA_BROADCAST_PORT = 5076
 Default PVA beacon port. More...
 
const epics::pvData::int16 PVA_MESSAGE_HEADER_SIZE = 8
 PVA protocol message header size. More...
 
const epics::pvData::int32 MAX_UDP_UNFRAGMENTED_SEND = 1440
 UDP maximum send message size. More...
 
const epics::pvData::int32 MAX_UDP_RECV = 65487
 UDP maximum receive message size. More...
 
const epics::pvData::int32 MAX_TCP_RECV = 1024*16
 TCP maximum receive message size. More...
 
const epics::pvData::int32 MAX_SEARCH_BATCH_COUNT = 0x7FFF
 Maximum number of search requests in one search message. More...
 
const epics::pvData::int16 PVA_DEFAULT_PRIORITY = 0
 Default priority (corresponds to POSIX SCHED_OTHER)
 
const epics::pvData::uint32 MAX_CHANNEL_NAME_LENGTH = 500
 Unreasonable channel name length. More...
 
const epics::pvData::int16 INVALID_DATA_TYPE = 0xFFFF
 Invalid data type. More...
 
const epics::pvData::int32 INVALID_IOID = 0
 Invalid IOID. More...
 
epicsShareExtern const std::string PVACCESS_DEFAULT_PROVIDER
 Default PVA provider name. More...
 
epicsShareExtern const std::string PVACCESS_ALL_PROVIDERS
 "All-providers registered" PVA provider name. More...
 
epicsShareExtern const std::string PVACCESS_DEBUG
 Name of the system env. More...
 

Detailed Description

Holds all PVA related.

Typedef Documentation

◆ PipelineMonitor

Pipeline (streaming) support API (optional).

This is used by pvAccess to implement pipeline (streaming) monitors.

Definition at line 1563 of file pvAccess.h.

Enumeration Type Documentation

◆ AccessRights

Enumerator
none 

Neither read or write access is allowed.

read 

Read access is allowed but write access is not allowed.

readWrite 

Both read and write access are allowed.

Definition at line 71 of file pvAccess.h.

◆ QoS

Enumerator
QOS_DEFAULT 

Default behavior.

QOS_REPLY_REQUIRED 

Require reply (acknowledgment for reliable operation).

QOS_BESY_EFFORT 

Best-effort option (no reply).

QOS_PROCESS 

Process option.

QOS_INIT 

Initialize option.

QOS_DESTROY 

Destroy option.

QOS_SHARE 

Share data option.

QOS_GET 

Get.

QOS_GET_PUT 

Get-put.

Definition at line 46 of file remote.h.

Function Documentation

◆ decodeAsIPv6Address()

epicsShareFunc bool epics::pvAccess::decodeAsIPv6Address ( epics::pvData::ByteBuffer *  buffer,
osiSockAddr *  address 
)

Decode IPv6 address (as IPv4 address).

Parameters
bufferbyte-buffer where to get encoded data.
addressaddress where to decode.
Returns
success status (true on success).

◆ encodeAsIPv6Address()

epicsShareFunc void epics::pvAccess::encodeAsIPv6Address ( epics::pvData::ByteBuffer *  buffer,
const osiSockAddr *  address 
)

Encode IPv4 address as IPv6 address.

Parameters
bufferbyte-buffer where to put encoded data.
addressaddress to encode.

◆ getSocketAddressList()

epicsShareFunc void epics::pvAccess::getSocketAddressList ( InetAddrVector &  ret,
const std::string &  list,
int  defaultPort,
const InetAddrVector *  appendList = NULL 
)

Parse space delimited addresss[:port] string and populate array of InetSocketAddress.

Parameters
retresults stored hre
listspace delimited addresss[:port] string.
defaultPortport take if not specified.
appendListlist to be appended.
Returns
array of InetSocketAddress.

◆ isMulticastAddress()

epicsShareFunc bool epics::pvAccess::isMulticastAddress ( const osiSockAddr *  address)

Check if an IPv4 address is a multicast address.

Parameters
addressIPv4 address to check.
Returns
true if the adress is a multicast address.

◆ osdGetRoles()

epicsShareFunc void epics::pvAccess::osdGetRoles ( const std::string &  account,
PeerInfo::roles_t &  roles 
)

Query OS specific DB for role/group names assocated with a user account.

Parameters
accountUser name
rolesRole names are added to this set. Existing names are not removed.

Variable Documentation

◆ EPICS_DEPRECATED

const epics::pvData::int8 PVA_VERSION epics::pvAccess::EPICS_DEPRECATED = 1

PVA protocol revision (implemented by this library).

PVA version signature used to report this implementation version in header.

Definition at line 35 of file pvaConstants.h.

◆ INVALID_DATA_TYPE

const epics::pvData::int16 epics::pvAccess::INVALID_DATA_TYPE = 0xFFFF

Invalid data type.

Definition at line 76 of file pvaConstants.h.

◆ INVALID_IOID

const epics::pvData::int32 epics::pvAccess::INVALID_IOID = 0

Invalid IOID.

Definition at line 79 of file pvaConstants.h.

◆ MAX_CHANNEL_NAME_LENGTH

const epics::pvData::uint32 epics::pvAccess::MAX_CHANNEL_NAME_LENGTH = 500

Unreasonable channel name length.

Definition at line 73 of file pvaConstants.h.

◆ MAX_SEARCH_BATCH_COUNT

const epics::pvData::int32 epics::pvAccess::MAX_SEARCH_BATCH_COUNT = 0x7FFF

Maximum number of search requests in one search message.

Definition at line 67 of file pvaConstants.h.

◆ MAX_TCP_RECV

const epics::pvData::int32 epics::pvAccess::MAX_TCP_RECV = 1024*16

TCP maximum receive message size.

Definition at line 64 of file pvaConstants.h.

◆ MAX_UDP_RECV

const epics::pvData::int32 epics::pvAccess::MAX_UDP_RECV = 65487

UDP maximum receive message size.

MAX_UDP: 65535 (max UDP packet size) - 20/40(IPv4/IPv6) - 8(UDP)

Definition at line 61 of file pvaConstants.h.

◆ MAX_UDP_UNFRAGMENTED_SEND

const epics::pvData::int32 epics::pvAccess::MAX_UDP_UNFRAGMENTED_SEND = 1440

UDP maximum send message size.

MAX_UDP: 1500 (max of ethernet and 802.{2,3} MTU) - 20/40(IPv4/IPv6)

  • 8(UDP) - some reserve (the MTU of Ethernet is currently independent of its speed variant)

Definition at line 55 of file pvaConstants.h.

◆ PVA_BROADCAST_PORT

const epics::pvData::int32 epics::pvAccess::PVA_BROADCAST_PORT = 5076

Default PVA beacon port.

Definition at line 44 of file pvaConstants.h.

◆ PVA_MESSAGE_HEADER_SIZE

const epics::pvData::int16 epics::pvAccess::PVA_MESSAGE_HEADER_SIZE = 8

PVA protocol message header size.

Definition at line 47 of file pvaConstants.h.

◆ PVA_SERVER_PORT

const epics::pvData::int32 epics::pvAccess::PVA_SERVER_PORT = 5075

Default PVA server port.

Definition at line 41 of file pvaConstants.h.

◆ PVACCESS_ALL_PROVIDERS

epicsShareExtern const std::string epics::pvAccess::PVACCESS_ALL_PROVIDERS

"All-providers registered" PVA provider name.

Definition at line 85 of file pvaConstants.h.

◆ PVACCESS_DEBUG

epicsShareExtern const std::string epics::pvAccess::PVACCESS_DEBUG

Name of the system env.

variable to turn on debugging.

Definition at line 88 of file pvaConstants.h.

◆ PVACCESS_DEFAULT_PROVIDER

epicsShareExtern const std::string epics::pvAccess::PVACCESS_DEFAULT_PROVIDER

Default PVA provider name.

Definition at line 82 of file pvaConstants.h.