Delete protocol.rs
This commit is contained in:
parent
0f68e114b4
commit
99a0faef62
154
protocol.rs
154
protocol.rs
@ -1,154 +0,0 @@
|
|||||||
// src/common/protocol.rs
|
|
||||||
//! Протокол обмена данными для Falcot
|
|
||||||
//!
|
|
||||||
//! Определяет структуры команд и ответов для взаимодействия между
|
|
||||||
//! компонентами системы с использованием wait-free сериализации.
|
|
||||||
|
|
||||||
#![allow(dead_code)]
|
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
use crate::server::database::Index;
|
|
||||||
|
|
||||||
/// Команды для выполнения в базе данных
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
||||||
pub enum Command {
|
|
||||||
Create {
|
|
||||||
collection: String,
|
|
||||||
document: Vec<u8>,
|
|
||||||
},
|
|
||||||
Read {
|
|
||||||
collection: String,
|
|
||||||
id: String,
|
|
||||||
},
|
|
||||||
Update {
|
|
||||||
collection: String,
|
|
||||||
id: String,
|
|
||||||
document: Vec<u8>,
|
|
||||||
},
|
|
||||||
Delete {
|
|
||||||
collection: String,
|
|
||||||
id: String,
|
|
||||||
},
|
|
||||||
Query {
|
|
||||||
collection: String,
|
|
||||||
filter: Vec<u8>,
|
|
||||||
},
|
|
||||||
CreateProcedure {
|
|
||||||
name: String,
|
|
||||||
code: Vec<u8>,
|
|
||||||
},
|
|
||||||
CallProcedure {
|
|
||||||
name: String,
|
|
||||||
},
|
|
||||||
BeginTransaction {
|
|
||||||
transaction_id: String,
|
|
||||||
},
|
|
||||||
CommitTransaction {
|
|
||||||
transaction_id: String,
|
|
||||||
},
|
|
||||||
RollbackTransaction {
|
|
||||||
transaction_id: String,
|
|
||||||
},
|
|
||||||
CreateIndex {
|
|
||||||
collection: String,
|
|
||||||
index: Index,
|
|
||||||
},
|
|
||||||
QueryByIndex {
|
|
||||||
collection: String,
|
|
||||||
index_name: String,
|
|
||||||
value: Vec<u8>,
|
|
||||||
},
|
|
||||||
// Новые команды для шардинга
|
|
||||||
AddShardNode {
|
|
||||||
node_id: String,
|
|
||||||
address: String,
|
|
||||||
capacity: u64,
|
|
||||||
},
|
|
||||||
RemoveShardNode {
|
|
||||||
node_id: String,
|
|
||||||
},
|
|
||||||
MigrateShard {
|
|
||||||
collection: String,
|
|
||||||
from_node: String,
|
|
||||||
to_node: String,
|
|
||||||
shard_key: String,
|
|
||||||
},
|
|
||||||
RebalanceCluster,
|
|
||||||
GetClusterStatus,
|
|
||||||
// Команды для constraints
|
|
||||||
AddConstraint {
|
|
||||||
collection: String,
|
|
||||||
constraint_name: String,
|
|
||||||
constraint_type: String,
|
|
||||||
field: String,
|
|
||||||
value: Vec<u8>,
|
|
||||||
},
|
|
||||||
RemoveConstraint {
|
|
||||||
collection: String,
|
|
||||||
constraint_name: String,
|
|
||||||
},
|
|
||||||
// Команды для компрессии
|
|
||||||
EnableCompression {
|
|
||||||
collection: String,
|
|
||||||
algorithm: String,
|
|
||||||
},
|
|
||||||
DisableCompression {
|
|
||||||
collection: String,
|
|
||||||
},
|
|
||||||
// Команды для глобальных индексов
|
|
||||||
CreateGlobalIndex {
|
|
||||||
name: String,
|
|
||||||
field: String,
|
|
||||||
unique: bool,
|
|
||||||
},
|
|
||||||
QueryGlobalIndex {
|
|
||||||
index_name: String,
|
|
||||||
value: Vec<u8>,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Ответы от базы данных
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
||||||
pub enum Response {
|
|
||||||
Success(Vec<u8>),
|
|
||||||
Error(String),
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Сообщение для репликации
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
||||||
pub struct ReplicationMessage {
|
|
||||||
pub sequence: u64,
|
|
||||||
pub command: Command,
|
|
||||||
pub timestamp: i64,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Структура для информации о шарде
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
||||||
pub struct ShardInfo {
|
|
||||||
pub node_id: String,
|
|
||||||
pub address: String,
|
|
||||||
pub capacity: u64,
|
|
||||||
pub used: u64,
|
|
||||||
pub collections: Vec<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Структура для статуса кластера
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
||||||
pub struct ClusterStatus {
|
|
||||||
pub nodes: Vec<ShardInfo>,
|
|
||||||
pub total_capacity: u64,
|
|
||||||
pub total_used: u64,
|
|
||||||
pub rebalance_needed: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Wait-Free сериализация сообщений
|
|
||||||
pub fn serialize<T: serde::Serialize>(value: &T) -> crate::common::error::Result<Vec<u8>> {
|
|
||||||
rmp_serde::to_vec(value)
|
|
||||||
.map_err(|e| crate::common::error::FalcotError::SerializationError(e.to_string()))
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Wait-Free десериализация сообщений
|
|
||||||
pub fn deserialize<'a, T: serde::Deserialize<'a>>(bytes: &'a [u8]) -> crate::common::error::Result<T> {
|
|
||||||
rmp_serde::from_slice(bytes)
|
|
||||||
.map_err(|e| crate::common::error::FalcotError::SerializationError(e.to_string()))
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user