#![deny(
missing_docs,
missing_copy_implementations,
missing_debug_implementations,
trivial_numeric_casts,
unstable_features,
unused_must_use,
unused_mut,
unused_imports,
unused_import_braces
)]
extern crate core;
#[cfg(test)]
mod test_fixture;
mod builder;
mod errors;
mod ext;
mod framed;
mod handshake;
mod protocol;
mod ws;
#[cfg(feature = "split")]
mod split;
#[cfg(feature = "split")]
pub use split::{Receiver, ReuniteError, Sender};
#[allow(missing_docs)]
#[cfg(feature = "fixture")]
pub mod fixture {
pub use super::protocol::write_text_frame_header;
}
pub use builder::{WebSocketClientBuilder, WebSocketServerBuilder};
pub use errors::*;
pub use ext::{NegotiatedExtension, NoExt, NoExtDecoder, NoExtEncoder, NoExtProvider};
pub use handshake::{
accept, accept_with, subscribe, subscribe_with, ProtocolRegistry, TryIntoRequest,
UpgradedClient, UpgradedServer, WebSocketResponse, WebSocketUpgrader,
};
pub use protocol::{
CloseCode, CloseReason, Message, MessageType, PayloadType, Role, WebSocketConfig,
};
pub use ws::{CloseState, WebSocket};
use tokio::io::{AsyncRead, AsyncWrite};
pub(crate) type Request = http::Request<()>;
pub trait WebSocketStream: AsyncRead + AsyncWrite + Send + Unpin + 'static {}
impl<S> WebSocketStream for S where S: AsyncRead + AsyncWrite + Send + Unpin + 'static {}