minor client message handling

avoid unnecessary dynamic_cast
This commit is contained in:
Michael Davidsaver
2017-09-06 13:40:02 -05:00
parent 8a24f9cd9c
commit 5137b90f56
4 changed files with 16 additions and 15 deletions

View File

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