pvAccessCPP  7.1.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Typedefs | Enumerations | Functions | Variables
epics::pvAccess Namespace Reference

Holds all PVA related. More...

Classes

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

Typedefs

typedef std::tr1::shared_ptr
< MonitorElement
MonitorElementPtr
 
typedef std::vector
< MonitorElementPtr > 
MonitorElementPtrArray
 
typedef std::tr1::shared_ptr
< Monitor
MonitorPtr
 
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
< Requester
RequesterPtr
 
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

ServerContext::shared_pointer startPVAServer (std::string const &providerNames=PVACCESS_ALL_PROVIDERS, int timeToRun=0, bool runInSeparateThread=false, bool printInfo=false)
 
void providerRegInit (void *)
 
Channel::shared_pointer createRPCChannel (ChannelProvider::shared_pointer const &provider, std::string const &channelName, ChannelRequester::shared_pointer const &channelRequester, RPCServiceAsync::shared_pointer const &rpcService)
 
std::ostreamoperator<< (std::ostream &strm, const HexDump &hex)
 
int discoverInterfaces (IfaceNodeVector &list, SOCKET socket, const osiSockAddr *pMatchAddr=0)
 
void encodeAsIPv6Address (epics::pvData::ByteBuffer *buffer, const osiSockAddr *address)
 Encode IPv4 address as IPv6 address. More...
 
bool decodeAsIPv6Address (epics::pvData::ByteBuffer *buffer, osiSockAddr *address)
 Decode IPv6 address (as IPv4 address). More...
 
bool isMulticastAddress (const osiSockAddr *address)
 Check if an IPv4 address is a multicast address. More...
 
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...
 
std::string inetAddressToString (const osiSockAddr &addr, bool displayPort=true, bool displayHex=false)
 
void pvAccessLog (pvAccessLogLevel level, const char *format,...)
 
void pvAccessSetLogLevel (pvAccessLogLevel level)
 
bool pvAccessIsLoggable (pvAccessLogLevel level)
 
std::string getMessageTypeName (MessageType messageType)
 
std::ostreamoperator<< (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 ()
 
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 = 1
 PVA protocol revision (implemented by this library). More...
 
const epics::pvData::int8 PVA_VERSION = 1
 PVA version signature used to report this implementation version in header. 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...
 
const std::string PVACCESS_DEFAULT_PROVIDER
 Default PVA provider name. More...
 
const std::string PVACCESS_ALL_PROVIDERS
 "All-providers registered" PVA provider name. More...
 
const std::string PVACCESS_DEBUG
 Name of the system env. More...
 

Detailed Description

Holds all PVA related.

Typedef Documentation

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

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.

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

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).
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.
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.
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.
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

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

Invalid data type.

Definition at line 76 of file pvaConstants.h.

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

Invalid IOID.

Definition at line 79 of file pvaConstants.h.

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

Unreasonable channel name length.

Definition at line 73 of file pvaConstants.h.

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.

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

TCP maximum receive message size.

Definition at line 64 of file pvaConstants.h.

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.

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.

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

Default PVA beacon port.

Definition at line 44 of file pvaConstants.h.

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

PVA protocol message header size.

Definition at line 47 of file pvaConstants.h.

const epics::pvData::int8 epics::pvAccess::PVA_PROTOCOL_REVISION = 1

PVA protocol revision (implemented by this library).

Definition at line 35 of file pvaConstants.h.

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

Default PVA server port.

Definition at line 41 of file pvaConstants.h.

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

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

Definition at line 38 of file pvaConstants.h.

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

"All-providers registered" PVA provider name.

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

Name of the system env.

variable to turn on debugging.

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

Default PVA provider name.