MongoDB C++ Driver mongocxx-3.7.0
Loading...
Searching...
No Matches
write_concern.hpp
1// Copyright 2014 MongoDB Inc.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#pragma once
16
17#include <chrono>
18#include <cstdint>
19#include <memory>
20#include <stdexcept>
21
22#include <bsoncxx/document/value.hpp>
23#include <bsoncxx/stdx/optional.hpp>
24#include <bsoncxx/stdx/string_view.hpp>
25#include <mongocxx/options/transaction.hpp>
26#include <mongocxx/stdx.hpp>
27
28#include <mongocxx/config/prelude.hpp>
29
30namespace mongocxx {
31MONGOCXX_INLINE_NAMESPACE_BEGIN
32
33class bulk_write;
34class client;
35class collection;
36class database;
37class uri;
38
56class MONGOCXX_API write_concern {
57 public:
62 enum class level { k_default, k_majority, k_tag, k_unacknowledged, k_acknowledged };
63
68
73
78
83
87 write_concern& operator=(write_concern&&) noexcept;
88
93
102 void journal(bool journal);
103
119 void nodes(std::int32_t confirm_from);
120
143 void acknowledge_level(level confirm_level);
144
155 void majority(std::chrono::milliseconds timeout);
156
166 void tag(stdx::string_view tag);
167
178 void timeout(std::chrono::milliseconds timeout);
179
185 bool journal() const;
186
197 stdx::optional<std::int32_t> nodes() const;
198
206 level acknowledge_level() const;
207
213 stdx::optional<std::string> tag() const;
214
220 bool majority() const;
221
227 std::chrono::milliseconds timeout() const;
228
234 bool is_acknowledged() const;
235
242 bsoncxx::document::value to_document() const;
243
244 private:
245 friend bulk_write;
246 friend client;
247 friend collection;
248 friend database;
250 friend mongocxx::options::transaction;
251 friend uri;
252
260 friend MONGOCXX_API bool MONGOCXX_CALL operator==(const write_concern&, const write_concern&);
261 friend MONGOCXX_API bool MONGOCXX_CALL operator!=(const write_concern&, const write_concern&);
265
266 class MONGOCXX_PRIVATE impl;
267
268 MONGOCXX_PRIVATE write_concern(std::unique_ptr<impl>&& implementation);
269
270 std::unique_ptr<impl> _impl;
271};
272
273MONGOCXX_INLINE_NAMESPACE_END
274} // namespace mongocxx
275
276#include <mongocxx/config/postlude.hpp>
Class representing a batch of write operations that can be sent to the server as a group.
Definition bulk_write.hpp:43
Class representing a client connection to MongoDB.
Definition client.hpp:58
Class representing server side document groupings within a MongoDB database.
Definition collection.hpp:83
Class representing a MongoDB database.
Definition database.hpp:43
Class representing a MongoDB connection string URI.
Definition uri.hpp:43
Class representing the server-side requirement for reporting the success of a write operation.
Definition write_concern.hpp:56
level
A class to represent the special case values for write_concern::nodes.
Definition write_concern.hpp:62
write_concern()
Constructs a new write_concern.
write_concern(const write_concern &)
Copy constructs a write_concern.
write_concern & operator=(const write_concern &)
Copy assigns a write_concern.
write_concern(write_concern &&) noexcept
Move constructs a write_concern.
Top level namespace for MongoDB C++ BSON functionality.
Definition element.hpp:24
Top level namespace for the MongoDB C++ driver.
Definition bulk_write.hpp:24