pub mod stream;
use crate::connector::{
ButtplugConnectorError,
ButtplugConnectorResultFuture,
ButtplugSerializedMessage,
};
use displaydoc::Display;
use futures::future::BoxFuture;
use thiserror::Error;
use tokio::sync::mpsc::{Receiver, Sender};
#[derive(Clone, Debug, Display)]
pub enum ButtplugTransportIncomingMessage {
Connected,
Message(ButtplugSerializedMessage),
Error(String),
Close(String),
}
pub trait ButtplugConnectorTransport: Send + Sync {
fn connect(
&self,
outgoing_receiver: Receiver<ButtplugSerializedMessage>,
incoming_sender: Sender<ButtplugTransportIncomingMessage>,
) -> BoxFuture<'static, Result<(), ButtplugConnectorError>>;
fn disconnect(self) -> ButtplugConnectorResultFuture;
}
#[derive(Error, Debug)]
pub enum ButtplugConnectorTransportSpecificError {
#[error("Network error: {0}")]
GenericNetworkError(String),
}