More work

This commit is contained in:
Carl Lerche
2017-03-11 12:59:15 -08:00
parent f19f039bbc
commit 769f3f142f
12 changed files with 3608 additions and 16 deletions

View File

@@ -62,7 +62,7 @@ impl Head {
}
pub fn encode_len(&self) -> usize {
super::FRAME_HEADER_LEN
super::HEADER_LEN
}
pub fn encode<T: BufMut>(&self, payload_len: usize, dst: &mut T) -> Result<(), Error> {

View File

@@ -0,0 +1,20 @@
/// Header frame
///
/// This could be either a request or a response.
pub struct Headers {
stream_id: StreamId,
headers: HeaderMap,
pseudo: Pseudo,
}
pub struct Pseudo {
// Request
method: Option<()>,
scheme: Option<()>,
authority: Option<()>,
path: Option<()>,
// Response
status: Option<()>,
}

View File

@@ -35,7 +35,7 @@ pub use self::head::{Head, Kind, StreamId};
pub use self::settings::{Settings, SettingSet};
pub use self::unknown::Unknown;
const FRAME_HEADER_LEN: usize = 9;
pub const HEADER_LEN: usize = 9;
#[derive(Debug, Clone, PartialEq)]
pub enum Frame {
@@ -103,8 +103,7 @@ impl Frame {
let head = Head::parse(&frame);
// Extract the payload from the frame
let _ = frame.drain_to(FRAME_HEADER_LEN);
let _ = frame.drain_to(HEADER_LEN);
match head.kind() {
Kind::Unknown => {

View File

@@ -54,7 +54,7 @@ impl Settings {
}
}
pub fn load(head: Head, payload: Bytes) -> Result<Settings, Error> {
pub fn load(head: Head, payload: &[u8]) -> Result<Settings, Error> {
use self::Setting::*;
debug_assert_eq!(head.kind(), ::frame::Kind::Settings);
@@ -112,7 +112,7 @@ impl Settings {
}
pub fn encode_len(&self) -> usize {
super::FRAME_HEADER_LEN + self.payload_len()
super::HEADER_LEN + self.payload_len()
}
fn payload_len(&self) -> usize {

View File

@@ -1,4 +1,4 @@
use frame::{Head, Error};
use frame::{Frame, Head, Error};
use bytes::{Bytes, BytesMut, BufMut};
#[derive(Debug, Clone, PartialEq, Eq)]
@@ -25,3 +25,9 @@ impl Unknown {
Ok(())
}
}
impl From<Unknown> for Frame {
fn from(src: Unknown) -> Frame {
Frame::Unknown(src)
}
}