void NetworkInterfaceASIO::_networkErrorCallback(AsyncOp* op, const std::error_code& ec) { if (ec.category() == mongoErrorCategory()) { // If we get a Mongo error code, we can preserve it. _completeOperation(op, Status(ErrorCodes::fromInt(ec.value()), ec.message())); } else { // If we get an asio or system error, we just convert it to a network error. _completeOperation(op, Status(ErrorCodes::HostUnreachable, ec.message())); } }
void AsyncTimerMockImpl::expireAfter(Milliseconds expiration) { std::vector<AsyncTimerInterface::Handler> tmp; // While holding the lock, reset the time and remove all handlers { stdx::lock_guard<stdx::mutex> lk(_mutex); _timeLeft = expiration; tmp.swap(_handlers); } // Call handlers with a "canceled" error code for (const auto& handler : tmp) { handler(std::error_code(ErrorCodes::CallbackCanceled, mongoErrorCategory())); } }
void NetworkInterfaceASIO::_networkErrorCallback(AsyncOp* op, const std::error_code& ec) { ErrorCodes::Error errorCode = (ec.category() == mongoErrorCategory()) ? ErrorCodes::fromInt(ec.value()) : ErrorCodes::HostUnreachable; _completeOperation(op, {errorCode, ec.message(), Milliseconds(now() - op->_start)}); }
void AsyncTimerMockImpl::cancel() { _callAllHandlers(std::error_code(ErrorCodes::CallbackCanceled, mongoErrorCategory())); }