hermes-runtime 0.1.0

Implementation of an IBC Relayer in Rust, as a library
Documentation
use alloc::sync::Arc;
use core::str::Utf8Error;
use std::io::Error as IoError;
use std::process::ExitStatus;

use cgp::core::error::{ErrorRaiser, ProvideErrorType};
use hermes_async_runtime_components::channel::types::ChannelClosedError;
use hermes_tokio_runtime_components::impls::os::child_process::PrematureChildProcessExitError;
use hermes_tokio_runtime_components::impls::os::exec_command::ExecCommandFailure;

use crate::impls::runtime::components::HermesRuntimeComponents;
use crate::types::error::TokioRuntimeError;
use crate::types::runtime::HermesRuntime;

impl ProvideErrorType<HermesRuntime> for HermesRuntimeComponents {
    type Error = TokioRuntimeError;
}

impl ErrorRaiser<HermesRuntime, PrematureChildProcessExitError> for HermesRuntimeComponents {
    fn raise_error(e: PrematureChildProcessExitError) -> TokioRuntimeError {
        TokioRuntimeError::PrematureChildProcessExit {
            exit_status: e.exit_status,
            stdout: e.stdout,
            stderr: e.stderr,
        }
    }
}

impl ErrorRaiser<HermesRuntime, ExitStatus> for HermesRuntimeComponents {
    fn raise_error(exit_status: ExitStatus) -> TokioRuntimeError {
        TokioRuntimeError::ChildProcessExitFailure { exit_status }
    }
}

impl ErrorRaiser<HermesRuntime, IoError> for HermesRuntimeComponents {
    fn raise_error(e: IoError) -> TokioRuntimeError {
        TokioRuntimeError::Io(Arc::new(e))
    }
}

impl ErrorRaiser<HermesRuntime, Utf8Error> for HermesRuntimeComponents {
    fn raise_error(e: Utf8Error) -> TokioRuntimeError {
        TokioRuntimeError::Utf8(e)
    }
}

impl ErrorRaiser<HermesRuntime, ChannelClosedError> for HermesRuntimeComponents {
    fn raise_error(_e: ChannelClosedError) -> TokioRuntimeError {
        TokioRuntimeError::ChannelClosed
    }
}

impl ErrorRaiser<HermesRuntime, ExecCommandFailure> for HermesRuntimeComponents {
    fn raise_error(e: ExecCommandFailure) -> TokioRuntimeError {
        TokioRuntimeError::ExecCommandFailure {
            command: e.command,
            exit_code: e.exit_code,
            stdout: e.stdout,
            stderr: e.stderr,
        }
    }
}