cowrie 0.1.0

cowrie rust sdk
Documentation
use automato::statemachine;

statemachine! {
    TxMachine {
        Pending {
            submit => Submitting,
            cancel => Cancelled
        },
        Submitting {
            await_result => Submitted,
            accept => Accepted,
            decline => Declined
        },
        Submitted {
            accept => Accepted,
            decline => Declined
        },
        Accepted {
            decline => Declined
        },
        Declined {},
        Cancelled {}
    }
}

#[derive(Debug)]
pub enum TxErr {
    Timeout(i32, String),
    InvalidInput(i32, String)
}

pub struct Tx {
    state: State
}

impl Tx {
    pub fn new() -> Self {
        Tx {
            state: State::Pending(TxMachine::<Pending>::new())
        }
    }

    pub fn submit(&mut self) -> Result<(), TxErr> {
        self.state = match self.state {
            State::Pending(m) => {
                m.submit()
            },
            _ => self.state
        };

        Ok(())
    }
}