Serialize AdminCheckResponse by ProtocolAdmin 67/31567/6
authorLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Fri, 5 Dec 2014 22:54:02 +0000 (23:54 +0100)
committerLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Mon, 15 Dec 2014 14:38:18 +0000 (15:38 +0100)
Add serialization and deserialization of AdminCheckResponse
by ProtocolAdmin.

Change-Id: I727c44f5a599537887d75dca724c56a448107368

src/common/protocol/ProtocolAdmin.cpp
src/common/protocol/ProtocolAdmin.h
src/common/protocol/ProtocolOpCode.h

index 0d646a4..2c1164e 100644 (file)
@@ -34,6 +34,7 @@
 #include <request/RemoveBucketRequest.h>
 #include <request/RequestContext.h>
 #include <request/SetPoliciesRequest.h>
+#include <response/AdminCheckResponse.h>
 #include <response/CheckResponse.h>
 #include <response/CodeResponse.h>
 #include <response/ListResponse.h>
@@ -197,6 +198,24 @@ RequestPtr ProtocolAdmin::extractRequestFromBuffer(BinaryQueuePtr bufferQueue) {
     return nullptr;
 }
 
+ResponsePtr ProtocolAdmin::deserializeAdminCheckResponse(void) {
+    PolicyType result;
+    PolicyResult::PolicyMetadata additionalInfo;
+    bool bucketValid;
+
+    ProtocolDeserialization::deserialize(m_frameHeader, result);
+    ProtocolDeserialization::deserialize(m_frameHeader, additionalInfo);
+    ProtocolDeserialization::deserialize(m_frameHeader, bucketValid);
+
+    const PolicyResult policyResult(result, additionalInfo);
+
+    LOGD("Deserialized AdminCheckResponse: result [%" PRIu16 "], metadata <%s>, bucketValid [%d]",
+         policyResult.policyType(), policyResult.metadata().c_str(), static_cast<int>(bucketValid));
+
+    return std::make_shared<AdminCheckResponse>(policyResult, bucketValid,
+                                                m_frameHeader.sequenceNumber());
+}
+
 ResponsePtr ProtocolAdmin::deserializeCheckResponse(void) {
     PolicyType result;
     PolicyResult::PolicyMetadata additionalInfo;
@@ -264,6 +283,8 @@ ResponsePtr ProtocolAdmin::extractResponseFromBuffer(BinaryQueuePtr bufferQueue)
         ProtocolDeserialization::deserialize(m_frameHeader, opCode);
         LOGD("Deserialized opCode [%" PRIu8 "]", opCode);
         switch (opCode) {
+        case OpAdminCheckPolicyResponse:
+            return deserializeAdminCheckResponse();
         case OpCheckPolicyResponse:
             return deserializeCheckResponse();
         case OpCodeResponse:
@@ -386,6 +407,23 @@ void ProtocolAdmin::execute(RequestContextPtr context, SetPoliciesRequestPtr req
     ProtocolFrameSerializer::finishSerialization(frame, *(context->responseQueue()));
 }
 
+void ProtocolAdmin::execute(RequestContextPtr context, AdminCheckResponsePtr response) {
+    LOGD("Serializing AdminCheckResponse: op [%" PRIu8 "], sequenceNumber [%" PRIu16 "], "
+         "policyType [%" PRIu16 "], metadata <%s>, bucketValid [%d]", OpAdminCheckPolicyResponse,
+         response->sequenceNumber(), response->result().policyType(),
+         response->result().metadata().c_str(), static_cast<int>(response->isBucketValid()));
+
+    ProtocolFrame frame = ProtocolFrameSerializer::startSerialization(
+            response->sequenceNumber());
+
+    ProtocolSerialization::serialize(frame, OpAdminCheckPolicyResponse);
+    ProtocolSerialization::serialize(frame, response->result().policyType());
+    ProtocolSerialization::serialize(frame, response->result().metadata());
+    ProtocolSerialization::serialize(frame, response->isBucketValid());
+
+    ProtocolFrameSerializer::finishSerialization(frame, *(context->responseQueue()));
+}
+
 void ProtocolAdmin::execute(RequestContextPtr context, CheckResponsePtr response) {
     LOGD("Serializing CheckResponse: op [%" PRIu8 "], sequenceNumber [%" PRIu16 "], "
          "policyType [%" PRIu16 "], metadata <%s>", OpCheckPolicyResponse,
index 48421be..1454be2 100644 (file)
@@ -44,6 +44,7 @@ public:
     virtual void execute(RequestContextPtr context, RemoveBucketRequestPtr request);
     virtual void execute(RequestContextPtr context, SetPoliciesRequestPtr request);
 
+    virtual void execute(RequestContextPtr context, AdminCheckResponsePtr response);
     virtual void execute(RequestContextPtr context, CheckResponsePtr response);
     virtual void execute(RequestContextPtr context, CodeResponsePtr response);
     virtual void execute(RequestContextPtr context, ListResponsePtr response);
@@ -55,6 +56,7 @@ private:
     RequestPtr deserializeRemoveBucketRequest(void);
     RequestPtr deserializeSetPoliciesRequest(void);
 
+    ResponsePtr deserializeAdminCheckResponse(void);
     ResponsePtr deserializeCheckResponse(void);
     ResponsePtr deserializeCodeResponse(void);
     ResponsePtr deserializeListResponse(void);
index 69be21c..984ddef 100644 (file)
@@ -47,8 +47,9 @@ enum ProtocolOpCode : uint8_t {
     OpAdminCheckRequest,
     OpListRequest,
     OpListResponse,
+    OpAdminCheckPolicyResponse,
 
-    /** Opcodes 27 - 39 are reserved for future use */
+    /** Opcodes 28 - 39 are reserved for future use */
 
     /** Agent operations */
     OpAgentRegisterRequest = 40,