From 7c5e18601613330d00c905af61b5a2b377656b22 Mon Sep 17 00:00:00 2001 From: Adam Malinowski Date: Mon, 14 Jul 2014 12:14:39 +0200 Subject: [PATCH] Add log messages related to protocol (de)serialization Change-Id: I6ca994c29326f0f5bce2e668adc4f9a3185c1592 --- src/client/logic/Logic.cpp | 4 ++++ src/common/protocol/ProtocolClient.cpp | 29 +++++++++++++++++++------ src/common/protocol/ProtocolFrameSerializer.cpp | 15 +++++++++++++ 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/client/logic/Logic.cpp b/src/client/logic/Logic.cpp index 6ac6fb9..ecdf34b 100644 --- a/src/client/logic/Logic.cpp +++ b/src/client/logic/Logic.cpp @@ -80,6 +80,10 @@ cynara_api_result Logic::check(const std::string &client, const std::string &ses LOGC("Critical error. Casting Response to CheckResponse failed."); throw UnexpectedErrorException("Error casting Response to CheckResponse"); } + + LOGD("checkResponse: policyType = %d, metadata = %s", + (int)checkResponse->m_resultRef.policyType(), + checkResponse->m_resultRef.metadata().c_str()); } catch (const ServerConnectionErrorException &ex) { LOGE("Cynara service not available."); onDisconnected(); diff --git a/src/common/protocol/ProtocolClient.cpp b/src/common/protocol/ProtocolClient.cpp index 9369b54..9ad801d 100644 --- a/src/common/protocol/ProtocolClient.cpp +++ b/src/common/protocol/ProtocolClient.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -54,6 +55,9 @@ RequestPtr ProtocolClient::deserializeCheckRequest(ProtocolFrameHeader &frame) { ProtocolDeserialization::deserialize(frame, userId); ProtocolDeserialization::deserialize(frame, privilegeId); + LOGD("Deserialized CheckRequest: client = %s, user = %s, privilege = %s", + clientId.c_str(), userId.c_str(), privilegeId.c_str()); + return std::make_shared(PolicyKey(clientId, userId, privilegeId), frame.sequenceNumber()); } @@ -62,11 +66,12 @@ RequestPtr ProtocolClient::extractRequestFromBuffer(BinaryQueue &bufferQueue) { ProtocolFrameSerializer::deserializeHeader(m_frameHeader, bufferQueue); if (m_frameHeader.isFrameComplete()) { - ProtocolOpCode requestId; + ProtocolOpCode opCode; m_frameHeader.resetState(); - ProtocolDeserialization::deserialize(m_frameHeader, requestId); - switch (requestId) { + ProtocolDeserialization::deserialize(m_frameHeader, opCode); + LOGD("Deserialized opCode = %d", (int)opCode); + switch (opCode) { case OpCheckPolicy: return deserializeCheckRequest(m_frameHeader); default: @@ -85,18 +90,24 @@ ResponsePtr ProtocolClient::deserializeCheckResponse(ProtocolFrameHeader &frame) ProtocolDeserialization::deserialize(frame, result); ProtocolDeserialization::deserialize(frame, additionalInfo); - return std::make_shared(PolicyResult(result, additionalInfo), frame.sequenceNumber()); + const PolicyResult policyResult(result, additionalInfo); + + LOGD("Deserialized CheckResponse: result = %d, metadata = %s", + (int)policyResult.policyType(), policyResult.metadata().c_str()); + + return std::make_shared(policyResult, frame.sequenceNumber()); } ResponsePtr ProtocolClient::extractResponseFromBuffer(BinaryQueue &bufferQueue) { ProtocolFrameSerializer::deserializeHeader(m_frameHeader, bufferQueue); if (m_frameHeader.isFrameComplete()) { - ProtocolOpCode requestId; + ProtocolOpCode opCode; m_frameHeader.resetState(); - ProtocolDeserialization::deserialize(m_frameHeader, requestId); - switch (requestId) { + ProtocolDeserialization::deserialize(m_frameHeader, opCode); + LOGD("Deserialized opCode = %d", (int)opCode); + switch (opCode) { case OpCheckPolicy: return deserializeCheckResponse(m_frameHeader); default: @@ -111,6 +122,10 @@ ResponsePtr ProtocolClient::extractResponseFromBuffer(BinaryQueue &bufferQueue) void ProtocolClient::execute(RequestContextPtr context, CheckRequestPtr request) { ProtocolFramePtr frame = ProtocolFrameSerializer::startSerialization(request->sequenceNumber()); + LOGD("Serializing CheckRequest: client = %s, user = %s, privilege = %s", + request->key().client().value().c_str(), + request->key().user().value().c_str(), request->key().privilege().value().c_str()); + ProtocolSerialization::serialize(*frame, OpCheckPolicy); ProtocolSerialization::serialize(*frame, request->key().client().value()); ProtocolSerialization::serialize(*frame, request->key().user().value()); diff --git a/src/common/protocol/ProtocolFrameSerializer.cpp b/src/common/protocol/ProtocolFrameSerializer.cpp index 25a5649..d8c4c7b 100644 --- a/src/common/protocol/ProtocolFrameSerializer.cpp +++ b/src/common/protocol/ProtocolFrameSerializer.cpp @@ -24,6 +24,7 @@ #include #include +#include #include "ProtocolFrameSerializer.h" @@ -36,11 +37,16 @@ void ProtocolFrameSerializer::deserializeHeader(ProtocolFrameHeader &frameHeader return; } + LOGD("Deserializing frameHeader"); + frameHeader.setHeaderContent(BinaryQueuePtr(&data, [=] (BinaryQueue *) {})); ProtocolFrameSignature signature; ProtocolDeserialization::deserialize(frameHeader, frameHeader.m_signature.length(), signature); + + LOGD("Deserialized signature = %s", signature.c_str()); + if (ProtocolFrameHeader::m_signature != signature) { throw InvalidProtocolException(InvalidProtocolException::InvalidSignature); } @@ -48,6 +54,9 @@ void ProtocolFrameSerializer::deserializeHeader(ProtocolFrameHeader &frameHeader ProtocolDeserialization::deserialize(frameHeader, frameHeader.m_frameLength); ProtocolDeserialization::deserialize(frameHeader, frameHeader.m_sequenceNumber); + LOGD("Deserialized frameLength = %d, sequenceNumber = %d", + (int)frameHeader.m_frameLength, (int)frameHeader.m_sequenceNumber); + frameHeader.setHeaderComplete(); } @@ -57,6 +66,8 @@ void ProtocolFrameSerializer::deserializeHeader(ProtocolFrameHeader &frameHeader } ProtocolFramePtr ProtocolFrameSerializer::startSerialization(ProtocolFrameSequenceNumber sequenceNumber) { + LOGD("Serialization started"); + BinaryQueuePtr headerQueue = std::make_shared(); BinaryQueuePtr bodyQueue = std::make_shared(); ProtocolFrameHeaderPtr header = std::make_shared(headerQueue); @@ -71,6 +82,10 @@ void ProtocolFrameSerializer::finishSerialization(ProtocolFramePtr frame, Binary ProtocolSerialization::serialize(frameHeader, frameHeader.m_frameLength); ProtocolSerialization::serialize(frameHeader, frameHeader.m_sequenceNumber); + LOGD("Serialize frameHeader: signature = %s, frameLength = %d, sequenceNumber = %d", + ProtocolFrameHeader::m_signature.c_str(), (int)frameHeader.m_frameLength, + (int)frameHeader.m_sequenceNumber); + data.appendMoveFrom(frameHeader.headerContent()); data.appendMoveFrom(frame->bodyContent()); } -- 2.7.4