Handle response.
730 transport, version, command, payloadSize, payloadBuffer);
733 transport->ensureData((
sizeof(
int32)+
sizeof(
int16))/
sizeof(
int8));
742 if (channelName.size() == 0)
744 LOG(
logLevelDebug,
"Zero length channel name, disconnecting client: %s", transport->getRemoteName().c_str());
745 disconnect(transport);
750 LOG(
logLevelDebug,
"Unreasonable channel name length, disconnecting client: %s", transport->getRemoteName().c_str());
751 disconnect(transport);
755 if (channelName == SERVER_CHANNEL_NAME)
758 ServerRPCService::shared_pointer serverRPCService(
new ServerRPCService(
_context));
762 ChannelRequester::shared_pointer cr = tp;
763 Channel::shared_pointer serverChannel =
createRPCChannel(ChannelProvider::shared_pointer(), channelName, cr, serverRPCService);
764 cr->channelCreated(
Status::Ok, serverChannel);
768 const std::vector<ChannelProvider::shared_pointer>& _providers(
_context->getChannelProviders());
769 ServerContextImpl::s_channelNameToProvider_t::const_iterator it;
771 if (_providers.size() == 1)
774 ChannelProvider::shared_pointer prov;
777 if((it =
_context->s_channelNameToProvider.find(channelName)) !=
_context->s_channelNameToProvider.end())
778 prov = it->second.lock();
static std::string deserializeString(ByteBuffer *buffer, DeserializableControl *control)
virtual void handleResponse(osiSockAddr *responseFrom, Transport::shared_pointer const &transport, epics::pvData::int8 version, epics::pvData::int8 command, std::size_t payloadSize, epics::pvData::ByteBuffer *payloadBuffer)
A lock for multithreading.
EPICS_ALWAYS_INLINE int32 getInt()
#define LOG(level, format,...)
epicsShareFunc Channel::shared_pointer createRPCChannel(ChannelProvider::shared_pointer const &provider, std::string const &channelName, ChannelRequester::shared_pointer const &channelRequester, RPCServiceAsync::shared_pointer const &rpcService)
EPICS_ALWAYS_INLINE int16 getShort()
#define THROW_BASE_EXCEPTION(msg)
ServerContextImpl::shared_pointer _context
static ChannelRequester::shared_pointer create(ChannelProvider::shared_pointer const &provider, Transport::shared_pointer const &transport, const std::string channelName, const pvAccessID cid)
const epics::pvData::uint32 MAX_CHANNEL_NAME_LENGTH