コード例 #1
0
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()));
    }
}
コード例 #2
0
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()));
    }
}
コード例 #3
0
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)});
}
コード例 #4
0
void AsyncTimerMockImpl::cancel() {
    _callAllHandlers(std::error_code(ErrorCodes::CallbackCanceled, mongoErrorCategory()));
}