43 pva::ServerContext::shared_pointer the_server;
60 if(names && names[0]!=
'\0') {
61 printf(
"Warning: startPVAServer() no longer accepts provider list as argument.\n" 62 " Instead place the following before calling startPVAServer() and iocInit()\n" 63 " epicsEnvSet(\"EPICS_PVAS_PROVIDER_NAMES\", \"%s\")\n",
68 std::cout<<
"PVA server already running\n";
72 }
catch(std::exception& e){
73 std::cout<<
"Error: "<<e.what()<<
"\n";
82 std::cout<<
"PVA server not running\n";
86 }
catch(std::exception& e){
87 std::cout<<
"Error: "<<e.what()<<
"\n";
94 pva::ServerContext::shared_pointer serv;
100 std::cout<<
"PVA server not running\n";
102 serv->printInfo(lvl);
105 }
catch(std::exception& e){
106 std::cout<<
"Error: "<<e.what()<<std::endl;
113 const std::string
pname;
115 DummyLister(
const std::string& pname,
int lvl) :pname(pname), lvl(lvl) {}
116 virtual ~DummyLister() {}
121 const pva::ChannelFind::shared_pointer &channelFind,
126 printf(
"#Provider: \"%s\"%s\n", pname.c_str(), hasDynamic ?
" dynamic" :
"");
129 for(
size_t i=0, N=channelNames.size();
i<N;
i++)
130 printf(
"%s\n", channelNames[
i].c_str());
138 pva::ServerContext::shared_pointer serv;
144 std::cout<<
"PVA server not running\n";
146 const std::vector<pva::ChannelProvider::shared_pointer>& providers = serv->getChannelProviders();
148 for(
size_t p=0, P=providers.size(); p<P; p++)
150 std::tr1::shared_ptr<DummyLister> lister(
new DummyLister(providers[p]->getProviderName(), lvl));
151 (void)providers[p]->channelList(lister);
155 }
catch(std::exception& e){
156 std::cout<<
"Error: "<<e.what()<<std::endl;
160 void pva_server_cleanup(
void *)
177 void registerStartPVAServer(
void)
179 epics::iocshRegister<const char*, &startPVAServer>(
"startPVAServer",
"provider names");
180 epics::iocshRegister<&stopPVAServer>(
"stopPVAServer");
181 epics::iocshRegister<int, &pvasr>(
"pvasr",
"detail");
182 epics::iocshRegister<int, &pval>(
"pval",
"detail");
A lock for multithreading.
const std::string & getMessage() const
APIs for the epicsMutex mutual exclusion semaphore.
Extended replacement for the Posix exit and atexit routines.
APIs for the epicsEvent binary semaphore.
int initHookRegister(initHookFunction func)
epicsShareFunc ServerContext::shared_pointer startPVAServer(std::string const &providerNames=PVACCESS_ALL_PROVIDERS, int timeToRun=0, bool runInSeparateThread=false, bool printInfo=false)
static ServerContext::shared_pointer create(const Config &conf=Config())
Routines for code that can't continue or return after an error.
epicsShareExtern const std::string PVACCESS_ALL_PROVIDERS
epicsExportRegistrar(registerStartPVAServer)
#define epicsAtExit(F, A)
Convenience macro to register a function and context value to be run when the process exits...
C++ and C descriptions for a thread.
::epics::pvData::shared_vector< const T > const_svector