From a1af3c2c8e65e5f36d62aea20713a9da0fd3a92e Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Thu, 16 May 2019 19:11:16 -0700 Subject: [PATCH] echo content --- src/server/pv/responseHandlers.h | 11 +++++++---- src/server/responseHandlers.cpp | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/server/pv/responseHandlers.h b/src/server/pv/responseHandlers.h index 3299cac..0db5615 100644 --- a/src/server/pv/responseHandlers.h +++ b/src/server/pv/responseHandlers.h @@ -93,20 +93,23 @@ public: class EchoTransportSender : public TransportSender { public: - EchoTransportSender(osiSockAddr* echoFrom) { + EchoTransportSender(osiSockAddr* echoFrom, size_t payloadSize, epics::pvData::ByteBuffer& payloadBuffer) { memcpy(&_echoFrom, echoFrom, sizeof(osiSockAddr)); + toEcho.resize(payloadSize); + memcpy(&toEcho[0], payloadBuffer.getBuffer(), payloadSize); } virtual ~EchoTransportSender() {} - virtual void send(epics::pvData::ByteBuffer* /*buffer*/, TransportSendControl* control) OVERRIDE FINAL { - control->startMessage(CMD_ECHO, 0); + virtual void send(epics::pvData::ByteBuffer* buffer, TransportSendControl* control) OVERRIDE FINAL { + control->startMessage(CMD_ECHO, toEcho.size(), toEcho.size()); control->setRecipient(_echoFrom); - // TODO content + buffer->putArray(&toEcho[0], toEcho.size()); } private: osiSockAddr _echoFrom; + std::vector toEcho; }; /****************************************************************************************/ diff --git a/src/server/responseHandlers.cpp b/src/server/responseHandlers.cpp index f0dd766..e115504 100644 --- a/src/server/responseHandlers.cpp +++ b/src/server/responseHandlers.cpp @@ -228,7 +228,7 @@ void ServerEchoHandler::handleResponse(osiSockAddr* responseFrom, transport, version, command, payloadSize, payloadBuffer); // send back - TransportSender::shared_pointer echoReply(new EchoTransportSender(responseFrom)); + TransportSender::shared_pointer echoReply(new EchoTransportSender(responseFrom, payloadSize, *payloadBuffer)); transport->enqueueSendRequest(echoReply); }