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:
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user