eliminate ChannelHostingTransport

an "interface" used once.  Drop it and de-virtualize.
This commit is contained in:
Michael Davidsaver
2017-11-06 13:41:58 -06:00
parent 02a11fc539
commit aaef110507
3 changed files with 20 additions and 71 deletions

View File

@@ -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 {

View File

@@ -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.

View File

@@ -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();