本文整理汇总了C++中WriteOpResult::getError方法的典型用法代码示例。如果您正苦于以下问题:C++ WriteOpResult::getError方法的具体用法?C++ WriteOpResult::getError怎么用?C++ WriteOpResult::getError使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WriteOpResult
的用法示例。
在下文中一共展示了WriteOpResult::getError方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execOneInsert
void WriteBatchExecutor::execOneInsert(ExecInsertsState* state, WriteErrorDetail** error) {
BatchItemRef currInsertItem(state->request, state->currIndex);
scoped_ptr<CurOp> currentOp(beginCurrentOp(_client, currInsertItem));
incOpStats(currInsertItem);
WriteOpResult result;
insertOne(state, &result);
if (state->hasLock()) {
// Normally, unlocking records lock time stats on the active CurOp. However,
// insertOne() may not release the lock. In that case, record time by hand.
state->getLock().recordTime();
// If we deschedule here, there could be substantial unaccounted locked time.
// Any time from here will be attributed to the next insert in the batch, or
// not attributed to any operation if this is the last op in the batch.
state->getLock().resetTime();
}
incWriteStats(currInsertItem,
result.getStats(),
result.getError(),
currentOp.get());
finishCurrentOp(_txn, _client, currentOp.get(), result.getError());
if (result.getError()) {
*error = result.releaseError();
}
}
示例2: execUpdate
void WriteBatchExecutor::execUpdate( const BatchItemRef& updateItem,
BSONObj* upsertedId,
WriteErrorDetail** error ) {
// BEGIN CURRENT OP
scoped_ptr<CurOp> currentOp( beginCurrentOp( _client, updateItem ) );
incOpStats( updateItem );
WriteOpResult result;
WriteUnitOfWork wunit(_txn->recoveryUnit());
multiUpdate( _txn, updateItem, &result );
wunit.commit();
if ( !result.getStats().upsertedID.isEmpty() ) {
*upsertedId = result.getStats().upsertedID;
}
// END CURRENT OP
incWriteStats( updateItem, result.getStats(), result.getError(), currentOp.get() );
finishCurrentOp( _txn, _client, currentOp.get(), result.getError() );
if ( result.getError() ) {
result.getError()->setIndex( updateItem.getItemIndex() );
*error = result.releaseError();
}
}
示例3: execRemove
void WriteBatchExecutor::execRemove( const BatchItemRef& removeItem,
WriteErrorDetail** error ) {
// Removes are similar to updates, but page faults are handled externally
// BEGIN CURRENT OP
scoped_ptr<CurOp> currentOp( beginCurrentOp( _client, removeItem ) );
incOpStats( removeItem );
WriteOpResult result;
// NOTE: Deletes will not fault outside the lock once any data has been written
PageFaultRetryableSection pageFaultSection;
while ( true ) {
try {
multiRemove( removeItem, &result );
break;
}
catch (PageFaultException& pfe) {
pfe.touch();
invariant(!result.getError());
continue;
}
fassertFailed(17429);
}
// END CURRENT OP
incWriteStats( removeItem, result.getStats(), result.getError(), currentOp.get() );
finishCurrentOp( _client, currentOp.get(), result.getError() );
if ( result.getError() ) {
result.getError()->setIndex( removeItem.getItemIndex() );
*error = result.releaseError();
}
}
示例4: execRemove
void WriteBatchExecutor::execRemove( const BatchItemRef& removeItem,
WriteErrorDetail** error ) {
// Removes are similar to updates, but page faults are handled externally
// BEGIN CURRENT OP
scoped_ptr<CurOp> currentOp( beginCurrentOp( _client, removeItem ) );
incOpStats( removeItem );
WriteOpResult result;
multiRemove( _txn, removeItem, &result );
// END CURRENT OP
incWriteStats( removeItem, result.getStats(), result.getError(), currentOp.get() );
finishCurrentOp( _txn, _client, currentOp.get(), result.getError() );
if ( result.getError() ) {
result.getError()->setIndex( removeItem.getItemIndex() );
*error = result.releaseError();
}
}