Process response
This commit is contained in:
		| @@ -79,15 +79,36 @@ impl<T, P> Stream for Connection<T, P> | ||||
|         // buffer is clear, `poll_complete` is called here. | ||||
|         let _ = try!(self.poll_complete()); | ||||
|  | ||||
|         match try_ready!(self.inner.poll()) { | ||||
|         let frame = match try_ready!(self.inner.poll()) { | ||||
|             Some(Headers(v)) => { | ||||
|                 debug!("poll; frame={:?}", v); | ||||
|                 unimplemented!(); | ||||
|                 // TODO: Update stream state | ||||
|                 let stream_id = v.stream_id(); | ||||
|                 let end_of_stream = v.is_end_stream(); | ||||
|  | ||||
|                 Frame::Headers { | ||||
|                     id: stream_id, | ||||
|                     headers: P::convert_poll_message(v), | ||||
|                     end_of_stream: end_of_stream, | ||||
|                 } | ||||
|             } | ||||
|             Some(Data(v)) => { | ||||
|                 // TODO: Validate frame | ||||
|  | ||||
|                 let stream_id = v.stream_id(); | ||||
|                 let end_of_stream = v.is_end_stream(); | ||||
|  | ||||
|                 Frame::Body { | ||||
|                     id: stream_id, | ||||
|                     chunk: v.into_payload(), | ||||
|                     end_of_stream: end_of_stream, | ||||
|                 } | ||||
|             } | ||||
|             Some(frame) => panic!("unexpected frame; frame={:?}", frame), | ||||
|             None => return Ok(Async::Ready(None)), | ||||
|             _ => unimplemented!(), | ||||
|         } | ||||
|         }; | ||||
|  | ||||
|         Ok(Async::Ready(Some(frame))) | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -49,7 +49,11 @@ impl<T> FramedRead<T> { | ||||
|         } | ||||
|  | ||||
|         let frame = match head.kind() { | ||||
|             Kind::Data => unimplemented!(), | ||||
|             Kind::Data => { | ||||
|                 let _ = bytes.split_to(frame::HEADER_LEN); | ||||
|                 let frame = try!(frame::Data::load(head, bytes)); | ||||
|                 frame.into() | ||||
|             } | ||||
|             Kind::Headers => { | ||||
|                 let mut buf = Cursor::new(bytes); | ||||
|                 buf.set_position(frame::HEADER_LEN as u64); | ||||
| @@ -66,12 +70,21 @@ impl<T> FramedRead<T> { | ||||
|                 frame.into() | ||||
|             } | ||||
|             Kind::Priority => unimplemented!(), | ||||
|             Kind::Reset => unimplemented!(), | ||||
|             Kind::Reset => { | ||||
|                 let frame = try!(frame::Reset::load(head, &bytes[frame::HEADER_LEN..])); | ||||
|                 debug!("decoded; frame={:?}", frame); | ||||
|                 // TODO: implement | ||||
|                 return Ok(None); | ||||
|             } | ||||
|             Kind::Settings => { | ||||
|                 let frame = try!(frame::Settings::load(head, &bytes[frame::HEADER_LEN..])); | ||||
|                 frame.into() | ||||
|             } | ||||
|             Kind::PushPromise => unimplemented!(), | ||||
|             Kind::PushPromise => { | ||||
|                 debug!("received PUSH_PROMISE"); | ||||
|                 // TODO: implement | ||||
|                 return Ok(None); | ||||
|             } | ||||
|             Kind::Ping => unimplemented!(), | ||||
|             Kind::GoAway => { | ||||
|                 let frame = try!(frame::GoAway::load(&bytes[frame::HEADER_LEN..])); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user