+ ProtocolFrameSerializer::finishSerialization(frame, *(context->responseQueue()));
+}
+
+void ProtocolAdmin::execute(RequestContextPtr context, DescriptionListResponsePtr response) {
+ ProtocolFrameFieldsCount descriptionsSize
+ = static_cast<ProtocolFrameFieldsCount>(response->descriptions().size());
+
+ LOGD("Serializing DescriptionListResponse: op [%" PRIu8 "], sequenceNumber [%" PRIu16 "], "
+ "number of descriptions [%" PRIu16 "], dbCorrupted [%d]", OpDescriptionListResponse,
+ response->sequenceNumber(), descriptionsSize, static_cast<int>(response->isDbCorrupted()));
+
+ ProtocolFrame frame = ProtocolFrameSerializer::startSerialization(response->sequenceNumber());
+
+ ProtocolSerialization::serialize(frame, OpDescriptionListResponse);
+ ProtocolSerialization::serialize(frame, descriptionsSize);
+ for (auto &desc : response->descriptions()) {
+ ProtocolSerialization::serialize(frame, desc.type);
+ ProtocolSerialization::serialize(frame, desc.name);
+ }
+ ProtocolSerialization::serialize(frame, response->isDbCorrupted());
+
+ ProtocolFrameSerializer::finishSerialization(frame, *(context->responseQueue()));
+}
+
+void ProtocolAdmin::execute(RequestContextPtr context, ListResponsePtr response) {
+ ProtocolFrameFieldsCount policiesSize
+ = static_cast<ProtocolFrameFieldsCount>(response->policies().size());
+
+ LOGD("Serializing ListResponse: op [%" PRIu8 "], sequenceNumber [%" PRIu16 "], "
+ "number of policies [%" PRIu16 "], bucketValid [%d], dbCorrupted [%d]", OpListResponse,
+ response->sequenceNumber(), policiesSize, static_cast<int>(response->isBucketValid()),
+ static_cast<int>(response->isDbCorrupted()));
+
+ ProtocolFrame frame = ProtocolFrameSerializer::startSerialization(response->sequenceNumber());
+
+ ProtocolSerialization::serialize(frame, OpListResponse);
+ ProtocolSerialization::serialize(frame, policiesSize);
+ for (auto &policy : response->policies()) {
+ // PolicyKey
+ ProtocolSerialization::serialize(frame, policy.key().client().value());
+ ProtocolSerialization::serialize(frame, policy.key().user().value());
+ ProtocolSerialization::serialize(frame, policy.key().privilege().value());
+ // PolicyResult
+ ProtocolSerialization::serialize(frame, policy.result().policyType());
+ ProtocolSerialization::serialize(frame, policy.result().metadata());
+ }
+ ProtocolSerialization::serialize(frame, response->isBucketValid());
+ ProtocolSerialization::serialize(frame, response->isDbCorrupted());
+
+ ProtocolFrameSerializer::finishSerialization(frame, *(context->responseQueue()));