22 #include "mongo/base/data_view.h"
23 #include "mongo/bson/util/builder.h"
24 #include "mongo/client/export_macros.h"
25 #include "mongo/util/time_support.h"
60 class MONGO_CLIENT_API
OID {
69 size_t operator() (
const OID& oid)
const;
77 kInstanceUniqueSize = 5,
82 explicit OID(
const std::string &s) {
87 explicit OID(
const unsigned char (&arr)[kOIDSize]) {
88 std::memcpy(_data, arr,
sizeof(arr));
92 void clear() { std::memset(_data, 0, kOIDSize); }
94 int compare(
const OID& other )
const {
return memcmp( _data , other._data , kOIDSize ); }
97 std::string toString()
const;
99 std::string toIncString()
const;
101 static OID MONGO_CLIENT_FUNC gen() {
102 OID o((no_initialize_tag()));
110 static OID MONGO_CLIENT_FUNC from(T* buf) {
111 OID o((no_initialize_tag()));
112 std::memcpy(o._data, buf, OID::kOIDSize);
116 static OID MONGO_CLIENT_FUNC max() {
117 OID o((no_initialize_tag()));
118 std::memset(o._data, 0xFF, kOIDSize);
126 void init(
const std::string& s );
129 void init( Date_t date,
bool max=
false );
131 time_t asTimeT()
const;
132 Date_t asDateT()
const {
return asTimeT() * 1000LL; }
136 return compare(OID()) != 0;
143 void hash_combine(
size_t &seed)
const;
146 static void MONGO_CLIENT_FUNC justForked();
148 static unsigned MONGO_CLIENT_FUNC getMachineId();
149 static void MONGO_CLIENT_FUNC regenMachineId();
156 static InstanceUnique MONGO_CLIENT_FUNC generate(SecureRandom& entropy);
157 uint8_t bytes[kInstanceUniqueSize];
162 static Increment MONGO_CLIENT_FUNC next();
163 uint8_t bytes[kIncrementSize];
166 void setTimestamp(Timestamp timestamp);
170 Timestamp getTimestamp()
const;
174 ConstDataView view()
const {
175 return ConstDataView(_data);
181 return DataView(_data);
186 struct no_initialize_tag {};
187 explicit OID(no_initialize_tag) {}
189 char _data[kOIDSize];
192 MONGO_CLIENT_API
inline std::ostream& MONGO_CLIENT_FUNC operator<<(std::ostream &s,
const OID &o) {
193 return (s << o.toString());
196 MONGO_CLIENT_API
inline StringBuilder& MONGO_CLIENT_FUNC operator<<(StringBuilder& s,
const OID& o) {
197 return (s << o.toString());
214 MONGO_CLIENT_API
inline bool MONGO_CLIENT_FUNC operator==(
const OID& lhs,
const OID& rhs) {
return lhs.compare(rhs) == 0; }
215 MONGO_CLIENT_API
inline bool MONGO_CLIENT_FUNC operator!=(
const OID& lhs,
const OID& rhs) {
return lhs.compare(rhs) != 0; }
216 MONGO_CLIENT_API
inline bool MONGO_CLIENT_FUNC operator<(
const OID& lhs,
const OID& rhs) {
return lhs.compare(rhs) < 0; }
217 MONGO_CLIENT_API
inline bool MONGO_CLIENT_FUNC operator<=(
const OID& lhs,
const OID& rhs) {
return lhs.compare(rhs) <= 0; }
Functor compatible with std::hash for std::unordered_{map,set} Warning: The hash function is subject ...
Definition: oid.h:68
JsonStringFormat
Formatting mode for generating JSON from BSON.
Definition: oid.h:204
the main MongoDB namespace
Definition: bulk_operation_builder.h:24
Object ID type.
Definition: oid.h:60
Updated to a Date with value next OpTime on insert.
Definition: bsontypes.h:76
strict RFC format
Definition: oid.h:206
10gen format, which is close to JS format.
Definition: oid.h:209
OID(const unsigned char(&arr)[kOIDSize])
init from a reference to a 12-byte array
Definition: oid.h:87
Javascript JSON compatible.
Definition: oid.h:211
OID(const std::string &s)
init from a 24 char hex string
Definition: oid.h:82
void clear()
initialize to 'null'
Definition: oid.h:92