fix ServerCancelRequestHandler::handleResponse

Thus far this has been dead code as ServerChannel::getRequest()
returned a Destroyable which was actually a BaseChannelRequester
sub-class, not a ChannelRequest sub-class.
This commit is contained in:
Michael Davidsaver
2018-06-29 16:22:56 -07:00
parent 3ffbf9c597
commit a1a2e71ecc
3 changed files with 17 additions and 5 deletions
+4 -1
View File
@@ -16,6 +16,7 @@ namespace epics {
namespace pvAccess {
class ServerChannel;
class ChannelRequest;
class BaseChannelRequester : virtual public epics::pvData::Requester, public Destroyable
{
@@ -28,7 +29,9 @@ public:
bool startRequest(epics::pvData::int32 qos);
void stopRequest();
epics::pvData::int32 getPendingRequest();
std::string getRequesterName() OVERRIDE FINAL;
//! The Operation associated with this Requester, except for GetField and Monitor (which are special snowflakes...)
virtual std::tr1::shared_ptr<ChannelRequest> getOperation() =0;
virtual std::string getRequesterName() OVERRIDE FINAL;
virtual void message(std::string const & message, epics::pvData::MessageType messageType) OVERRIDE FINAL;
static void message(Transport::shared_pointer const & transport, const pvAccessID ioid, const std::string message, const epics::pvData::MessageType messageType);
static void sendFailureMessage(const epics::pvData::int8 command, Transport::shared_pointer const & transport, const pvAccessID ioid, const epics::pvData::int8 qos, const epics::pvData::Status status);
+12
View File
@@ -303,6 +303,7 @@ public:
virtual void destroy() OVERRIDE FINAL;
ChannelGet::shared_pointer getChannelGet();
virtual std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL { return getChannelGet(); }
virtual void send(epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL;
private:
@@ -360,6 +361,8 @@ public:
virtual void destroy() OVERRIDE FINAL;
ChannelPut::shared_pointer getChannelPut();
virtual std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL { return getChannelPut(); }
epics::pvData::BitSet::shared_pointer getPutBitSet();
epics::pvData::PVStructure::shared_pointer getPutPVStructure();
void send(epics::pvData::ByteBuffer* buffer, TransportSendControl* control);
@@ -423,6 +426,7 @@ public:
virtual void destroy() OVERRIDE FINAL;
ChannelPutGet::shared_pointer getChannelPutGet();
virtual std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL { return getChannelPutGet(); }
epics::pvData::PVStructure::shared_pointer getPutGetPVStructure();
epics::pvData::BitSet::shared_pointer getPutGetBitSet();
@@ -485,6 +489,8 @@ public:
virtual void destroy() OVERRIDE FINAL;
Monitor::shared_pointer getChannelMonitor();
virtual std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL { return std::tr1::shared_ptr<ChannelRequest>(); }
virtual void send(epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL;
void ack(size_t cnt);
private:
@@ -557,6 +563,7 @@ public:
virtual void destroy() OVERRIDE FINAL;
ChannelArray::shared_pointer getChannelArray();
virtual std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL { return getChannelArray(); }
epics::pvData::PVArray::shared_pointer getPVArray();
virtual void send(epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL;
@@ -654,6 +661,8 @@ public:
virtual void destroy() OVERRIDE FINAL;
ChannelProcess::shared_pointer getChannelProcess();
virtual std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL { return getChannelProcess(); }
virtual void send(epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL;
private:
@@ -695,6 +704,8 @@ public:
std::tr1::shared_ptr<ServerChannel> const & channel, const pvAccessID ioid,
Transport::shared_pointer const & transport);
virtual std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL { return std::tr1::shared_ptr<ChannelRequest>(); }
virtual ~ServerGetFieldRequesterImpl() {}
virtual void getDone(const epics::pvData::Status& status, epics::pvData::FieldConstPtr const & field) OVERRIDE FINAL;
virtual void destroy() OVERRIDE FINAL;
@@ -773,6 +784,7 @@ public:
* @return the channelRPC
*/
ChannelRPC::shared_pointer getChannelRPC();
virtual std::tr1::shared_ptr<ChannelRequest> getOperation() OVERRIDE FINAL { return getChannelRPC(); }
virtual void send(epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL;
private:
+1 -4
View File
@@ -2615,17 +2615,14 @@ void ServerCancelRequestHandler::handleResponse(osiSockAddr* responseFrom,
return;
}
ChannelRequest::shared_pointer cr = dynamic_pointer_cast<ChannelRequest>(request);
ChannelRequest::shared_pointer cr = dynamic_pointer_cast<ChannelRequest>(request->getOperation());
if (!cr)
{
failureResponse(transport, ioid, BaseChannelRequester::notAChannelRequestStatus);
return;
}
// never gets here
// cancel
cr->cancel();
}
void ServerCancelRequestHandler::failureResponse(Transport::shared_pointer const & transport, pvAccessID ioid, const Status& errorStatus)