etcds 0.16.0

An etcd v3 API server - light server version for queue management

use tokio::sync::mpsc::Sender;
use tonic::Status;
use crate::cli::EtcdConfig;
use crate::etcdpb::etcdserverpb::{DeleteRangeRequest, PutRequest, TxnRequest, WatchResponse};

rust_i18n::i18n!("locales");

pub mod etcdpb;
pub mod cli;
pub mod cluster;
mod srv;
pub mod queue;
pub mod kv;
mod peer;


/// Logging prefix, to start every logging message with a string to use in a server as a module 
const LP: &'static str = "[etcd] ";


pub type WatchSender = Sender<Result<WatchResponse, Status>>;

/// Etcd reconfiguration and integration events
#[derive(Clone)]
pub enum EtcdEvents {
    /// Cache modification event
    Data(KvEvent),
    /// Node management event
    Mgmt(EtcdMgmtEvent),
}

#[derive(Clone, Debug)]
pub enum EtcdMgmtEvent {
    /// runtime reconfigure event
    Config(EtcdConfig),
    /// change tracer runtime
    #[cfg(feature = "tracer")]
    Tracer(Option<opentelemetry_sdk::trace::SdkTracer>),
    /// Node management event to stop
    Stop,
    /// Node management event to soft restart 
    Restart,
    /// Node management event to pause(sec)  
    Pause(u16)
}

#[derive(Clone)]
pub enum KvEvent {
    Put(PutRequest),
    Delete(DeleteRangeRequest),
    Txn(TxnRequest),
}