# TODO: * [x] Refactor into trait - [x] ~State to `<SM, L, N>`? -> Reuse old code~ - [x] Handle client message - [x] Handle peer message - [x] Handle timer * [ ] Init ChanNetwork in main demo/integration test - [x] Impl RaftNetwork for ChanNetwork - [ ] Integration test * [x] Split RaftState by Role * [x] Handle term for each peer msg * [x] Batch network action * [x] Rename Log to Storage * [x] Move HardState to Storage * [ ] Move client from network to Node, add Node#request, Node#query * [ ] Move StateMachine to Storage * [ ] Introduce Output type for SM * [ ] StateMachine batch processing * [ ] StateMachine snapshotting * [ ] Topology change * [ ] Refactor to type based State FSM LeaderState / NodeState # Wishlist * [ ] Proper error handling * [ ] CoW snapshotting * https://docs.rs/ipc-channel/0.14.1/ipc_channel/ * [ ] Zero-copy/clone serialization