37 lines
941 B
Rust
37 lines
941 B
Rust
pub mod callback;
|
|
pub mod command;
|
|
pub mod payload;
|
|
pub mod telemetry_definition;
|
|
pub mod telemetry_entry;
|
|
|
|
use payload::{RequestMessagePayload, ResponseMessagePayload};
|
|
use serde::{Deserialize, Serialize};
|
|
use uuid::Uuid;
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct RequestMessage {
|
|
pub uuid: Uuid,
|
|
pub response: Option<Uuid>,
|
|
#[serde(flatten)]
|
|
pub payload: RequestMessagePayload,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct ResponseMessage {
|
|
pub uuid: Uuid,
|
|
pub response: Option<Uuid>,
|
|
#[serde(flatten)]
|
|
pub payload: ResponseMessagePayload,
|
|
}
|
|
|
|
pub trait ClientMessage: Into<RequestMessagePayload> {}
|
|
|
|
pub trait RequestResponse: Into<RequestMessagePayload> {
|
|
type Response: TryFrom<ResponseMessagePayload>;
|
|
}
|
|
|
|
pub trait RegisterCallback: Into<RequestMessagePayload> {
|
|
type Callback: TryFrom<ResponseMessagePayload>;
|
|
type Response: Into<RequestMessagePayload>;
|
|
}
|