mirror of
https://github.com/denoland/deno.git
synced 2025-09-29 05:34:49 +00:00
feat(ext/http): Rework Deno.serve using hyper 1.0-rc3 (#18619)
This is a rewrite of the `Deno.serve` API to live on top of hyper 1.0-rc3. The code should be more maintainable long-term, and avoids some of the slower mpsc patterns that made the older code less efficient than it could have been. Missing features: - `upgradeHttp` and `upgradeHttpRaw` (`upgradeWebSocket` is available, however). - Automatic compression is unavailable on responses.
This commit is contained in:
parent
d137501a63
commit
bdffcb409f
22 changed files with 2912 additions and 336 deletions
33
core/io.rs
33
core/io.rs
|
@ -3,6 +3,7 @@
|
|||
use std::ops::Deref;
|
||||
use std::ops::DerefMut;
|
||||
|
||||
use bytes::Buf;
|
||||
use serde_v8::ZeroCopyBuf;
|
||||
|
||||
/// BufView is a wrapper around an underlying contiguous chunk of bytes. It can
|
||||
|
@ -26,11 +27,11 @@ enum BufViewInner {
|
|||
}
|
||||
|
||||
impl BufView {
|
||||
fn from_inner(inner: BufViewInner) -> Self {
|
||||
const fn from_inner(inner: BufViewInner) -> Self {
|
||||
Self { inner, cursor: 0 }
|
||||
}
|
||||
|
||||
pub fn empty() -> Self {
|
||||
pub const fn empty() -> Self {
|
||||
Self::from_inner(BufViewInner::Empty)
|
||||
}
|
||||
|
||||
|
@ -65,6 +66,20 @@ impl BufView {
|
|||
}
|
||||
}
|
||||
|
||||
impl Buf for BufView {
|
||||
fn remaining(&self) -> usize {
|
||||
self.len()
|
||||
}
|
||||
|
||||
fn chunk(&self) -> &[u8] {
|
||||
self.deref()
|
||||
}
|
||||
|
||||
fn advance(&mut self, cnt: usize) {
|
||||
self.advance_cursor(cnt)
|
||||
}
|
||||
}
|
||||
|
||||
impl Deref for BufView {
|
||||
type Target = [u8];
|
||||
|
||||
|
@ -210,6 +225,20 @@ impl BufMutView {
|
|||
}
|
||||
}
|
||||
|
||||
impl Buf for BufMutView {
|
||||
fn remaining(&self) -> usize {
|
||||
self.len()
|
||||
}
|
||||
|
||||
fn chunk(&self) -> &[u8] {
|
||||
self.deref()
|
||||
}
|
||||
|
||||
fn advance(&mut self, cnt: usize) {
|
||||
self.advance_cursor(cnt)
|
||||
}
|
||||
}
|
||||
|
||||
impl Deref for BufMutView {
|
||||
type Target = [u8];
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue