本文整理汇总了C++中NetworkOperationIterator类的典型用法代码示例。如果您正苦于以下问题:C++ NetworkOperationIterator类的具体用法?C++ NetworkOperationIterator怎么用?C++ NetworkOperationIterator使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了NetworkOperationIterator类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: invariant
void NetworkInterfaceMock::shutdown() {
invariant(!inShutdown());
stdx::unique_lock<stdx::mutex> lk(_mutex);
invariant(_hasStarted);
_inShutdown.store(true);
NetworkOperationList todo;
todo.splice(todo.end(), _scheduled);
todo.splice(todo.end(), _unscheduled);
todo.splice(todo.end(), _processing);
todo.splice(todo.end(), _blackHoled);
const Date_t now = _now_inlock();
_waitingToRunMask |= kExecutorThread; // Prevents network thread from scheduling.
lk.unlock();
for (NetworkOperationIterator iter = todo.begin(); iter != todo.end(); ++iter) {
iter->setResponse(
now, {ErrorCodes::ShutdownInProgress, "Shutting down mock network", Milliseconds(0)});
iter->finishResponse();
}
lk.lock();
invariant(_currentlyRunning == kExecutorThread);
_currentlyRunning = kNoThread;
_waitingToRunMask = kNetworkThread;
_shouldWakeNetworkCondition.notify_one();
}
示例2: lk
void NetworkInterfaceMock::scheduleResponse(NetworkOperationIterator noi,
Date_t when,
const TaskExecutor::ResponseStatus& response) {
stdx::lock_guard<stdx::mutex> lk(_mutex);
invariant(_currentlyRunning == kNetworkThread);
NetworkOperationIterator insertBefore = _scheduled.begin();
while ((insertBefore != _scheduled.end()) && (insertBefore->getResponseDate() <= when)) {
++insertBefore;
}
noi->setResponse(when, response);
_scheduled.splice(insertBefore, _processing, noi);
}
示例3: lk
void NetworkInterfaceMock::requeueAt(NetworkOperationIterator noi, Date_t dontAskUntil) {
stdx::lock_guard<stdx::mutex> lk(_mutex);
invariant(_currentlyRunning == kNetworkThread);
invariant(noi->getNextConsiderationDate() < dontAskUntil);
invariant(_now_inlock() < dontAskUntil);
NetworkOperationIterator insertBefore = _unscheduled.begin();
for (; insertBefore != _unscheduled.end(); ++insertBefore) {
if (insertBefore->getNextConsiderationDate() >= dontAskUntil) {
break;
}
}
noi->setNextConsiderationDate(dontAskUntil);
_unscheduled.splice(insertBefore, _processing, noi);
}
示例4: scheduleNetworkResponse
void BaseClonerTest::scheduleNetworkResponse(NetworkOperationIterator noi, const BSONObj& obj) {
auto net = getNet();
Milliseconds millis(0);
RemoteCommandResponse response(obj, millis);
log() << "Scheduling response to request:" << noi->getDiagnosticString() << " -- resp:" << obj;
net->scheduleResponse(noi, net->now(), response);
}
示例5: scheduleErrorResponse
RemoteCommandRequest NetworkInterfaceMock::scheduleErrorResponse(NetworkOperationIterator noi,
Date_t when,
const Status& response) {
scheduleResponse(noi, when, response);
return noi->getRequest();
}