Shuffle types around
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
mod connection;
|
||||
mod framed_read;
|
||||
mod framed_write;
|
||||
mod handshake;
|
||||
mod ping_pong;
|
||||
mod ready;
|
||||
mod settings;
|
||||
@@ -10,21 +9,50 @@ mod state;
|
||||
pub use self::connection::{Connection};
|
||||
pub use self::framed_read::FramedRead;
|
||||
pub use self::framed_write::FramedWrite;
|
||||
pub use self::handshake::Handshake;
|
||||
pub use self::ping_pong::PingPong;
|
||||
pub use self::ready::ReadySink;
|
||||
pub use self::settings::Settings;
|
||||
pub use self::state::State;
|
||||
|
||||
use tokio_io::codec::length_delimited;
|
||||
use {frame, Peer};
|
||||
|
||||
/// Base HTTP/2.0 transport. Only handles framing.
|
||||
type Framed<T> =
|
||||
FramedWrite<
|
||||
FramedRead<
|
||||
length_delimited::FramedRead<T>>>;
|
||||
use tokio_io::{AsyncRead, AsyncWrite};
|
||||
use tokio_io::codec::length_delimited;
|
||||
|
||||
type Inner<T> =
|
||||
Settings<
|
||||
PingPong<
|
||||
Framed<T>>>;
|
||||
|
||||
type Framed<T> =
|
||||
FramedRead<
|
||||
FramedWrite<T>>;
|
||||
|
||||
pub fn from_io<T, P>(io: T, settings: frame::SettingSet)
|
||||
-> Connection<T, P>
|
||||
where T: AsyncRead + AsyncWrite,
|
||||
P: Peer,
|
||||
{
|
||||
let framed_write = FramedWrite::new(io);
|
||||
|
||||
// Delimit the frames
|
||||
let framed_read = length_delimited::Builder::new()
|
||||
.big_endian()
|
||||
.length_field_length(3)
|
||||
.length_adjustment(9)
|
||||
.num_skip(0) // Don't skip the header
|
||||
.new_read(framed_write);
|
||||
|
||||
// Map to `Frame` types
|
||||
let framed = FramedRead::new(framed_read);
|
||||
|
||||
// Add ping/pong handler
|
||||
let ping_pong = PingPong::new(framed);
|
||||
|
||||
// Add settings handler
|
||||
let settings = Settings::new(
|
||||
ping_pong, settings);
|
||||
|
||||
// Finally, return the constructed `Connection`
|
||||
connection::new(settings)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user