rings-core 0.20.0

Chord DHT implementation with ICE
Documentation
use super::INBOUND_CALLBACK_TIMEOUT;
use crate::dht::Did;
use crate::error::Error;
use crate::swarm::callback::CallbackError;

pub(super) enum InboundFailure {
    Core(Error),
    Validation(CallbackError),
    Callback(CallbackError),
    ValidationTimeout {
        peer: Option<Did>,
    },
    ProcessingTimeout {
        peer: Option<Did>,
    },
    TimerUnavailable {
        peer: Option<Did>,
        operation: &'static str,
    },
}

pub(super) fn inbound_failure_error(failure: InboundFailure) -> Error {
    match failure {
        InboundFailure::Core(error) => error,
        InboundFailure::Validation(source) => Error::InboundValidationFailed { source },
        InboundFailure::Callback(source) => Error::InboundCallbackFailed { source },
        InboundFailure::ValidationTimeout { peer } => Error::InboundValidationTimeout {
            peer,
            timeout_ms: INBOUND_CALLBACK_TIMEOUT.as_millis(),
        },
        InboundFailure::ProcessingTimeout { peer } => Error::InboundProcessingTimeout {
            peer,
            timeout_ms: INBOUND_CALLBACK_TIMEOUT.as_millis(),
        },
        InboundFailure::TimerUnavailable { peer, operation } => {
            Error::InboundTimerUnavailable { peer, operation }
        }
    }
}