#![warn(missing_docs)]
#![cfg_attr(all(test, feature = "nightly"), feature(test))]
#![cfg_attr(
feature = "cargo-clippy",
allow(
renamed_and_removed_lints,
write_with_newline,
type_complexity,
match_ref_pats
)
)]
#![deny(unused_mut)]
extern crate base64;
extern crate byteorder;
#[cfg(feature = "async")]
extern crate bytes;
#[cfg(feature = "async")]
pub extern crate futures;
extern crate hyper;
#[cfg(any(feature = "sync-ssl", feature = "async-ssl"))]
extern crate native_tls;
extern crate rand;
extern crate sha1;
#[cfg(test)]
extern crate tokio;
#[cfg(feature = "async")]
extern crate tokio_codec;
#[cfg(feature = "async")]
extern crate tokio_io;
#[cfg(feature = "async")]
extern crate tokio_reactor;
#[cfg(feature = "async")]
extern crate tokio_tcp;
#[cfg(feature = "async-ssl")]
extern crate tokio_tls;
extern crate unicase;
pub extern crate url;
#[macro_use]
extern crate bitflags;
#[cfg(all(feature = "nightly", test))]
extern crate test;
macro_rules! upsert_header {
($headers:expr; $header:ty; { Some($pat:pat) => $some_match:expr,None => $default:expr }) => {{
if $headers.has::<$header>() {
if let Some($pat) = $headers.get_mut::<$header>() {
$some_match
}
} else {
$headers.set($default);
}
}};
}
pub mod dataframe;
pub mod header;
pub mod message;
pub mod result;
pub mod ws;
#[cfg(feature = "async")]
pub mod codec;
#[cfg(feature = "sync")]
pub mod receiver;
#[cfg(feature = "sync")]
pub mod sender;
pub mod client;
pub mod server;
pub mod stream;
#[cfg(feature = "sync")]
pub mod sync {
pub use sender;
pub use sender::Writer;
pub use receiver;
pub use receiver::Reader;
pub use stream::sync as stream;
pub use stream::sync::Stream;
pub mod server {
pub use server::sync::*;
pub use server::upgrade::sync as upgrade;
pub use server::upgrade::sync::IntoWs;
pub use server::upgrade::sync::Upgrade;
}
pub use server::sync::Server;
pub mod client {
pub use client::builder::ClientBuilder;
pub use client::sync::*;
}
pub use client::sync::Client;
}
#[cfg(feature = "async")]
pub mod async {
pub use codec;
pub use codec::http::HttpClientCodec;
pub use codec::http::HttpServerCodec;
pub use codec::ws::Context as MsgCodecCtx;
pub use codec::ws::MessageCodec;
pub use stream::async as stream;
pub use stream::async::Stream;
pub mod server {
pub use server::async::*;
pub use server::upgrade::async as upgrade;
pub use server::upgrade::async::IntoWs;
pub use server::upgrade::async::Upgrade;
}
pub use server::async::Server;
pub mod client {
pub use client::async::*;
pub use client::builder::ClientBuilder;
}
pub use client::async::Client;
pub use result::async::WebSocketFuture;
pub use futures;
pub use tokio_reactor::Handle;
pub use tokio_tcp::TcpListener;
pub use tokio_tcp::TcpStream;
}
pub use self::client::builder::ClientBuilder;
pub use self::message::CloseData;
pub use self::message::Message;
pub use self::message::OwnedMessage;
pub use self::result::WebSocketError;
pub use self::result::WebSocketResult;