mirror of https://github.com/mongodb/mongo
SERVER-1270 Hook StringData to BufBuilder
This commit is contained in:
parent
d0d79d0fbf
commit
f51a4d0669
|
|
@ -82,7 +82,7 @@ namespace mongo {
|
|||
|
||||
void appendSelfToBufBuilder(BufBuilder& b) const {
|
||||
assert( objsize() );
|
||||
b.append(reinterpret_cast<const void *>( objdata() ), objsize());
|
||||
b.appendBuf(reinterpret_cast<const void *>( objdata() ), objsize());
|
||||
}
|
||||
|
||||
/** Readable representation of a BSON object in an extended JSON-style notation.
|
||||
|
|
|
|||
|
|
@ -106,16 +106,16 @@ namespace mongo {
|
|||
/** append element to the object we are building */
|
||||
BSONObjBuilder& append( const BSONElement& e) {
|
||||
assert( !e.eoo() ); // do not append eoo, that would corrupt us. the builder auto appends when done() is called.
|
||||
_b.append((void*) e.rawdata(), e.size());
|
||||
_b.appendBuf((void*) e.rawdata(), e.size());
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** append an element but with a new name */
|
||||
BSONObjBuilder& appendAs(const BSONElement& e, const char *as) {
|
||||
assert( !e.eoo() ); // do not append eoo, that would corrupt us. the builder auto appends when done() is called.
|
||||
_b.append((char) e.type());
|
||||
_b.append(as);
|
||||
_b.append((void *) e.value(), e.valuesize());
|
||||
_b.appendNum((char) e.type());
|
||||
_b.appendStr(as);
|
||||
_b.appendBuf((void *) e.value(), e.valuesize());
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
@ -127,25 +127,25 @@ namespace mongo {
|
|||
|
||||
/** add a subobject as a member */
|
||||
BSONObjBuilder& append(const char *fieldName, BSONObj subObj) {
|
||||
_b.append((char) Object);
|
||||
_b.append(fieldName);
|
||||
_b.append((void *) subObj.objdata(), subObj.objsize());
|
||||
_b.appendNum((char) Object);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendBuf((void *) subObj.objdata(), subObj.objsize());
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** add a subobject as a member */
|
||||
BSONObjBuilder& append(const string& fieldName , BSONObj subObj) {
|
||||
_b.append((char) Object);
|
||||
_b.append(fieldName.c_str(), fieldName.size()+1);
|
||||
_b.append((void *) subObj.objdata(), subObj.objsize());
|
||||
_b.appendNum((char) Object);
|
||||
_b.appendStr(fieldName); // XXX
|
||||
_b.appendBuf((void *) subObj.objdata(), subObj.objsize());
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** add header for a new subobject and return bufbuilder for writing to
|
||||
the subobject's body */
|
||||
BufBuilder &subobjStart(const char *fieldName) {
|
||||
_b.append((char) Object);
|
||||
_b.append(fieldName);
|
||||
_b.appendNum((char) Object);
|
||||
_b.appendStr(fieldName);
|
||||
return _b;
|
||||
}
|
||||
|
||||
|
|
@ -153,9 +153,9 @@ namespace mongo {
|
|||
style fields in it.
|
||||
*/
|
||||
BSONObjBuilder& appendArray(const char *fieldName, const BSONObj &subObj) {
|
||||
_b.append((char) Array);
|
||||
_b.append(fieldName);
|
||||
_b.append((void *) subObj.objdata(), subObj.objsize());
|
||||
_b.appendNum((char) Array);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendBuf((void *) subObj.objdata(), subObj.objsize());
|
||||
return *this;
|
||||
}
|
||||
BSONObjBuilder& append(const char *fieldName, BSONArray arr) {
|
||||
|
|
@ -165,32 +165,32 @@ namespace mongo {
|
|||
/** add header for a new subarray and return bufbuilder for writing to
|
||||
the subarray's body */
|
||||
BufBuilder &subarrayStart(const char *fieldName) {
|
||||
_b.append((char) Array);
|
||||
_b.append(fieldName);
|
||||
_b.appendNum((char) Array);
|
||||
_b.appendStr(fieldName);
|
||||
return _b;
|
||||
}
|
||||
|
||||
/** Append a boolean element */
|
||||
BSONObjBuilder& appendBool(const char *fieldName, int val) {
|
||||
_b.append((char) Bool);
|
||||
_b.append(fieldName);
|
||||
_b.append((char) (val?1:0));
|
||||
_b.appendNum((char) Bool);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendNum((char) (val?1:0));
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** Append a boolean element */
|
||||
BSONObjBuilder& append(const char *fieldName, bool val) {
|
||||
_b.append((char) Bool);
|
||||
_b.append(fieldName);
|
||||
_b.append((char) (val?1:0));
|
||||
_b.appendNum((char) Bool);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendNum((char) (val?1:0));
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** Append a 32 bit integer element */
|
||||
BSONObjBuilder& append(const char *fieldName, int n) {
|
||||
_b.append((char) NumberInt);
|
||||
_b.append(fieldName);
|
||||
_b.append(n);
|
||||
_b.appendNum((char) NumberInt);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendNum(n);
|
||||
return *this;
|
||||
}
|
||||
/** Append a 32 bit integer element */
|
||||
|
|
@ -205,9 +205,9 @@ namespace mongo {
|
|||
|
||||
/** Append a NumberLong */
|
||||
BSONObjBuilder& append(const char *fieldName, long long n) {
|
||||
_b.append((char) NumberLong);
|
||||
_b.append(fieldName);
|
||||
_b.append(n);
|
||||
_b.appendNum((char) NumberLong);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendNum(n);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
@ -255,9 +255,9 @@ namespace mongo {
|
|||
|
||||
/** Append a double element */
|
||||
BSONObjBuilder& append(const char *fieldName, double n) {
|
||||
_b.append((char) NumberDouble);
|
||||
_b.append(fieldName);
|
||||
_b.append(n);
|
||||
_b.appendNum((char) NumberDouble);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendNum(n);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
@ -271,17 +271,17 @@ namespace mongo {
|
|||
method for this.
|
||||
*/
|
||||
BSONObjBuilder& appendOID(const char *fieldName, OID *oid = 0 , bool generateIfBlank = false ) {
|
||||
_b.append((char) jstOID);
|
||||
_b.append(fieldName);
|
||||
_b.appendNum((char) jstOID);
|
||||
_b.appendStr(fieldName);
|
||||
if ( oid )
|
||||
_b.append( (void *) oid, 12 );
|
||||
_b.appendBuf( (void *) oid, 12 );
|
||||
else {
|
||||
OID tmp;
|
||||
if ( generateIfBlank )
|
||||
tmp.init();
|
||||
else
|
||||
tmp.clear();
|
||||
_b.append( (void *) &tmp, 12 );
|
||||
_b.appendBuf( (void *) &tmp, 12 );
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
|
@ -292,9 +292,9 @@ namespace mongo {
|
|||
@returns the builder object
|
||||
*/
|
||||
BSONObjBuilder& append( const char *fieldName, OID oid ) {
|
||||
_b.append((char) jstOID);
|
||||
_b.append(fieldName);
|
||||
_b.append( (void *) &oid, 12 );
|
||||
_b.appendNum((char) jstOID);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendBuf( (void *) &oid, 12 );
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
@ -311,9 +311,9 @@ namespace mongo {
|
|||
the number of seconds since January 1, 1970, 00:00:00 GMT
|
||||
*/
|
||||
BSONObjBuilder& appendTimeT(const char *fieldName, time_t dt) {
|
||||
_b.append((char) Date);
|
||||
_b.append(fieldName);
|
||||
_b.append(static_cast<unsigned long long>(dt) * 1000);
|
||||
_b.appendNum((char) Date);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendNum(static_cast<unsigned long long>(dt) * 1000);
|
||||
return *this;
|
||||
}
|
||||
/** Append a date.
|
||||
|
|
@ -329,9 +329,9 @@ namespace mongo {
|
|||
log() << "DEV WARNING appendDate() called with a tiny (but nonzero) date" << endl;
|
||||
}
|
||||
#endif
|
||||
_b.append((char) Date);
|
||||
_b.append(fieldName);
|
||||
_b.append(dt);
|
||||
_b.appendNum((char) Date);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendNum(dt);
|
||||
return *this;
|
||||
}
|
||||
BSONObjBuilder& append(const char *fieldName, Date_t dt) {
|
||||
|
|
@ -343,10 +343,10 @@ namespace mongo {
|
|||
@param regex options such as "i" or "g"
|
||||
*/
|
||||
BSONObjBuilder& appendRegex(const char *fieldName, const char *regex, const char *options = "") {
|
||||
_b.append((char) RegEx);
|
||||
_b.append(fieldName);
|
||||
_b.append(regex);
|
||||
_b.append(options);
|
||||
_b.appendNum((char) RegEx);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendStr(regex);
|
||||
_b.appendStr(options);
|
||||
return *this;
|
||||
}
|
||||
/** Append a regular expression value
|
||||
|
|
@ -357,18 +357,18 @@ namespace mongo {
|
|||
return appendRegex(fieldName.c_str(), regex.c_str(), options.c_str());
|
||||
}
|
||||
BSONObjBuilder& appendCode(const char *fieldName, const char *code) {
|
||||
_b.append((char) Code);
|
||||
_b.append(fieldName);
|
||||
_b.append((int) strlen(code)+1);
|
||||
_b.append(code);
|
||||
_b.appendNum((char) Code);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendNum((int) strlen(code)+1);
|
||||
_b.appendStr(code);
|
||||
return *this;
|
||||
}
|
||||
/** Append a string element. len DOES include terminating nul */
|
||||
BSONObjBuilder& append(const char *fieldName, const char *str, int len) {
|
||||
_b.append((char) String);
|
||||
_b.append(fieldName);
|
||||
_b.append((int)len);
|
||||
_b.append(str, len);
|
||||
_b.appendNum((char) String);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendNum((int)len);
|
||||
_b.appendBuf(str, len);
|
||||
return *this;
|
||||
}
|
||||
/** Append a string element */
|
||||
|
|
@ -380,40 +380,40 @@ namespace mongo {
|
|||
return append(fieldName, str.c_str(), (int) str.size()+1);
|
||||
}
|
||||
BSONObjBuilder& appendSymbol(const char *fieldName, const char *symbol) {
|
||||
_b.append((char) Symbol);
|
||||
_b.append(fieldName);
|
||||
_b.append((int) strlen(symbol)+1);
|
||||
_b.append(symbol);
|
||||
_b.appendNum((char) Symbol);
|
||||
_b.appendStr(fieldName);
|
||||
_b.appendNum((int) strlen(symbol)+1);
|
||||
_b.appendStr(symbol);
|
||||
return *this; }
|
||||
|
||||
/** Append a Null element to the object */
|
||||
BSONObjBuilder& appendNull( const char *fieldName ) {
|
||||
_b.append( (char) jstNULL );
|
||||
_b.append( fieldName );
|
||||
_b.appendNum( (char) jstNULL );
|
||||
_b.appendStr( fieldName );
|
||||
return *this; }
|
||||
|
||||
// Append an element that is less than all other keys.
|
||||
BSONObjBuilder& appendMinKey( const char *fieldName ) {
|
||||
_b.append( (char) MinKey );
|
||||
_b.append( fieldName );
|
||||
_b.appendNum( (char) MinKey );
|
||||
_b.appendStr( fieldName );
|
||||
return *this; }
|
||||
// Append an element that is greater than all other keys.
|
||||
BSONObjBuilder& appendMaxKey( const char *fieldName ) {
|
||||
_b.append( (char) MaxKey );
|
||||
_b.append( fieldName );
|
||||
_b.appendNum( (char) MaxKey );
|
||||
_b.appendStr( fieldName );
|
||||
return *this; }
|
||||
|
||||
// Append a Timestamp field -- will be updated to next OpTime on db insert.
|
||||
BSONObjBuilder& appendTimestamp( const char *fieldName ) {
|
||||
_b.append( (char) Timestamp );
|
||||
_b.append( fieldName );
|
||||
_b.append( (unsigned long long) 0 );
|
||||
_b.appendNum( (char) Timestamp );
|
||||
_b.appendStr( fieldName );
|
||||
_b.appendNum( (unsigned long long) 0 );
|
||||
return *this; }
|
||||
|
||||
BSONObjBuilder& appendTimestamp( const char *fieldName , unsigned long long val ) {
|
||||
_b.append( (char) Timestamp );
|
||||
_b.append( fieldName );
|
||||
_b.append( val );
|
||||
_b.appendNum( (char) Timestamp );
|
||||
_b.appendStr( fieldName );
|
||||
_b.appendNum( val );
|
||||
return *this; }
|
||||
|
||||
/**
|
||||
|
|
@ -428,11 +428,11 @@ namespace mongo {
|
|||
@deprecated
|
||||
*/
|
||||
BSONObjBuilder& appendDBRef( const char *fieldName, const char *ns, const OID &oid ) {
|
||||
_b.append( (char) DBRef );
|
||||
_b.append( fieldName );
|
||||
_b.append( (int) strlen( ns ) + 1 );
|
||||
_b.append( ns );
|
||||
_b.append( (void *) &oid, 12 );
|
||||
_b.appendNum( (char) DBRef );
|
||||
_b.appendStr( fieldName );
|
||||
_b.appendNum( (int) strlen( ns ) + 1 );
|
||||
_b.appendStr( ns );
|
||||
_b.appendBuf( (void *) &oid, 12 );
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
@ -444,11 +444,11 @@ namespace mongo {
|
|||
@param data the byte array
|
||||
*/
|
||||
BSONObjBuilder& appendBinData( const char *fieldName, int len, BinDataType type, const char *data ) {
|
||||
_b.append( (char) BinData );
|
||||
_b.append( fieldName );
|
||||
_b.append( len );
|
||||
_b.append( (char) type );
|
||||
_b.append( (void *) data, len );
|
||||
_b.appendNum( (char) BinData );
|
||||
_b.appendStr( fieldName );
|
||||
_b.appendNum( len );
|
||||
_b.appendNum( (char) type );
|
||||
_b.appendBuf( (void *) data, len );
|
||||
return *this;
|
||||
}
|
||||
BSONObjBuilder& appendBinData( const char *fieldName, int len, BinDataType type, const unsigned char *data ) {
|
||||
|
|
@ -462,30 +462,31 @@ namespace mongo {
|
|||
@param len the length of data
|
||||
*/
|
||||
BSONObjBuilder& appendBinDataArrayDeprecated( const char * fieldName , const char * data , int len ){
|
||||
_b.append( (char) BinData );
|
||||
_b.append( fieldName );
|
||||
_b.append( len + 4 );
|
||||
_b.append( (char)0x2 );
|
||||
_b.append( len );
|
||||
_b.append( (void *) data, len );
|
||||
return *this; }
|
||||
_b.appendNum( (char) BinData );
|
||||
_b.appendStr( fieldName );
|
||||
_b.appendNum( len + 4 );
|
||||
_b.appendNum( (char)0x2 );
|
||||
_b.appendNum( len );
|
||||
_b.appendBuf( (void *) data, len );
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** Append to the BSON object a field of type CodeWScope. This is a javascript code
|
||||
fragment accompanied by some scope that goes with it.
|
||||
*/
|
||||
BSONObjBuilder& appendCodeWScope( const char *fieldName, const char *code, const BSONObj &scope ) {
|
||||
_b.append( (char) CodeWScope );
|
||||
_b.append( fieldName );
|
||||
_b.append( ( int )( 4 + 4 + strlen( code ) + 1 + scope.objsize() ) );
|
||||
_b.append( ( int ) strlen( code ) + 1 );
|
||||
_b.append( code );
|
||||
_b.append( ( void * )scope.objdata(), scope.objsize() );
|
||||
_b.appendNum( (char) CodeWScope );
|
||||
_b.appendStr( fieldName );
|
||||
_b.appendNum( ( int )( 4 + 4 + strlen( code ) + 1 + scope.objsize() ) );
|
||||
_b.appendNum( ( int ) strlen( code ) + 1 );
|
||||
_b.appendStr( code );
|
||||
_b.appendBuf( ( void * )scope.objdata(), scope.objsize() );
|
||||
return *this;
|
||||
}
|
||||
|
||||
void appendUndefined( const char *fieldName ) {
|
||||
_b.append( (char) Undefined );
|
||||
_b.append( fieldName );
|
||||
_b.appendNum( (char) Undefined );
|
||||
_b.appendStr( fieldName );
|
||||
}
|
||||
|
||||
/* helper function -- see Query::where() for primary way to do this. */
|
||||
|
|
@ -609,7 +610,7 @@ namespace mongo {
|
|||
|
||||
_doneCalled = true;
|
||||
_s.endField();
|
||||
_b.append((char) EOO);
|
||||
_b.appendNum((char) EOO);
|
||||
char *data = _b.buf() + _offset;
|
||||
int size = _b.len() - _offset;
|
||||
*((int*)data) = size;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include "../stringdata.h"
|
||||
|
||||
namespace mongo {
|
||||
|
||||
|
|
@ -70,35 +71,38 @@ namespace mongo {
|
|||
/* assume ownership of the buffer - you must then free() it */
|
||||
void decouple() { data = 0; }
|
||||
|
||||
template<class T> void append(T j) {
|
||||
*((T*)grow(sizeof(T))) = j;
|
||||
void appendNum(char j){
|
||||
*((char*)grow(sizeof(char))) = j;
|
||||
}
|
||||
void append(short j) {
|
||||
append<short>(j);
|
||||
void appendNum(short j) {
|
||||
*((short*)grow(sizeof(short))) = j;
|
||||
}
|
||||
void append(int j) {
|
||||
append<int>(j);
|
||||
void appendNum(int j) {
|
||||
*((int*)grow(sizeof(int))) = j;
|
||||
}
|
||||
void append(unsigned j) {
|
||||
append<unsigned>(j);
|
||||
void appendNum(unsigned j) {
|
||||
*((unsigned*)grow(sizeof(unsigned))) = j;
|
||||
}
|
||||
void append(bool j) {
|
||||
append<bool>(j);
|
||||
void appendNum(bool j) {
|
||||
*((bool*)grow(sizeof(bool))) = j;
|
||||
}
|
||||
void append(double j) {
|
||||
append<double>(j);
|
||||
void appendNum(double j) {
|
||||
*((double*)grow(sizeof(double))) = j;
|
||||
}
|
||||
void appendNum(long long j) {
|
||||
*((long long*)grow(sizeof(long long))) = j;
|
||||
}
|
||||
void appendNum(unsigned long long j) {
|
||||
*((unsigned long long*)grow(sizeof(unsigned long long))) = j;
|
||||
}
|
||||
|
||||
void append(const void *src, size_t len) {
|
||||
void appendBuf(const void *src, size_t len) {
|
||||
memcpy(grow((int) len), src, len);
|
||||
}
|
||||
|
||||
void append(const char *str) {
|
||||
append((void*) str, strlen(str)+1);
|
||||
}
|
||||
|
||||
void append(const std::string &str) {
|
||||
append( (void *)str.c_str(), str.length() + 1 );
|
||||
void appendStr(const StringData &str) {
|
||||
const int len = str.size() + 1;
|
||||
memcpy(grow(len), str.data(), len);
|
||||
}
|
||||
|
||||
int len() const {
|
||||
|
|
|
|||
|
|
@ -654,8 +654,8 @@ namespace mongo {
|
|||
|
||||
BufBuilder b;
|
||||
int opts = 0;
|
||||
b.append( opts );
|
||||
b.append( ns );
|
||||
b.appendNum( opts );
|
||||
b.appendStr( ns );
|
||||
obj.appendSelfToBufBuilder( b );
|
||||
|
||||
toSend.setData( dbInsert , b.buf() , b.len() );
|
||||
|
|
@ -668,8 +668,8 @@ namespace mongo {
|
|||
|
||||
BufBuilder b;
|
||||
int opts = 0;
|
||||
b.append( opts );
|
||||
b.append( ns );
|
||||
b.appendNum( opts );
|
||||
b.appendStr( ns );
|
||||
for( vector< BSONObj >::const_iterator i = v.begin(); i != v.end(); ++i )
|
||||
i->appendSelfToBufBuilder( b );
|
||||
|
||||
|
|
@ -683,13 +683,13 @@ namespace mongo {
|
|||
|
||||
BufBuilder b;
|
||||
int opts = 0;
|
||||
b.append( opts );
|
||||
b.append( ns );
|
||||
b.appendNum( opts );
|
||||
b.appendStr( ns );
|
||||
|
||||
int flags = 0;
|
||||
if ( justOne )
|
||||
flags |= 1;
|
||||
b.append( flags );
|
||||
b.appendNum( flags );
|
||||
|
||||
obj.obj.appendSelfToBufBuilder( b );
|
||||
|
||||
|
|
@ -701,13 +701,13 @@ namespace mongo {
|
|||
void DBClientBase::update( const string & ns , Query query , BSONObj obj , bool upsert , bool multi ) {
|
||||
|
||||
BufBuilder b;
|
||||
b.append( (int)0 ); // reserved
|
||||
b.append( ns );
|
||||
b.appendNum( (int)0 ); // reserved
|
||||
b.appendStr( ns );
|
||||
|
||||
int flags = 0;
|
||||
if ( upsert ) flags |= UpdateOption_Upsert;
|
||||
if ( multi ) flags |= UpdateOption_Multi;
|
||||
b.append( flags );
|
||||
b.appendNum( flags );
|
||||
|
||||
query.obj.appendSelfToBufBuilder( b );
|
||||
obj.appendSelfToBufBuilder( b );
|
||||
|
|
@ -828,10 +828,10 @@ namespace mongo {
|
|||
// see query.h for the protocol we are using here.
|
||||
BufBuilder b;
|
||||
int opts = queryOptions;
|
||||
b.append(opts);
|
||||
b.append(ns.c_str());
|
||||
b.append(nToSkip);
|
||||
b.append(nToReturn);
|
||||
b.appendNum(opts);
|
||||
b.appendStr(ns.c_str());
|
||||
b.appendNum(nToSkip);
|
||||
b.appendNum(nToReturn);
|
||||
query.appendSelfToBufBuilder(b);
|
||||
if ( fieldsToReturn )
|
||||
fieldsToReturn->appendSelfToBufBuilder(b);
|
||||
|
|
@ -892,9 +892,9 @@ namespace mongo {
|
|||
|
||||
void DBClientConnection::killCursor( long long cursorId ){
|
||||
BufBuilder b;
|
||||
b.append( (int)0 ); // reserved
|
||||
b.append( (int)1 ); // number
|
||||
b.append( cursorId );
|
||||
b.appendNum( (int)0 ); // reserved
|
||||
b.appendNum( (int)1 ); // number
|
||||
b.appendNum( cursorId );
|
||||
|
||||
Message m;
|
||||
m.setData( dbKillCursors , b.buf() , b.len() );
|
||||
|
|
|
|||
|
|
@ -41,10 +41,10 @@ namespace mongo {
|
|||
assembleRequest( ns, query, nextBatchSize() , nToSkip, fieldsToReturn, opts, toSend );
|
||||
} else {
|
||||
BufBuilder b;
|
||||
b.append( opts );
|
||||
b.append( ns.c_str() );
|
||||
b.append( nToReturn );
|
||||
b.append( cursorId );
|
||||
b.appendNum( opts );
|
||||
b.appendStr( ns.c_str() );
|
||||
b.appendNum( nToReturn );
|
||||
b.appendNum( cursorId );
|
||||
toSend.setData( dbGetMore, b.buf(), b.len() );
|
||||
}
|
||||
if ( !connector->call( toSend, *m, false ) )
|
||||
|
|
@ -63,10 +63,10 @@ namespace mongo {
|
|||
assert(nToReturn > 0);
|
||||
}
|
||||
BufBuilder b;
|
||||
b.append(opts);
|
||||
b.append(ns.c_str());
|
||||
b.append(nextBatchSize());
|
||||
b.append(cursorId);
|
||||
b.appendNum(opts);
|
||||
b.appendStr(ns.c_str());
|
||||
b.appendNum(nextBatchSize());
|
||||
b.appendNum(cursorId);
|
||||
|
||||
Message toSend;
|
||||
toSend.setData(dbGetMore, b.buf(), b.len());
|
||||
|
|
@ -209,9 +209,9 @@ namespace mongo {
|
|||
|
||||
if ( cursorId && _ownCursor ) {
|
||||
BufBuilder b;
|
||||
b.append( (int)0 ); // reserved
|
||||
b.append( (int)1 ); // number
|
||||
b.append( cursorId );
|
||||
b.appendNum( (int)0 ); // reserved
|
||||
b.appendNum( (int)1 ); // number
|
||||
b.appendNum( cursorId );
|
||||
|
||||
Message m;
|
||||
m.setData( dbKillCursors , b.buf() , b.len() );
|
||||
|
|
|
|||
16
db/db.cpp
16
db/db.cpp
|
|
@ -269,14 +269,14 @@ sendmore:
|
|||
string ns = dbresponse.exhaust; // before reset() free's it...
|
||||
m.reset();
|
||||
BufBuilder b(512);
|
||||
b.append((int) 0 /*size set later in appendData()*/);
|
||||
b.append(header->id);
|
||||
b.append(header->responseTo);
|
||||
b.append((int) dbGetMore);
|
||||
b.append((int) 0);
|
||||
b.append(ns);
|
||||
b.append((int) 0); // ntoreturn
|
||||
b.append(cursorid);
|
||||
b.appendNum((int) 0 /*size set later in appendData()*/);
|
||||
b.appendNum(header->id);
|
||||
b.appendNum(header->responseTo);
|
||||
b.appendNum((int) dbGetMore);
|
||||
b.appendNum((int) 0);
|
||||
b.appendStr(ns);
|
||||
b.appendNum((int) 0); // ntoreturn
|
||||
b.appendNum(cursorid);
|
||||
m.appendData(b.buf(), b.len());
|
||||
b.decouple();
|
||||
DEV log() << "exhaust=true sending more" << endl;
|
||||
|
|
|
|||
|
|
@ -1899,7 +1899,7 @@ namespace mongo {
|
|||
// anObjBuilder.append("ok", ok);
|
||||
anObjBuilder.append("ok", ok?1.0:0.0);
|
||||
BSONObj x = anObjBuilder.done();
|
||||
b.append((void*) x.objdata(), x.objsize());
|
||||
b.appendBuf((void*) x.objdata(), x.objsize());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ namespace mongo {
|
|||
) {
|
||||
BufBuilder b(32768);
|
||||
b.skip(sizeof(QueryResult));
|
||||
b.append(data, size);
|
||||
b.appendBuf(data, size);
|
||||
QueryResult *qr = (QueryResult *) b.buf();
|
||||
qr->_resultFlags() = queryResultFlags;
|
||||
qr->len = b.len();
|
||||
|
|
@ -243,7 +243,7 @@ namespace mongo {
|
|||
inline void replyToQuery(int queryResultFlags, Message &m, DbResponse &dbresponse, BSONObj obj) {
|
||||
BufBuilder b;
|
||||
b.skip(sizeof(QueryResult));
|
||||
b.append((void*) obj.objdata(), obj.objsize());
|
||||
b.appendBuf((void*) obj.objdata(), obj.objsize());
|
||||
QueryResult* msgdata = (QueryResult *) b.buf();
|
||||
b.decouple();
|
||||
QueryResult *qr = msgdata;
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ namespace mongo {
|
|||
|
||||
BufBuilder b;
|
||||
b.skip(sizeof(QueryResult));
|
||||
b.append((void*) errObj.objdata(), errObj.objsize());
|
||||
b.appendBuf((void*) errObj.objdata(), errObj.objsize());
|
||||
|
||||
// todo: call replyToQuery() from here instead of this!!! see dbmessage.h
|
||||
QueryResult * msgdata = (QueryResult *) b.buf();
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ namespace mongo {
|
|||
anObjBuilder.append("errmsg", "db assertion failure");
|
||||
anObjBuilder.append("ok", 0.0);
|
||||
BSONObj x = anObjBuilder.done();
|
||||
b.append((void*) x.objdata(), x.objsize());
|
||||
b.appendBuf((void*) x.objdata(), x.objsize());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ namespace mongo {
|
|||
b.append("$diskLoc", loc->toBSONObj());
|
||||
b.done();
|
||||
} else {
|
||||
bb.append((void*) js.objdata(), js.objsize());
|
||||
bb.appendBuf((void*) js.objdata(), js.objsize());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ namespace JsobjTests {
|
|||
public:
|
||||
void run() {
|
||||
BufBuilder b( 0 );
|
||||
b.append( "foo" );
|
||||
b.appendStr( "foo" );
|
||||
ASSERT_EQUALS( 4, b.len() );
|
||||
ASSERT( strcmp( "foo", b.buf() ) == 0 );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -992,10 +992,10 @@ namespace QueryOptimizerTests {
|
|||
// see query.h for the protocol we are using here.
|
||||
BufBuilder b;
|
||||
int opts = queryOptions;
|
||||
b.append(opts);
|
||||
b.append(ns.c_str());
|
||||
b.append(nToSkip);
|
||||
b.append(nToReturn);
|
||||
b.appendNum(opts);
|
||||
b.appendStr(ns.c_str());
|
||||
b.appendNum(nToSkip);
|
||||
b.appendNum(nToReturn);
|
||||
query.appendSelfToBufBuilder(b);
|
||||
if ( fieldsToReturn )
|
||||
fieldsToReturn->appendSelfToBufBuilder(b);
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ namespace mongo {
|
|||
while ( _cursor->more() ){
|
||||
BSONObj o = _cursor->next();
|
||||
|
||||
b.append( (void*)o.objdata() , o.objsize() );
|
||||
b.appendBuf( (void*)o.objdata() , o.objsize() );
|
||||
num++;
|
||||
|
||||
if ( b.len() > maxSize ){
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ namespace mongo {
|
|||
b.skip( sizeof( QueryResult ) );
|
||||
{
|
||||
BSONObj obj = BSON( "$err" << errmsg );
|
||||
b.append( obj.objdata() , obj.objsize() );
|
||||
b.appendBuf( obj.objdata() , obj.objsize() );
|
||||
}
|
||||
|
||||
QueryResult *qr = (QueryResult*)b.buf();
|
||||
|
|
|
|||
|
|
@ -220,12 +220,12 @@ void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *pa
|
|||
if ( size_payload < m.header()->len ) {
|
||||
bytesRemainingInMessage[ c ] = m.header()->len - size_payload;
|
||||
messageBuilder[ c ].reset( new BufBuilder() );
|
||||
messageBuilder[ c ]->append( (void*)payload, size_payload );
|
||||
messageBuilder[ c ]->appendBuf( (void*)payload, size_payload );
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
bytesRemainingInMessage[ c ] -= size_payload;
|
||||
messageBuilder[ c ]->append( (void*)payload, size_payload );
|
||||
messageBuilder[ c ]->appendBuf( (void*)payload, size_payload );
|
||||
if ( bytesRemainingInMessage[ c ] < 0 ) {
|
||||
cerr << "Received too many bytes to complete message, resetting buffer" << endl;
|
||||
bytesRemainingInMessage[ c ] = 0;
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ namespace mongo {
|
|||
if ( doneSetup == 1717 ) {
|
||||
BufBuilder b(512);
|
||||
time_t_to_String( time(0) , b.grow(20) );
|
||||
b.append( ss.str() );
|
||||
b.appendStr( ss.str() );
|
||||
const char *s = b.buf();
|
||||
|
||||
string threadName = getThreadName();
|
||||
|
|
|
|||
Loading…
Reference in New Issue