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

Serves (only) RPCServiceAsync and RPCService instances. More...

#include "rpcServer.h"

+ Inheritance diagram for epics::pvAccess::RPCServer:
+ Collaboration diagram for epics::pvAccess::RPCServer:

Public Member Functions

 POINTER_DEFINITIONS (RPCServer)
 
 RPCServer (const Configuration::const_shared_pointer &conf=Configuration::const_shared_pointer())
 
virtual ~RPCServer ()
 
void registerService (std::string const &serviceName, RPCServiceAsync::shared_pointer const &service)
 
void unregisterService (std::string const &serviceName)
 
void run (int seconds=0)
 
void runInNewThread (int seconds=0)
 
void destroy ()
 
void printInfo ()
 
const std::tr1::shared_ptr< ServerContext > & getServer () const
 

Detailed Description

Serves (only) RPCServiceAsync and RPCService instances.

Definition at line 35 of file rpcServer.h.

Constructor & Destructor Documentation

epics::pvAccess::RPCServer::RPCServer ( const Configuration::const_shared_pointer &  conf = Configuration::const_shared_pointer())
explicit

Definition at line 420 of file rpcServer.cpp.

421  :m_channelProviderImpl(new RPCChannelProvider)
422 {
423  m_serverContext = ServerContext::create(ServerContext::Config()
424  .config(conf)
425  .provider(m_channelProviderImpl));
426 }
static ServerContext::shared_pointer create(const Config &conf=Config())
epics::pvAccess::RPCServer::~RPCServer ( )
virtual

Definition at line 428 of file rpcServer.cpp.

429 {
430  // multiple destroy call is OK
431  destroy();
432 }

Member Function Documentation

void epics::pvAccess::RPCServer::destroy ( )

Definition at line 476 of file rpcServer.cpp.

477 {
478  m_serverContext->shutdown();
479 }
const std::tr1::shared_ptr<ServerContext>& epics::pvAccess::RPCServer::getServer ( ) const
inline

Definition at line 67 of file rpcServer.h.

67 { return m_serverContext; }
epics::pvAccess::RPCServer::POINTER_DEFINITIONS ( RPCServer  )
void epics::pvAccess::RPCServer::printInfo ( )

Display basic information about the context.

Definition at line 434 of file rpcServer.cpp.

435 {
436  std::cout << m_serverContext->getVersion().getVersionString() << std::endl;
437  m_serverContext->printInfo();
438 }
void epics::pvAccess::RPCServer::registerService ( std::string const &  serviceName,
RPCServiceAsync::shared_pointer const &  service 
)

Definition at line 481 of file rpcServer.cpp.

482 {
483  m_channelProviderImpl->registerService(serviceName, service);
484 }
void epics::pvAccess::RPCServer::run ( int  seconds = 0)

Definition at line 440 of file rpcServer.cpp.

441 {
442  m_serverContext->run(seconds);
443 }
void epics::pvAccess::RPCServer::runInNewThread ( int  seconds = 0)

Method requires usage of std::tr1::shared_ptr<RPCServer>. This instance must be owned by a shared_ptr instance.

Definition at line 461 of file rpcServer.cpp.

462 {
463  epics::auto_ptr<ThreadRunnerParam> param(new ThreadRunnerParam());
464  param->server = shared_from_this();
465  param->timeToRun = seconds;
466 
467  epicsThreadCreate("RPCServer thread",
470  threadRunner, param.get());
471 
472  // let the thread delete 'param'
473  param.release();
474 }
#define epicsThreadPriorityMedium
Definition: epicsThread.h:76
LIBCOM_API unsigned int epicsStdCall epicsThreadGetStackSize(epicsThreadStackSizeClass size)
Definition: osdThread.c:466
epicsThreadId epicsStdCall epicsThreadCreate(const char *name, unsigned int priority, unsigned int stackSize, EPICSTHREADFUNC funptr, void *parm)
Definition: epicsThread.cpp:33
void epics::pvAccess::RPCServer::unregisterService ( std::string const &  serviceName)

Definition at line 486 of file rpcServer.cpp.

487 {
488  m_channelProviderImpl->unregisterService(serviceName);
489 }

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