0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-11-30 17:10:48 +01:00
mongodb/bson/bson_db.h

71 lines
2.3 KiB
C
Raw Normal View History

2010-04-24 23:14:44 +02:00
/** @file bson_db.h
This file contains the implementation of BSON-related methods that are required
by the MongoDB database server.
Normally, for standalone BSON usage, you do not want this file - it will tend to
pull in some other files from the MongoDB project. Thus, bson.h (the main file
one would use) does not include this file.
*/
/* Copyright 2009 10gen 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 "../util/optime.h"
namespace mongo {
2010-04-25 00:25:58 +02:00
/**
Timestamps are a special BSON datatype that is used internally for replication.
Append a timestamp element to the object being ebuilt.
@param time - in millis (but stored in seconds)
*/
inline BSONObjBuilder& BSONObjBuilder::appendTimestamp( const StringData& fieldName , unsigned long long time , unsigned int inc ){
2010-04-25 00:25:58 +02:00
OpTime t( (unsigned) (time / 1000) , inc );
appendTimestamp( fieldName , t.asDate() );
return *this;
}
2010-04-24 23:14:44 +02:00
inline OpTime BSONElement::_opTime() const {
2010-07-06 22:11:56 +02:00
if( type() == mongo::Date || type() == Timestamp )
return OpTime( *reinterpret_cast< const unsigned long long* >( value() ) );
return OpTime();
2010-04-24 23:14:44 +02:00
}
inline string BSONElement::_asCode() const {
switch( type() ){
case mongo::String:
case Code:
return string(valuestr(), valuestrsize()-1);
2010-04-24 23:14:44 +02:00
case CodeWScope:
return string(codeWScopeCode(), *(int*)(valuestr())-1);
2010-04-24 23:14:44 +02:00
default:
log() << "can't convert type: " << (int)(type()) << " to code" << endl;
}
uassert( 10062 , "not code" , 0 );
return "";
}
2010-04-25 00:25:58 +02:00
inline BSONObjBuilder& BSONObjBuilderValueStream::operator<<(DateNowLabeler& id){
_builder->appendDate(_fieldName, jsTime());
_fieldName = 0;
return *_builder;
}
2010-04-24 23:14:44 +02:00
}