Files
pvAccess/src/rpcService/rpcService.cpp
2017-07-11 14:38:01 +02:00

36 lines
987 B
C++

/**
* Copyright - See the COPYRIGHT that is included with this distribution.
* pvAccessCPP is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
*/
#define epicsExportSharedSymbols
#include <pv/rpcService.h>
namespace pvd = epics::pvData;
namespace epics{namespace pvAccess{
void RPCService::request(
pvd::PVStructure::shared_pointer const & args,
RPCResponseCallback::shared_pointer const & callback)
{
assert(callback && args);
pvd::PVStructure::shared_pointer ret;
pvd::Status sts;
try {
ret = request(args);
}catch(RPCRequestException& e){
sts = e.asStatus();
throw;
}catch(std::exception& e){
sts = pvd::Status::error(e.what());
}
if(!ret) {
sts = pvd::Status(pvd::Status::STATUSTYPE_FATAL, "RPCService.request(PVStructure) returned null.");
}
callback->requestDone(sts, ret);
}
}} // namespace epics::pvAccess