1 /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /*
3  *     Copyright 2017 Couchbase, Inc.
4  *
5  *   Licensed under the Apache License, Version 2.0 (the "License");
6  *   you may not use this file except in compliance with the License.
7  *   You may obtain a copy of the License at
8  *
9  *       http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *   Unless required by applicable law or agreed to in writing, software
12  *   distributed under the License is distributed on an "AS IS" BASIS,
13  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *   See the License for the specific language governing permissions and
15  *   limitations under the License.
16  */
17 
18 #include "engine_errc_2_mcbp.h"
19 #include "executors.h"
20 
21 #include <daemon/cookie.h>
22 
collections_get_manifest_executor(Cookie& cookie)23 void collections_get_manifest_executor(Cookie& cookie) {
24     auto& connection = cookie.getConnection();
25     auto rv = connection.getBucketEngine()->collections.get_manifest(
26             connection.getBucketEngineAsV0());
27 
28     if (rv.first == cb::engine_errc::success) {
29         cookie.sendResponse(cb::mcbp::Status::Success,
30                             {},
31                             {},
32                             {rv.second.data(), rv.second.size()},
33                             cb::mcbp::Datatype::Raw,
34                             0);
35     } else if (rv.first == cb::engine_errc::disconnect) {
36         LOG_WARNING(
37                 "{}: collections_get_manifest_executor - get_manifest returned "
38                 "ENGINE_DISCONNECT - closing connection {}",
39                 connection.getId(),
40                 connection.getDescription());
41         connection.setState(McbpStateMachine::State::closing);
42     } else {
43         cookie.sendResponse(cb::mcbp::to_status(rv.first));
44     }
45 }
46