#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"
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;
return deserializeAdminCheckRequest();
case OpInsertOrUpdateBucket:
return deserializeInsertOrUpdateBucketRequest();
+ case OpListRequest:
+ return deserializeListRequest();
case OpRemoveBucket:
return deserializeRemoveBucketRequest();
case OpSetPolicies:
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());
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);
private:
RequestPtr deserializeAdminCheckRequest(void);
RequestPtr deserializeInsertOrUpdateBucketRequest(void);
+ RequestPtr deserializeListRequest(void);
RequestPtr deserializeRemoveBucketRequest(void);
RequestPtr deserializeSetPoliciesRequest(void);