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:
miha_vitorovic
2011-01-07 08:44:43 +01:00
parent 25d6336efa
commit 59b45653d1
4 changed files with 94 additions and 4 deletions

View File

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