eliminate ChannelHostingTransport
an "interface" used once. Drop it and de-virtualize.
This commit is contained in:
@@ -493,7 +493,6 @@ private:
|
||||
|
||||
class BlockingServerTCPTransportCodec :
|
||||
public BlockingTCPTransportCodec,
|
||||
public ChannelHostingTransport,
|
||||
public TransportSender {
|
||||
|
||||
public:
|
||||
@@ -535,23 +534,21 @@ public:
|
||||
|
||||
virtual void changedTransport() OVERRIDE {}
|
||||
|
||||
virtual pvAccessID preallocateChannelSID() OVERRIDE FINAL;
|
||||
pvAccessID preallocateChannelSID();
|
||||
|
||||
virtual void depreallocateChannelSID(pvAccessID /*sid*/) OVERRIDE FINAL {
|
||||
// noop
|
||||
}
|
||||
void depreallocateChannelSID(pvAccessID /*sid*/) {}
|
||||
|
||||
virtual void registerChannel(
|
||||
void registerChannel(
|
||||
pvAccessID sid,
|
||||
ServerChannel::shared_pointer const & channel) OVERRIDE FINAL;
|
||||
ServerChannel::shared_pointer const & channel);
|
||||
|
||||
virtual void unregisterChannel(pvAccessID sid) OVERRIDE FINAL;
|
||||
void unregisterChannel(pvAccessID sid);
|
||||
|
||||
virtual ServerChannel::shared_pointer getChannel(pvAccessID sid) OVERRIDE FINAL;
|
||||
ServerChannel::shared_pointer getChannel(pvAccessID sid);
|
||||
|
||||
void getChannels(std::vector<ServerChannel::shared_pointer>& channels) const;
|
||||
|
||||
virtual size_t getChannelCount() const OVERRIDE FINAL;
|
||||
size_t getChannelCount() const;
|
||||
|
||||
virtual bool verify(epics::pvData::int32 timeoutMs) OVERRIDE FINAL {
|
||||
|
||||
|
||||
@@ -467,54 +467,6 @@ public:
|
||||
virtual void destroy() = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Interface defining a transport that hosts server channels.
|
||||
*/
|
||||
class ChannelHostingTransport {
|
||||
public:
|
||||
POINTER_DEFINITIONS(ChannelHostingTransport);
|
||||
|
||||
virtual ~ChannelHostingTransport() {}
|
||||
|
||||
/**
|
||||
* Preallocate new channel SID.
|
||||
* @return new channel server id (SID).
|
||||
*/
|
||||
virtual pvAccessID preallocateChannelSID() = 0;
|
||||
|
||||
/**
|
||||
* De-preallocate new channel SID.
|
||||
* @param sid preallocated channel SID.
|
||||
*/
|
||||
virtual void depreallocateChannelSID(pvAccessID sid) = 0;
|
||||
|
||||
/**
|
||||
* Register a new channel.
|
||||
* @param sid preallocated channel SID.
|
||||
* @param channel channel to register.
|
||||
*/
|
||||
virtual void registerChannel(pvAccessID sid, ServerChannel::shared_pointer const & channel) =0;
|
||||
|
||||
/**
|
||||
* Unregister a new channel (and deallocates its handle).
|
||||
* @param sid SID
|
||||
*/
|
||||
virtual void unregisterChannel(pvAccessID sid) = 0;
|
||||
|
||||
/**
|
||||
* Get channel by its SID.
|
||||
* @param sid channel SID
|
||||
* @return channel with given SID, <code>null</code> otherwise
|
||||
*/
|
||||
virtual ServerChannel::shared_pointer getChannel(pvAccessID sid) = 0;
|
||||
|
||||
/**
|
||||
* Get channel count.
|
||||
* @return channel count.
|
||||
*/
|
||||
virtual size_t getChannelCount() const = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* A request that expects an response.
|
||||
* Responses identified by its I/O ID.
|
||||
|
||||
@@ -790,7 +790,7 @@ void ServerChannelRequesterImpl::channelCreated(const Status& status, Channel::s
|
||||
if (status.isSuccess())
|
||||
{
|
||||
// NOTE: we do not explicitly check if transport OK
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
if (!casTransport.get())
|
||||
THROW_BASE_EXCEPTION("transport is unable to host channels");
|
||||
|
||||
@@ -864,7 +864,7 @@ void ServerChannelRequesterImpl::channelStateChange(Channel::shared_pointer cons
|
||||
|
||||
if(Transport::shared_pointer transport = _transport.lock())
|
||||
{
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
if (!casTransport)
|
||||
return;
|
||||
|
||||
@@ -948,7 +948,7 @@ void ServerDestroyChannelHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
// NOTE: we do not explicitly check if transport OK
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
|
||||
|
||||
transport->ensureData(8);
|
||||
@@ -989,7 +989,7 @@ void ServerGetHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
// NOTE: we do not explicitly check if transport is OK
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
|
||||
transport->ensureData(2*sizeof(int32)/sizeof(int8)+1);
|
||||
const pvAccessID sid = payloadBuffer->getInt();
|
||||
@@ -1244,7 +1244,7 @@ void ServerPutHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
|
||||
|
||||
// NOTE: we do not explicitly check if transport is OK
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
|
||||
transport->ensureData(2*sizeof(int32)/sizeof(int8)+1);
|
||||
const pvAccessID sid = payloadBuffer->getInt();
|
||||
@@ -1514,7 +1514,7 @@ void ServerPutGetHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
// NOTE: we do not explicitly check if transport is OK
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
|
||||
transport->ensureData(2*sizeof(int32)/sizeof(int8)+1);
|
||||
const pvAccessID sid = payloadBuffer->getInt();
|
||||
@@ -1837,7 +1837,7 @@ void ServerMonitorHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
AbstractServerResponseHandler::handleResponse(responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
assert(!!casTransport);
|
||||
|
||||
transport->ensureData(2*sizeof(int32)/sizeof(int8)+1);
|
||||
@@ -2132,7 +2132,7 @@ void ServerArrayHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
// NOTE: we do not explicitly check if transport is OK
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
|
||||
transport->ensureData(2*sizeof(int32)/sizeof(int8)+1);
|
||||
const pvAccessID sid = payloadBuffer->getInt();
|
||||
@@ -2464,7 +2464,7 @@ void ServerDestroyRequestHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
// NOTE: we do not explicitly check if transport is OK
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
|
||||
transport->ensureData(2*sizeof(int32)/sizeof(int8));
|
||||
const pvAccessID sid = payloadBuffer->getInt();
|
||||
@@ -2504,7 +2504,7 @@ void ServerCancelRequestHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
// NOTE: we do not explicitly check if transport is OK
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
|
||||
transport->ensureData(2*sizeof(int32)/sizeof(int8));
|
||||
const pvAccessID sid = payloadBuffer->getInt();
|
||||
@@ -2549,7 +2549,7 @@ void ServerProcessHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
// NOTE: we do not explicitly check if transport is OK
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
|
||||
transport->ensureData(2*sizeof(int32)/sizeof(int8)+1);
|
||||
const pvAccessID sid = payloadBuffer->getInt();
|
||||
@@ -2729,7 +2729,7 @@ void ServerGetFieldHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
// NOTE: we do not explicitly check if transport is OK
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
|
||||
transport->ensureData(2*sizeof(int32)/sizeof(int8));
|
||||
const pvAccessID sid = payloadBuffer->getInt();
|
||||
@@ -2809,7 +2809,7 @@ void ServerRPCHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
// NOTE: we do not explicitly check if transport is OK
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
detail::BlockingServerTCPTransportCodec::shared_pointer casTransport = dynamic_pointer_cast<detail::BlockingServerTCPTransportCodec>(transport);
|
||||
|
||||
transport->ensureData(2*sizeof(int32)/sizeof(int8)+1);
|
||||
const pvAccessID sid = payloadBuffer->getInt();
|
||||
|
||||
Reference in New Issue
Block a user