use std::sync::Arc;
use super::db::table::TableManagerReq;
use crate::cache::actor_model::{CacheManagerRaftReq, CacheManagerRaftResult};
use crate::mcp::model::actor_model::{McpManagerRaftReq, McpManagerRaftResult};
use crate::namespace::model::NamespaceRaftReq;
use crate::naming::model::actor_model::{NamingRaftReq, NamingRaftResult};
use crate::sequence::model::{SequenceRaftReq, SequenceRaftResult};
use async_raft_ext::AppData;
use async_raft_ext::AppDataResponse;
use serde::Deserialize;
use serde::Serialize;
use thiserror::Error;
pub type NodeId = u64;
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum ClientRequest {
NodeAddr {
id: u64,
addr: Arc<String>,
},
Members(Vec<u64>),
ConfigSet {
key: String,
value: Arc<String>,
config_type: Option<Arc<String>>,
desc: Option<Arc<String>>,
history_id: u64,
history_table_id: Option<u64>,
op_time: i64,
op_user: Option<Arc<String>>,
},
ConfigFullValue {
key: Vec<u8>,
value: Vec<u8>,
last_seq_id: Option<u64>,
},
ConfigRemove {
key: String,
},
TableManagerReq(TableManagerReq),
NamespaceReq(NamespaceRaftReq),
SequenceReq {
req: SequenceRaftReq,
},
McpReq {
req: McpManagerRaftReq,
},
NamingReq {
req: NamingRaftReq,
},
CacheReq {
req: CacheManagerRaftReq,
},
}
impl AppData for ClientRequest {}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum ClientResponse {
Success,
Fail,
SequenceResp { resp: SequenceRaftResult },
McpResp { resp: McpManagerRaftResult },
NamingResp { resp: NamingRaftResult },
CacheResp { resp: CacheManagerRaftResult },
}
impl Default for ClientResponse {
fn default() -> Self {
Self::Success
}
}
impl AppDataResponse for ClientResponse {}
#[derive(Clone, Debug, Error)]
pub enum ShutdownError {
#[error("unsafe storage error")]
UnsafeStorageError,
}