techne_server/transport.rs
1use crate::mcp::Bytes;
2
3use futures::channel::mpsc;
4use futures::channel::oneshot;
5
6use std::io;
7
8pub trait Transport {
9 fn accept(&mut self) -> impl Future<Output = io::Result<Action>>;
10}
11
12pub enum Action {
13 Subscribe(Channel),
14 Handle(Bytes, Channel),
15 Quit,
16}
17
18pub type Channel = oneshot::Sender<Result>;
19
20pub enum Result {
21 Accept,
22 Reject,
23 Send(Bytes),
24 Stream(mpsc::Receiver<Bytes>),
25 Unsupported,
26}