use crate::Result;
use serde_json::Value as JsonValue;
use std::future::Future;
use std::pin::Pin;
pub mod pipe;
pub mod websocket;
pub use pipe::{PipeTransport, PipeTransportReceiver, send_message};
pub use websocket::WebSocketTransport;
pub trait Transport: Send {
fn send(&mut self, message: JsonValue) -> impl std::future::Future<Output = Result<()>> + Send;
}
pub trait TransportSender: Send + Unpin {
fn send(&mut self, message: JsonValue)
-> Pin<Box<dyn Future<Output = Result<()>> + Send + '_>>;
}
pub trait TransportReceiver: Send + Unpin {
fn run(&mut self) -> Pin<Box<dyn Future<Output = Result<()>> + Send + '_>>;
}