/usr/include/mongo/client/write_concern.h is in libmongoclient-dev 1.1.2-6ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | /* Copyright 2014 MongoDB Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <bitset>
#include <string>
#include "mongo/client/export_macros.h"
#include "mongo/db/jsobj.h"
namespace mongo {
/**
* Class to encapsulate client side "Write Concern" concept.
*
* Write concern describes the guarantee that MongoDB provides when reporting
* on the success of a write operation.
*
* Example usage:
* WriteConcern wc = WriteConcern().nodes(3).journal(false);
*/
class MONGO_CLIENT_API WriteConcern {
public:
/** Default write concern: equivalent to acknowledged */
WriteConcern();
/**
* Using nodes(kMajority) confirms that write operations have propagated
* to the majority of a replica set. This allows you to avoid hard coding
* assumptions about the size of your replica set into your application.
*/
static const char kMajority[];
//
// Standard write concern levels as defined in the MongoDB manual:
// http://docs.mongodb.org/manual/core/write-concern/
//
/** Fire and forget */
static const WriteConcern unacknowledged;
/** A single node acknowledges the write, equivalent to default constructor */
static const WriteConcern acknowledged;
/** A single node acknowledges the write operation was committed to journal */
static const WriteConcern journaled;
/** Two nodes have acknowledged receipt of the write operation */
static const WriteConcern replicated;
/** A majority of nodes acknowledges (replica set) */
static const WriteConcern majority;
/**
* Returns an integer representing the number of nodes required for write
* to be considered successful.
*
* If set this becomes the "w" parameter when sent to the server.
*
* @return number of nodes required
*/
int32_t nodes() const;
/**
* Returns a string representing the write concern mode.
*
* If set this becomes the "w" parameter when sent to the server.
*
* @return nodes required as std::string
*/
const std::string& mode() const;
/**
* If write will only be considered successful when committed to journal.
*
* @return true if write will block on MongoDB journal
*/
bool journal() const;
/**
* If fsync is set and the server is running without journaling,
* the write will only be considered successful when the server has synced
* all data files to disk. If the server is running with journaling, this acts
* the same as if journal() was set. Cannot be used in combination with journal(true).
*
* @return true if the fsync option is set on the write.
*/
bool fsync() const;
/**
* Length of time to block waiting for nodes, journal, or fsync.
*
* @return int representing milliseconds to wait for write
*/
int32_t timeout() const;
/** Sets the number of nodes required for write to be successful. */
WriteConcern& nodes(int w);
/** Sets the type of nodes required for write to be successful. */
WriteConcern& mode(const StringData& w);
/** Sets whether journal is required for write to be successful. */
WriteConcern& journal(bool j);
/**
* Sets the value of the fsync parameter.
*
* @note The behavior of this option is dependent on server configuration.
* @see The comment on fsync() for details.
*/
WriteConcern& fsync(bool fsync);
/** Sets timeout to wait for write to be successful. */
WriteConcern& timeout(int timeout);
/** Whether we need to send getLastError for this WriteConcern */
bool requiresConfirmation() const;
/** Whether the write concern currently reflects a mode */
bool hasMode() const;
/** Turn write concern into an object for inclusion in GetLastError or write command */
BSONObj obj() const;
private:
// Enabled option book keeping
static const size_t kNumOptions = 5;
enum Options { kW, kWStr, kJ, kFsync, kTimeout };
std::bitset<kNumOptions> _enabled;
// Actual option values
int32_t _w;
std::string _w_str;
bool _j;
bool _fsync;
int32_t _timeout;
};
} // namespace mongo
|