use std::collections::HashMap;
use uuid::Uuid;
use super::{DataId, DataIdAliasMap};
pub use crate::encoding::internal::autogen::data_point_group::DataIdOrAlias;
impl From<DataId> for DataIdOrAlias {
fn from(id: DataId) -> Self {
Self::DataId(id)
}
}
impl From<u32> for DataIdOrAlias {
fn from(alias: u32) -> Self {
Self::DataIdAlias(alias)
}
}
#[derive(Clone, PartialEq, Debug)]
pub enum UpstreamOrAlias {
UpstreamInfo(UpstreamInfo),
Alias(u32),
}
impl Default for UpstreamOrAlias {
fn default() -> Self {
Self::Alias(0)
}
}
impl From<UpstreamInfo> for UpstreamOrAlias {
fn from(info: UpstreamInfo) -> Self {
Self::UpstreamInfo(info)
}
}
impl From<u32> for UpstreamOrAlias {
fn from(alias: u32) -> Self {
Self::Alias(alias)
}
}
#[derive(Clone, PartialEq, Default, Debug)]
pub struct UpstreamChunkResult {
pub sequence_number: u32,
pub result_code: super::ResultCode,
pub result_string: String,
}
#[derive(Clone, PartialEq, Default, Debug)]
pub struct DownstreamChunkResult {
pub stream_id_of_upstream: Uuid,
pub sequence_number_in_upstream: u32,
pub result_code: super::ResultCode,
pub result_string: String,
}
#[derive(Clone, PartialEq, Default, Debug)]
pub struct StreamChunk {
pub sequence_number: u32,
pub data_point_groups: Vec<DataPointGroup>,
}
pub use crate::encoding::internal::autogen::DataPoint;
#[derive(Clone, PartialEq, Debug)]
pub struct DataPointGroup {
pub data_points: Vec<DataPoint>,
pub data_id_or_alias: DataIdOrAlias,
}
#[derive(Clone, Eq, PartialEq, Hash, Default, Debug)]
pub struct UpstreamInfo {
pub source_node_id: String,
pub session_id: String,
pub stream_id: Uuid,
}
#[derive(Clone, PartialEq, Default, Debug)]
pub struct DownstreamChunk {
pub stream_id_alias: u32,
pub stream_chunk: StreamChunk,
pub upstream_or_alias: UpstreamOrAlias,
}
#[derive(Clone, PartialEq, Default, Debug)]
pub struct DownstreamChunkAck {
pub ack_id: u32,
pub stream_id_alias: u32,
pub upstream_aliases: HashMap<u32, UpstreamInfo>,
pub data_id_aliases: DataIdAliasMap,
pub results: Vec<DownstreamChunkResult>,
}
#[derive(Clone, PartialEq, Default, Debug)]
pub struct DownstreamChunkAckComplete {
pub stream_id_alias: u32,
pub ack_id: u32,
pub result_code: super::ResultCode,
pub result_string: String,
}
#[derive(Clone, PartialEq, Debug, Default)]
pub struct UpstreamChunk {
pub stream_id_alias: u32,
pub stream_chunk: StreamChunk,
pub data_ids: Vec<DataId>,
}
#[derive(Clone, PartialEq, Default, Debug)]
pub struct UpstreamChunkAck {
pub stream_id_alias: u32,
pub results: Vec<UpstreamChunkResult>,
pub data_id_aliases: DataIdAliasMap,
}