From f99bfe05861f58beb23fd0f2340b5b69d1109ec9 Mon Sep 17 00:00:00 2001 From: Sunil Nimmagadda Date: Sun, 27 Apr 2025 19:06:01 +0530 Subject: Move statemachine code to a dedicated mod. --- src/statemachine.rs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/statemachine.rs (limited to 'src/statemachine.rs') diff --git a/src/statemachine.rs b/src/statemachine.rs new file mode 100644 index 0000000..a8b471d --- /dev/null +++ b/src/statemachine.rs @@ -0,0 +1,45 @@ +struct Init; +struct Master; +struct Backup; + +enum Event { + Startup, + Shutdown, + MasterDownTimer, + AdvertTimer, +} + +impl Init { + fn new() -> Init { + Init {} + } +} + +trait VRRPv2StateMachine { + fn next(&self, event: Event) -> impl VRRPv2StateMachine; +} + +impl VRRPv2StateMachine for Init { + fn next(&self, _event: Event) -> impl VRRPv2StateMachine { + Master {} + } +} + +impl VRRPv2StateMachine for Master { + fn next(&self, _event: Event) -> impl VRRPv2StateMachine { + Backup {} + } +} + +impl VRRPv2StateMachine for Backup { + fn next(&self, _event: Event) -> impl VRRPv2StateMachine { + Init {} + } +} + +pub fn run() { + let sm = Init::new(); + loop { + let _ = sm.next(Event::Startup); + } +} -- cgit v1.2.3