muchin 0.1.0

Support for composing large, interacting, complicated state machines
Documentation
use crate::automaton::{Action, ActionKind, Uid};
use crate::models::pure::net::tcp::action::TcpPollEvents;
use serde::{Deserialize, Serialize};
use type_uuid::TypeUuid;

#[derive(Clone, PartialEq, Eq, TypeUuid, Serialize, Deserialize, Debug)]
#[uuid = "6f8ab34b-2f20-49ff-a4a5-3573ff86fc61"]
pub enum EchoClientAction {
    Tick,
    PollSuccess { uid: Uid, events: TcpPollEvents },
    PollError { uid: Uid, error: String },
    InitSuccess { instance: Uid },
    InitError { instance: Uid, error: String },
    ConnectSuccess { connection: Uid },
    ConnectTimeout { connection: Uid },
    ConnectError { connection: Uid, error: String },
    CloseEvent { connection: Uid },
    SendSuccess { uid: Uid },
    SendTimeout { uid: Uid },
    SendError { uid: Uid, error: String },
    RecvSuccess { uid: Uid, data: Vec<u8> },
    RecvTimeout { uid: Uid, partial_data: Vec<u8> },
    RecvError { uid: Uid, error: String },
}

impl Action for EchoClientAction {
    const KIND: ActionKind = ActionKind::Pure;
}