12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- use btproto::protocol;
- use serde::{Deserialize, Serialize};
- use crate::{sector_proto::FileId, ActorName, CallMsg};
- #[derive(Serialize, Deserialize)]
- pub struct Open {
- id: FileId,
- }
- impl CallMsg for Open {
- type Reply = ActorName;
- }
- protocol! {
- let name = FsProtocol;
- let states = [
- ServerInit, Listening,
- Client,
- FileInit, Opened,
- FileHandle,
- ];
- ServerInit?Activate -> Listening;
- Client -> Client, >service(Listening)!Query;
- Listening?Query -> Listening, >Client!Query::Reply;
- Client?Query::Reply -> Client;
- Client -> Client, >service(Listening)!Open;
- Listening?Open -> Listening, FileInit, >Client!Open::Reply[Opened], FileInit!Open;
- Client?Open::Reply[Opened] -> Client, FileHandle[Opened];
- FileInit?Activate -> FileInit;
- FileInit?Open -> Opened;
- //PoopedPants?Notification -> Changing;
- FileHandle[Opened] -> FileHandle[Opened], >Opened!FileOp;
- Opened?FileOp -> Opened, >FileHandle!FileOp::Reply;
- FileHandle?FileOp::Reply -> FileHandle;
- FileHandle[Opened] -> End, >Opened!Close;
- Opened?Close -> End;
- }
|