本文整理汇总了C++中BSONObj::hexDump方法的典型用法代码示例。如果您正苦于以下问题:C++ BSONObj::hexDump方法的具体用法?C++ BSONObj::hexDump怎么用?C++ BSONObj::hexDump使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BSONObj
的用法示例。
在下文中一共展示了BSONObj::hexDump方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: nextJsObj
BSONObj nextJsObj( const char *context ) {
BSONObj ret = DbMessage::nextJsObj();
if ( objcheck && !ret.valid() ) {
// TODO provide more debugging info
cout << "invalid object in " << context << ": " << ret.hexDump() << endl;
}
return ret;
}
示例2: debug
bool debug( const BSONObj& o , int depth=0) {
string prefix = "";
for ( int i=0; i<depth; i++ ) {
prefix += "\t\t\t";
}
int read = 4;
try {
cout << prefix << "--- new object ---\n";
cout << prefix << "\t size : " << o.objsize() << "\n";
BSONObjIterator i(o);
while ( i.more() ) {
BSONElement e = i.next();
cout << prefix << "\t\t " << e.fieldName() << "\n" << prefix << "\t\t\t type:" << setw(3) << e.type() << " size: " << e.size() << endl;
if ( ( read + e.size() ) > o.objsize() ) {
cout << prefix << " SIZE DOES NOT WORK" << endl;
return false;
}
read += e.size();
try {
e.validate();
if ( e.isABSONObj() ) {
if ( ! debug( e.Obj() , depth + 1 ) ) {
//return false;
cout << prefix << "\t\t\t BAD BAD BAD" << endl;
if ( e.size() < 1000 ) {
cout << "---\n" << e.Obj().hexDump() << "\n---" << endl;
}
}
}
else if ( e.type() == String && ! isValidUTF8( e.valuestr() ) ) {
cout << prefix << "\t\t\t" << "bad utf8 String!" << endl;
}
else if ( logger::globalLogDomain()->shouldLog(logger::LogSeverity::Debug(1)) ) {
cout << prefix << "\t\t\t" << e << endl;
}
}
catch ( std::exception& e ) {
cout << prefix << "\t\t\t bad value: " << e.what() << endl;
}
}
}
catch ( std::exception& e ) {
cout << prefix << "\tbad\t" << e.what() << endl;
cout << "----\n" << o.hexDump() << "\n---" << endl;
}
return true;
}
示例3: debug
bool debug( const BSONObj& o , int depth=0) {
string prefix = "";
for ( int i=0; i<depth; i++ ) {
prefix += "\t\t\t";
}
int read = 4;
try {
cout << prefix << "--- new object ---\n";
cout << prefix << "\t size : " << o.objsize() << "\n";
// Note: this will recursively check each level of the bson and will also be called by
// this function at each level. While inefficient, it shouldn't effect correctness.
const Status status = validateBSON(o.objdata(), o.objsize());
if (!status.isOK()) {
cout << prefix << "\t OBJECT IS INVALID: " << status.reason() << '\n'
<< prefix << "\t attempting to print as much as possible" << endl;
}
BSONObjIterator i(o);
while ( i.more() ) {
// This call verifies it is safe to call size() and fieldName() but doesn't check
// whether the element extends past the end of the object. That is done below.
BSONElement e = i.next(/*checkEnd=*/true);
cout << prefix << "\t\t " << e.fieldName() << "\n"
<< prefix << "\t\t\t type:" << setw(3) << e.type() << " size: " << e.size()
<< endl;
if ( ( read + e.size() ) > o.objsize() ) {
cout << prefix << " SIZE DOES NOT WORK" << endl;
return false;
}
read += e.size();
try {
if ( e.isABSONObj() ) {
if ( ! debug( e.Obj() , depth + 1 ) ) {
//return false;
cout << prefix << "\t\t\t BAD BAD BAD" << endl;
if ( e.size() < 1000 ) {
cout << "---\n" << e.Obj().hexDump() << "\n---" << endl;
}
}
}
else if ( e.type() == String && ! isValidUTF8( e.valuestr() ) ) {
cout << prefix << "\t\t\t" << "bad utf8 String!" << endl;
}
else if ( logger::globalLogDomain()->shouldLog(logger::LogSeverity::Debug(1)) ) {
cout << prefix << "\t\t\t" << e << endl;
}
}
catch ( std::exception& e ) {
cout << prefix << "\t\t\t bad value: " << e.what() << endl;
}
}
}
catch ( std::exception& e ) {
cout << prefix << "\tbad\t" << e.what() << endl;
cout << "----\n" << o.hexDump() << "\n---" << endl;
}
return true;
}