1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- use btproto::protocol;
- use btrun::model::{ActorName, CallMsg, NoReply, SendMsg};
- use btsector::FileId;
- use serde::{Deserialize, Serialize};
- #[derive(Serialize, Deserialize)]
- pub struct Open {
- id: FileId,
- }
- impl CallMsg for Open {
- type Reply = ActorName;
- }
- #[derive(Serialize, Deserialize)]
- pub struct OpenFile;
- impl CallMsg for OpenFile {
- type Reply = NoReply;
- }
- impl SendMsg for OpenFile {}
- protocol! {
- named FsProtocol;
- let server = [Listening];
- let client = [Client];
- let file = [Opened];
- let file_handle = [FileHandle];
- Client -> Client, >service(Listening)!Query;
- Listening?Query -> Listening, >Client!Query::Reply;
- Client -> Client, FileHandle[Opened], >service(Listening)!Open;
- Listening?Open -> Listening, Opened, >Client!Open::Reply[Opened];
- FileHandle[Opened] -> FileHandle[Opened], >Opened!FileOp;
- Opened?FileOp -> Opened, >FileHandle!FileOp::Reply;
- FileHandle[Opened] -> End, >Opened!Close;
- Opened?Close -> End;
- }
- #[derive(Serialize, Deserialize)]
- pub struct Query;
- impl CallMsg for Query {
- type Reply = ();
- }
- #[derive(Serialize, Deserialize)]
- pub struct FileOp;
- impl CallMsg for FileOp {
- type Reply = ();
- }
- #[derive(Serialize, Deserialize)]
- pub struct Close;
|