Skip to main content

httpbis/
lib.rs

1#![deny(intra_doc_link_resolution_failure)]
2// TODO: add docs
3//#![deny(missing_docs)]
4
5//! Asynchnous HTTP/2 client and server implementation.
6//!
7//! Based on futures/tokio.
8//!
9//! This crate is used to implement [`grpc` crate](https://github.com/stepancheg/grpc-rust),
10//! and probably not usable for anything else.
11
12#[macro_use]
13extern crate log;
14
15mod solicit;
16
17mod error;
18mod result;
19
20mod client;
21mod codec;
22mod server;
23mod socket;
24mod socket_tcp;
25
26mod socket_unix;
27
28mod ascii;
29
30mod client_died_error_holder;
31mod common;
32
33mod data_or_headers;
34mod data_or_headers_with_flag;
35mod data_or_trailers;
36mod message;
37
38mod futures_misc;
39
40mod headers_place;
41mod req_resp;
42
43mod assert_types;
44
45mod hpack;
46mod solicit_async;
47mod solicit_misc;
48
49mod display_comma_separated;
50mod misc;
51
52mod resp;
53
54mod exec;
55
56mod log_ndc_future;
57
58pub(crate) mod bytes_ext;
59
60pub use crate::socket::AnySocketAddr;
61
62pub use crate::solicit::error_code::ErrorCode;
63pub use crate::solicit::header::name::HeaderName;
64pub use crate::solicit::header::name::PseudoHeaderName;
65pub use crate::solicit::header::value::HeaderValue;
66pub use crate::solicit::header::Header;
67pub use crate::solicit::header::Headers;
68pub use crate::solicit::stream_id::StreamId;
69pub use crate::solicit::HttpScheme;
70
71pub use crate::client::conf::ClientConf;
72pub use crate::client::req::ClientRequest;
73pub use crate::client::tls::ClientTlsOption;
74pub use crate::client::Client;
75pub use crate::client::ClientBuilder;
76pub use crate::client::ClientInterface;
77pub use crate::common::sender::SendError;
78pub use crate::common::sender::SenderState;
79pub use crate::common::window_size::StreamDead;
80
81pub use crate::server::conf::ServerAlpn;
82pub use crate::server::conf::ServerConf;
83pub use crate::server::handler::ServerHandler;
84pub use crate::server::handler::ServerHandlerContext;
85pub use crate::server::handler_paths::ServerHandlerPaths;
86pub use crate::server::increase_in_window::ServerIncreaseInWindow;
87pub use crate::server::req::ServerRequest;
88pub use crate::server::resp::ServerResponse;
89pub use crate::server::stream_handler::ServerRequestStreamHandler;
90pub use crate::server::tls::ServerTlsOption;
91pub use crate::server::Server;
92pub use crate::server::ServerBuilder;
93
94pub use crate::data_or_trailers::DataOrTrailers;
95pub use crate::data_or_trailers::HttpStreamAfterHeaders;
96pub use crate::resp::Response;
97
98pub use crate::message::SimpleHttpMessage;
99
100pub use crate::error::Error;
101pub use crate::result::Result;
102
103pub use bytes_ext::buf_get_bytes::BufGetBytes;
104pub use bytes_ext::bytes_deque::BytesDeque;
105
106/// Functions used in tests
107#[doc(hidden)]
108pub mod for_test {
109    pub use crate::common::conn::ConnStateSnapshot;
110    pub use crate::common::stream::HttpStreamStateSnapshot;
111    pub use crate::server::conn::ServerConn;
112    pub use crate::solicit_async::recv_raw_frame_sync;
113
114    pub use crate::solicit::frame::HttpSettings;
115    pub use crate::solicit::window_size::WindowSize;
116    pub use crate::solicit::DEFAULT_SETTINGS;
117
118    pub mod solicit {
119        pub use crate::solicit::*;
120    }
121    pub mod hpack {
122        pub use crate::hpack::*;
123    }
124}