From: Lukasz Wojciechowski Date: Sat, 29 Nov 2014 15:34:05 +0000 (+0100) Subject: Handle ListRequest by AdminProtocol X-Git-Tag: accepted/tizen/common/20150119.084431~75 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F46%2F31046%2F4;p=platform%2Fcore%2Fsecurity%2Fcynara.git Handle ListRequest by AdminProtocol Add serialziation and deserialization of ListRequest to AdminProtocol. Change-Id: Id1fadae22333acba6caec905d82c8e214c2560e9 --- diff --git a/src/common/protocol/ProtocolAdmin.cpp b/src/common/protocol/ProtocolAdmin.cpp index 8d792f9..60341bc 100644 --- a/src/common/protocol/ProtocolAdmin.cpp +++ b/src/common/protocol/ProtocolAdmin.cpp @@ -30,11 +30,13 @@ #include #include #include +#include #include #include #include #include #include +#include #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(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()); diff --git a/src/common/protocol/ProtocolAdmin.h b/src/common/protocol/ProtocolAdmin.h index 9d2c6ac..f5b2c96 100644 --- a/src/common/protocol/ProtocolAdmin.h +++ b/src/common/protocol/ProtocolAdmin.h @@ -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); diff --git a/src/common/protocol/ProtocolOpCode.h b/src/common/protocol/ProtocolOpCode.h index 7bd67ae..36670c9 100644 --- a/src/common/protocol/ProtocolOpCode.h +++ b/src/common/protocol/ProtocolOpCode.h @@ -18,6 +18,7 @@ /** * @file src/common/protocol/ProtocolOpCode.h * @author Adam Malinowski + * @author Lukasz Wojciechowski * @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,