Handle ListRequest by AdminProtocol 46/31046/4
authorLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Sat, 29 Nov 2014 15:34:05 +0000 (16:34 +0100)
committerLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Wed, 10 Dec 2014 19:05:11 +0000 (20:05 +0100)
Add serialziation and deserialization of ListRequest to AdminProtocol.

Change-Id: Id1fadae22333acba6caec905d82c8e214c2560e9

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

index 8d792f9..60341bc 100644 (file)
 #include <protocol/ProtocolFrameSerializer.h>
 #include <request/AdminCheckRequest.h>
 #include <request/InsertOrUpdateBucketRequest.h>
+#include <request/ListRequest.h>
 #include <request/RemoveBucketRequest.h>
 #include <request/RequestContext.h>
 #include <request/SetPoliciesRequest.h>
 #include <response/CheckResponse.h>
 #include <response/CodeResponse.h>
+#include <types/PolicyKey.h>
 
 #include "ProtocolAdmin.h"
 
@@ -87,6 +89,22 @@ RequestPtr ProtocolAdmin::deserializeInsertOrUpdateBucketRequest(void) {
             PolicyResult(policyType, policyMetaData), m_frameHeader.sequenceNumber());
 }
 
+RequestPtr ProtocolAdmin::deserializeListRequest(void) {
+    PolicyBucketId bucketId;
+    PolicyKeyFeature::ValueType client, user, privilege;
+
+    ProtocolDeserialization::deserialize(m_frameHeader, bucketId);
+    ProtocolDeserialization::deserialize(m_frameHeader, client);
+    ProtocolDeserialization::deserialize(m_frameHeader, user);
+    ProtocolDeserialization::deserialize(m_frameHeader, privilege);
+
+    LOGD("Deserialized ListRequest: bucketId <%s>, filter client <%s> filter user <%s>, filter "
+         "privilege <%s>", bucketId.c_str(), client.c_str(), user.c_str(), privilege.c_str());
+
+    return std::make_shared<ListRequest>(bucketId, PolicyKey(client, user, privilege),
+                                         m_frameHeader.sequenceNumber());
+}
+
 RequestPtr ProtocolAdmin::deserializeRemoveBucketRequest(void) {
     PolicyBucketId policyBucketId;
 
@@ -163,6 +181,8 @@ RequestPtr ProtocolAdmin::extractRequestFromBuffer(BinaryQueuePtr bufferQueue) {
             return deserializeAdminCheckRequest();
         case OpInsertOrUpdateBucket:
             return deserializeInsertOrUpdateBucketRequest();
+        case OpListRequest:
+            return deserializeListRequest();
         case OpRemoveBucket:
             return deserializeRemoveBucketRequest();
         case OpSetPolicies:
@@ -258,6 +278,23 @@ void ProtocolAdmin::execute(RequestContextPtr context, InsertOrUpdateBucketReque
     ProtocolFrameSerializer::finishSerialization(frame, *(context->responseQueue()));
 }
 
+void ProtocolAdmin::execute(RequestContextPtr context, ListRequestPtr request) {
+    LOGD("Serializing ListRequest: sequenceNumber [%" PRIu16 "], bucketId <%s>, "
+         "filter client <%s> filter user <%s> filter privilege <%s>", request->sequenceNumber(),
+         request->bucket().c_str(), request->filter().client().value().c_str(),
+         request->filter().user().value().c_str(), request->filter().privilege().value().c_str());
+
+    ProtocolFrame frame = ProtocolFrameSerializer::startSerialization(request->sequenceNumber());
+
+    ProtocolSerialization::serialize(frame, OpListRequest);
+    ProtocolSerialization::serialize(frame, request->bucket());
+    ProtocolSerialization::serialize(frame, request->filter().client().value());
+    ProtocolSerialization::serialize(frame, request->filter().user().value());
+    ProtocolSerialization::serialize(frame, request->filter().privilege().value());
+
+    ProtocolFrameSerializer::finishSerialization(frame, *(context->responseQueue()));
+}
+
 void ProtocolAdmin::execute(RequestContextPtr context, RemoveBucketRequestPtr request) {
     LOGD("Serializing RemoveBucketRequest: sequenceNumber [%" PRIu16 "], bucketId <%s>",
          request->sequenceNumber(), request->bucketId().c_str());
index 9d2c6ac..f5b2c96 100644 (file)
@@ -40,6 +40,7 @@ public:
 
     virtual void execute(RequestContextPtr context, AdminCheckRequestPtr request);
     virtual void execute(RequestContextPtr context, InsertOrUpdateBucketRequestPtr request);
+    virtual void execute(RequestContextPtr context, ListRequestPtr request);
     virtual void execute(RequestContextPtr context, RemoveBucketRequestPtr request);
     virtual void execute(RequestContextPtr context, SetPoliciesRequestPtr request);
 
@@ -49,6 +50,7 @@ public:
 private:
     RequestPtr deserializeAdminCheckRequest(void);
     RequestPtr deserializeInsertOrUpdateBucketRequest(void);
+    RequestPtr deserializeListRequest(void);
     RequestPtr deserializeRemoveBucketRequest(void);
     RequestPtr deserializeSetPoliciesRequest(void);
 
index 7bd67ae..36670c9 100644 (file)
@@ -18,6 +18,7 @@
 /**
  * @file        src/common/protocol/ProtocolOpCode.h
  * @author      Adam Malinowski <a.malinowsk2@partner.samsung.com>
+ * @author      Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
  * @version     1.0
  * @brief       Decalaration of protocol frame operation codes.
  */
@@ -44,8 +45,9 @@ enum ProtocolOpCode : uint8_t {
     OpSetPolicies,
     OpCodeResponse,
     OpAdminCheckRequest,
+    OpListRequest,
 
-    /** Opcodes 25 - 39 are reserved for future use */
+    /** Opcodes 26 - 39 are reserved for future use */
 
     /** Agent operations */
     OpAgentRegisterRequest = 40,