use serde::{Deserialize, Serialize};
use atomr_core::actor::Address;
use crate::envelope::RemoteEnvelope;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum AkkaPdu {
Associate(AssociateInfo),
Disassociate(DisassociateReason),
Heartbeat,
Payload(RemoteEnvelope),
Ack(AckInfo),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct AssociateInfo {
pub origin: Address,
pub uid: u64,
pub cookie: Option<String>,
pub protocol_version: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum DisassociateReason {
Normal,
HandshakeFailure(String),
Quarantined,
Other(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct AckInfo {
pub cumulative_ack: u64,
pub nacks: Vec<u64>,
}
pub const PROTOCOL_VERSION: u32 = 1;