de-virt Transport::getRevision()
Makes clear that this is/was only for TCP, and eliminate redundant storage. Also apply locking to this storage. Use header version directly in search handler. Correct as only UDP search is actually used atm.
This commit is contained in:
@ -141,6 +141,8 @@ void AbstractCodec::processRead() {
|
||||
|
||||
void AbstractCodec::processHeader() {
|
||||
|
||||
Guard G(_mutex); // guards access to _version et al.
|
||||
|
||||
// magic code
|
||||
int8_t magicCode = _socketBuffer.getByte();
|
||||
|
||||
@ -1220,7 +1222,7 @@ BlockingTCPTransportCodec::BlockingTCPTransportCodec(bool serverFlag, const Cont
|
||||
,_channel(channel)
|
||||
,_context(context), _responseHandler(responseHandler)
|
||||
,_remoteTransportReceiveBufferSize(MAX_TCP_RECV)
|
||||
,_remoteTransportRevision(0), _priority(priority)
|
||||
,_priority(priority)
|
||||
,_verified(false)
|
||||
{
|
||||
REFTRACE_INCREMENT(num_instances);
|
||||
|
@ -89,14 +89,6 @@ public:
|
||||
return PVA_DEFAULT_PRIORITY;
|
||||
}
|
||||
|
||||
virtual epics::pvData::int8 getRevision() const OVERRIDE FINAL {
|
||||
return PVA_PROTOCOL_REVISION;
|
||||
}
|
||||
|
||||
virtual void setRemoteRevision(epics::pvData::int8 /*revision*/) OVERRIDE FINAL {
|
||||
// noop
|
||||
}
|
||||
|
||||
virtual void setRemoteTransportReceiveBufferSize(
|
||||
std::size_t /*receiveBufferSize*/) OVERRIDE FINAL {
|
||||
// noop for UDP (limited by 64k; MAX_UDP_SEND for PVA)
|
||||
|
@ -291,6 +291,9 @@ private:
|
||||
epics::pvData::int8 _byteOrderFlag;
|
||||
epics::pvData::int8 _clientServerFlag;
|
||||
const size_t _socketSendBufferSize;
|
||||
|
||||
public:
|
||||
mutable epics::pvData::Mutex _mutex;
|
||||
};
|
||||
|
||||
|
||||
@ -361,9 +364,10 @@ public:
|
||||
return _socketName;
|
||||
}
|
||||
|
||||
virtual epics::pvData::int8 getRevision() const OVERRIDE FINAL {
|
||||
return PVA_PROTOCOL_REVISION < _remoteTransportRevision
|
||||
? PVA_PROTOCOL_REVISION : _remoteTransportRevision;
|
||||
epics::pvData::int8 getRevision() const {
|
||||
epicsGuard<epicsMutex> G(_mutex);
|
||||
return PVA_PROTOCOL_REVISION < _version
|
||||
? PVA_PROTOCOL_REVISION : _version;
|
||||
}
|
||||
|
||||
|
||||
@ -377,11 +381,6 @@ public:
|
||||
}
|
||||
|
||||
|
||||
virtual void setRemoteRevision(epics::pvData::int8 revision) OVERRIDE FINAL {
|
||||
_remoteTransportRevision = revision;
|
||||
}
|
||||
|
||||
|
||||
virtual void setRemoteTransportReceiveBufferSize(
|
||||
std::size_t remoteTransportReceiveBufferSize) OVERRIDE FINAL {
|
||||
_remoteTransportReceiveBufferSize = remoteTransportReceiveBufferSize;
|
||||
@ -469,15 +468,11 @@ private:
|
||||
|
||||
ResponseHandler::shared_pointer _responseHandler;
|
||||
size_t _remoteTransportReceiveBufferSize;
|
||||
epics::pvData::int8 _remoteTransportRevision;
|
||||
epics::pvData::int16 _priority;
|
||||
|
||||
protected:
|
||||
bool _verified;
|
||||
epics::pvData::Event _verifiedEvent;
|
||||
|
||||
public:
|
||||
mutable epics::pvData::Mutex _mutex;
|
||||
};
|
||||
|
||||
class BlockingServerTCPTransportCodec :
|
||||
|
@ -191,12 +191,6 @@ public:
|
||||
|
||||
// TODO getContext?
|
||||
|
||||
/**
|
||||
* Transport protocol minor revision.
|
||||
* @return protocol minor revision.
|
||||
*/
|
||||
virtual epics::pvData::int8 getRevision() const = 0;
|
||||
|
||||
/**
|
||||
* Get receive buffer size.
|
||||
* @return receive buffer size.
|
||||
@ -215,12 +209,6 @@ public:
|
||||
*/
|
||||
virtual epics::pvData::int16 getPriority() const = 0;
|
||||
|
||||
/**
|
||||
* Set remote transport protocol revision.
|
||||
* @param revision protocol revision.
|
||||
*/
|
||||
virtual void setRemoteRevision(epics::pvData::int8 revision) = 0;
|
||||
|
||||
/**
|
||||
* Set remote transport receive buffer size.
|
||||
* @param receiveBufferSize receive buffer size.
|
||||
|
@ -2784,8 +2784,6 @@ public:
|
||||
{
|
||||
AbstractClientResponseHandler::handleResponse(responseFrom, transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
transport->setRemoteRevision(version);
|
||||
|
||||
transport->ensureData(4+2);
|
||||
|
||||
transport->setRemoteTransportReceiveBufferSize(payloadBuffer->getInt());
|
||||
|
@ -181,8 +181,6 @@ void ServerConnectionValidationHandler::handleResponse(
|
||||
AbstractServerResponseHandler::handleResponse(responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
transport->setRemoteRevision(version);
|
||||
|
||||
transport->ensureData(4+2+2);
|
||||
transport->setRemoteTransportReceiveBufferSize(payloadBuffer->getInt());
|
||||
// TODO clientIntrospectionRegistryMaxSize
|
||||
@ -340,7 +338,7 @@ void ServerSearchHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
info.reset(new PeerInfo);
|
||||
info->transport = "pva";
|
||||
info->peer = inetAddressToString(*responseFrom);
|
||||
info->transportVersion = transport->getRevision();
|
||||
info->transportVersion = version;
|
||||
}
|
||||
|
||||
if (count > 0)
|
||||
|
@ -399,13 +399,13 @@ void ServerContextImpl::printInfo(ostream& str, int lvl)
|
||||
const Transport::shared_pointer& transport(*it);
|
||||
|
||||
str<<" "<<transport->getType()<<"://"<<transport->getRemoteName()
|
||||
<<" ver="<<unsigned(transport->getRevision())
|
||||
<<" "<<(transport->isClosed()?"closed!":"");
|
||||
|
||||
const detail::BlockingServerTCPTransportCodec *casTransport = dynamic_cast<const detail::BlockingServerTCPTransportCodec*>(transport.get());
|
||||
|
||||
if(casTransport) {
|
||||
str<<" "<<(casTransport ? casTransport->getChannelCount() : size_t(-1))<<" channels";
|
||||
str<<" ver="<<unsigned(casTransport->getRevision())
|
||||
<<" "<<(casTransport ? casTransport->getChannelCount() : size_t(-1))<<" channels";
|
||||
|
||||
PeerInfo::const_shared_pointer peer;
|
||||
{
|
||||
|
@ -358,11 +358,6 @@ public:
|
||||
return dummyRemoteName;
|
||||
}
|
||||
|
||||
epics::pvData::int8 getRevision() const
|
||||
{
|
||||
return PVA_PROTOCOL_REVISION;
|
||||
}
|
||||
|
||||
std::size_t getReceiveBufferSize() const {
|
||||
return 16384;
|
||||
}
|
||||
@ -376,8 +371,6 @@ public:
|
||||
return 16384;
|
||||
}
|
||||
|
||||
void setRemoteRevision(epics::pvData::int8 revision) {}
|
||||
|
||||
void setRemoteTransportSocketReceiveBufferSize(
|
||||
std::size_t socketReceiveBufferSize) {}
|
||||
|
||||
|
Reference in New Issue
Block a user