mutant-lib 0.6.2

Core library for MutAnt distributed mutable key value storage over Autonomi network
Documentation
use mutant_protocol::{
    GetCallback as ProtocolGetCallback, GetEvent as ProtocolGetEvent,
    HealthCheckCallback as ProtocolHealthCheckCallback,
    HealthCheckEvent as ProtocolHealthCheckEvent, PurgeCallback as ProtocolPurgeCallback,
    PurgeEvent as ProtocolPurgeEvent, PutCallback as ProtocolPutCallback,
    PutEvent as ProtocolPutEvent, SyncCallback as ProtocolSyncCallback,
    SyncEvent as ProtocolSyncEvent,
};

use crate::error::Error;

pub async fn invoke_put_callback(
    callback: &Option<ProtocolPutCallback>,
    event: ProtocolPutEvent,
) -> Result<bool, Error> {
    if let Some(cb) = callback {
        match cb(event).await {
            Ok(continue_op) => Ok(continue_op),
            Err(e) => Err(Error::CallbackError(e.to_string())),
        }
    } else {
        Ok(true)
    }
}

pub(crate) async fn invoke_get_callback(
    callback: &Option<ProtocolGetCallback>,
    event: ProtocolGetEvent,
) -> Result<bool, Error> {
    if let Some(cb) = callback {
        match cb(event).await {
            Ok(continue_op) => Ok(continue_op),
            Err(e) => Err(Error::CallbackError(e.to_string())),
        }
    } else {
        Ok(true)
    }
}

pub(crate) async fn invoke_purge_callback(
    callback: &Option<ProtocolPurgeCallback>,
    event: ProtocolPurgeEvent,
) -> Result<bool, Error> {
    if let Some(cb) = callback {
        match cb(event).await {
            Ok(continue_op) => Ok(continue_op),
            Err(e) => Err(Error::CallbackError(e.to_string())),
        }
    } else {
        Ok(true)
    }
}

pub(crate) async fn invoke_sync_callback(
    callback: &Option<ProtocolSyncCallback>,
    event: ProtocolSyncEvent,
) -> Result<bool, Error> {
    if let Some(cb) = callback {
        match cb(event).await {
            Ok(continue_op) => Ok(continue_op),
            Err(e) => Err(Error::CallbackError(e.to_string())),
        }
    } else {
        Ok(true)
    }
}

pub(crate) async fn invoke_health_check_callback(
    callback: &Option<ProtocolHealthCheckCallback>,
    event: ProtocolHealthCheckEvent,
) -> Result<bool, Error> {
    if let Some(cb) = callback {
        match cb(event).await {
            Ok(continue_op) => Ok(continue_op),
            Err(e) => Err(Error::CallbackError(e.to_string())),
        }
    } else {
        Ok(true)
    }
}