use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct EchoRequest {
pub message: String,
pub times: u32,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct EchoResponse {
pub echoed_message: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct BinaryEchoRequest {
pub data: Vec<u8>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct BinaryEchoResponse {
pub data: Vec<u8>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum EchoError {
TooManyRepetitions,
EmptyMessage,
DataTooLarge,
}
#[rpcnet::service]
pub trait Echo {
async fn echo(&self, request: EchoRequest) -> Result<EchoResponse, EchoError>;
async fn binary_echo(&self, request: BinaryEchoRequest) -> Result<BinaryEchoResponse, EchoError>;
}