echo content

This commit is contained in:
Michael Davidsaver
2019-05-16 19:11:16 -07:00
parent 0f26f39b5b
commit a1af3c2c8e
2 changed files with 8 additions and 5 deletions

View File

@@ -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<char>(&toEcho[0], toEcho.size());
}
private:
osiSockAddr _echoFrom;
std::vector<char> toEcho;
};
/****************************************************************************************/

View File

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