blockingClientTCPTransport.cpp:
- changed magic numbers to enums blockingTCPTransport.cpp: - debug helpers only responseHandlers.*: - added two new handlers, NOOP and Echo
This commit is contained in:
@@ -63,9 +63,9 @@ namespace epics {
|
||||
|
||||
_handlerTable = new ResponseHandler*[HANDLER_TABLE_LENGTH];
|
||||
// TODO add real handlers, as they are developed
|
||||
_handlerTable[0] = badResponse;
|
||||
_handlerTable[0] = new NoopResponse(_context, "Beacon");
|
||||
_handlerTable[1] = new ConnectionValidationHandler(_context);
|
||||
_handlerTable[2] = badResponse;
|
||||
_handlerTable[2] = new EchoHandler(_context);
|
||||
_handlerTable[3] = badResponse;
|
||||
_handlerTable[4] = badResponse;
|
||||
_handlerTable[5] = badResponse;
|
||||
@@ -96,6 +96,8 @@ namespace epics {
|
||||
ServerResponseHandler::~ServerResponseHandler() {
|
||||
delete _handlerTable[0];
|
||||
delete _handlerTable[1];
|
||||
delete _handlerTable[2];
|
||||
delete _handlerTable[27];
|
||||
delete[] _handlerTable;
|
||||
}
|
||||
|
||||
@@ -137,5 +139,42 @@ namespace epics {
|
||||
//transport.setPriority(payloadBuffer.getShort());
|
||||
}
|
||||
|
||||
class EchoTransportSender : public TransportSender {
|
||||
public:
|
||||
EchoTransportSender(osiSockAddr* echoFrom) {
|
||||
memcpy(&_echoFrom, echoFrom, sizeof(osiSockAddr));
|
||||
}
|
||||
|
||||
virtual void send(ByteBuffer* buffer, TransportSendControl* control) {
|
||||
control->startMessage(CMD_ECHO, 0);
|
||||
control->setRecipient(&_echoFrom);
|
||||
}
|
||||
|
||||
virtual void lock() {
|
||||
}
|
||||
|
||||
virtual void unlock() {
|
||||
delete this;
|
||||
}
|
||||
private:
|
||||
osiSockAddr _echoFrom;
|
||||
|
||||
virtual ~EchoTransportSender() {
|
||||
}
|
||||
};
|
||||
|
||||
void EchoHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
Transport* transport, int8 version, int8 command,
|
||||
int payloadSize, epics::pvData::ByteBuffer* payloadBuffer) {
|
||||
AbstractServerResponseHandler::handleResponse(responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
EchoTransportSender* echoReply = new EchoTransportSender(
|
||||
responseFrom);
|
||||
|
||||
// send back
|
||||
transport->enqueueSendRequest(echoReply);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user