minor client message handling
avoid unnecessary dynamic_cast
This commit is contained in:
@@ -2874,23 +2874,23 @@ public:
|
||||
AbstractClientResponseHandler::handleResponse(responseFrom, transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
transport->ensureData(5);
|
||||
int32 ioid = payloadBuffer->getInt();
|
||||
MessageType type = (MessageType)payloadBuffer->getByte();
|
||||
|
||||
// TODO optimize
|
||||
ResponseRequest::shared_pointer rr = _context.lock()->getResponseRequest(payloadBuffer->getInt());
|
||||
if (rr.get())
|
||||
string message = SerializeHelper::deserializeString(payloadBuffer, transport.get());
|
||||
|
||||
bool shown = false;
|
||||
ResponseRequest::shared_pointer rr = _context.lock()->getResponseRequest(ioid);
|
||||
if (rr)
|
||||
{
|
||||
DataResponse::shared_pointer nrr = dynamic_pointer_cast<DataResponse>(rr);
|
||||
if (nrr.get())
|
||||
{
|
||||
Requester::shared_pointer requester = nrr->getRequester();
|
||||
if (requester.get()) {
|
||||
MessageType type = (MessageType)payloadBuffer->getByte();
|
||||
string message = SerializeHelper::deserializeString(payloadBuffer, transport.get());
|
||||
requester->message(message, type);
|
||||
}
|
||||
Requester::shared_pointer requester = rr->getRequester();
|
||||
if (requester) {
|
||||
requester->message(message, type);
|
||||
shown = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(!shown)
|
||||
std::cerr<<"Orphaned server message "<<type<<" : "<<message<<"\n";
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ BaseChannelRequesterMessageTransportSender::BaseChannelRequesterMessageTransport
|
||||
|
||||
void BaseChannelRequesterMessageTransportSender::send(ByteBuffer* buffer, TransportSendControl* control)
|
||||
{
|
||||
control->startMessage((int8)18, sizeof(int32)/sizeof(int8) + 1);
|
||||
control->startMessage((int8)CMD_MESSAGE, sizeof(int32)/sizeof(int8) + 1);
|
||||
buffer->putInt(_ioid);
|
||||
buffer->putByte((int8)_messageType);
|
||||
epics::pvData::SerializeHelper::serializeString(_message, buffer, control);
|
||||
|
||||
@@ -129,6 +129,7 @@ ServerResponseHandler::ServerResponseHandler(ServerContextImpl::shared_pointer c
|
||||
m_handlerTable[CMD_GET_FIELD].reset(new ServerGetFieldHandler(context)); /* 17 - get field response */
|
||||
m_handlerTable[CMD_MESSAGE] = badResponse; /* 18 - message to Requester */
|
||||
m_handlerTable[CMD_MULTIPLE_DATA] = badResponse; /* 19 - grouped monitors */
|
||||
|
||||
m_handlerTable[CMD_RPC].reset(new ServerRPCHandler(context)); /* 20 - RPC response */
|
||||
m_handlerTable[CMD_CANCEL_REQUEST].reset(new ServerCancelRequestHandler(context)); /* 21 - cancel request */
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ string getMessageTypeName(MessageType messageType)
|
||||
|
||||
void Requester::message(std::string const & message,MessageType messageType)
|
||||
{
|
||||
std::cerr << "[" << getRequesterName() << "] message(" << message << ", " << getMessageTypeName(messageType) << ")\n";
|
||||
std::cerr << "[" << getRequesterName() << "] " << getMessageTypeName(messageType) << " : " << message << "\n";
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user