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