This is Unofficial EPICS BASE Doxygen Site
epics::pvAccess::ca::CAClientFactory Class Reference

CAClientFactory is a channel provider for the ca network provider. More...

#include "caProvider.h"

Static Public Member Functions

static void start ()
 start provider ca More...
 
static void stop ()
 stop provider ca More...
 

Detailed Description

CAClientFactory is a channel provider for the ca network provider.

A single instance is created the first time CAClientFactory::start is called. epicsAtExit is used to destroy the instance.

The single instance calls: ca_context_create(ca_enable_preemptive_callback);

The thread that calls start, or a ca auxillary thread, are the only threads that can call the ca_* functions.

NOTE: callbacks for monitor, get, and put are made from a separate thread. This is done to prevent a deadly embrace that can occur when rapid gets, puts, and monitor events are happening. The callbacks should not call any pvAccess method. If any such call is made the separate thread becomes a ca auxillary thread.

Definition at line 41 of file caProvider.h.

Member Function Documentation

void epics::pvAccess::ca::CAClientFactory::start ( )
static

start provider ca

Definition at line 201 of file caProvider.cpp.

202 {
203  if(DEBUG_LEVEL>0) std::cout << "CAClientFactory::start()\n";
204  if(ChannelProviderRegistry::clients()->getProvider("ca")) {
205  return;
206  }
209  if(!ChannelProviderRegistry::clients()->add<CAChannelProvider>("ca", true))
210  {
211  throw std::runtime_error("CAClientFactory::start failed");
212  }
213 }
#define DEBUG_LEVEL
Definition: caProviderPvt.h:25
LIBCOM_API void epicsStdCall epicsSignalInstallSigPipeIgnore(void)
Definition: osdSignal.cpp:17
static ChannelProviderRegistry::shared_pointer clients()
LIBCOM_API void epicsStdCall epicsSignalInstallSigAlarmIgnore(void)
Definition: osdSignal.cpp:18
void epics::pvAccess::ca::CAClientFactory::stop ( )
static

stop provider ca

This does nothing since epicsAtExit is used to destroy the instance.

Definition at line 215 of file caProvider.cpp.

216 {
217  // unregister now done with exit hook
218 }

The documentation for this class was generated from the following files: