1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#[cfg(feature = "websockets")]
mod websocket;
use crate::connector::{
ButtplugConnectorError,
ButtplugConnectorResultFuture,
ButtplugSerializedMessage,
};
use async_channel::{Receiver, Sender};
use futures::future::BoxFuture;
#[cfg(feature = "websockets")]
pub use websocket::{ButtplugWebsocketClientTransport, TungsteniteError};
#[cfg(all(feature = "websockets", feature = "async-std-runtime"))]
pub use websocket::{ButtplugWebsocketServerTransport, ButtplugWebsocketServerTransportOptions};
use thiserror::Error;
pub enum ButtplugTransportMessage {
Connected,
Message(ButtplugSerializedMessage),
Error(String),
Close(String),
}
pub type ButtplugConnectorTransportConnectResult = BoxFuture<
'static,
Result<
(
Sender<ButtplugSerializedMessage>,
Receiver<ButtplugTransportMessage>,
),
ButtplugConnectorError,
>,
>;
pub trait ButtplugConnectorTransport: Send + Sync {
fn connect(&self) -> ButtplugConnectorTransportConnectResult;
fn disconnect(self) -> ButtplugConnectorResultFuture;
}
#[derive(Error, Debug)]
pub enum ButtplugConnectorTransportSpecificError {
#[cfg(feature = "websockets")]
#[error("Tungstenite specific error: {0}")]
TungsteniteError(#[from] TungsteniteError),
#[error("Secure server error: %s")]
SecureServerError(String),
}