diff options
Diffstat (limited to 'ext/http')
-rw-r--r-- | ext/http/00_serve.js | 94 | ||||
-rw-r--r-- | ext/http/http_next.rs | 38 | ||||
-rw-r--r-- | ext/http/lib.rs | 40 |
3 files changed, 90 insertions, 82 deletions
diff --git a/ext/http/00_serve.js b/ext/http/00_serve.js index b18c26e80..1746b1d47 100644 --- a/ext/http/00_serve.js +++ b/ext/http/00_serve.js @@ -50,35 +50,35 @@ const { const { op_http_wait, - op_upgrade, - op_get_request_headers, - op_get_request_method_and_url, - op_read_request_body, - op_serve_http, - op_set_promise_complete, - op_set_response_body_bytes, - op_set_response_body_resource, - op_set_response_body_stream, - op_set_response_body_text, - op_set_response_header, - op_set_response_headers, - op_upgrade_raw, + op_http_upgrade_next, + op_http_get_request_headers, + op_http_get_request_method_and_url, + op_http_read_request_body, + op_http_serve, + op_http_set_promise_complete, + op_http_set_response_body_bytes, + op_http_set_response_body_resource, + op_http_set_response_body_stream, + op_http_set_response_body_text, + op_http_set_response_header, + op_http_set_response_headers, + op_http_upgrade_raw, op_ws_server_create, } = core.generateAsyncOpHandler( "op_http_wait", - "op_upgrade", - "op_get_request_headers", - "op_get_request_method_and_url", - "op_read_request_body", - "op_serve_http", - "op_set_promise_complete", - "op_set_response_body_bytes", - "op_set_response_body_resource", - "op_set_response_body_stream", - "op_set_response_body_text", - "op_set_response_header", - "op_set_response_headers", - "op_upgrade_raw", + "op_http_upgrade_next", + "op_http_get_request_headers", + "op_http_get_request_method_and_url", + "op_http_read_request_body", + "op_http_serve", + "op_http_set_promise_complete", + "op_http_set_response_body_bytes", + "op_http_set_response_body_resource", + "op_http_set_response_body_stream", + "op_http_set_response_body_text", + "op_http_set_response_header", + "op_http_set_response_headers", + "op_http_upgrade_raw", "op_ws_server_create", ); const _upgraded = Symbol("_upgraded"); @@ -178,7 +178,7 @@ class InnerRequest { this.#upgraded = () => {}; - const upgradeRid = op_upgrade_raw(slabId); + const upgradeRid = op_http_upgrade_raw(slabId); const conn = new TcpConn( upgradeRid, @@ -209,7 +209,7 @@ class InnerRequest { (async () => { try { // Returns the connection and extra bytes, which we can pass directly to op_ws_server_create - const upgrade = await op_upgrade( + const upgrade = await op_http_upgrade_next( slabId, response.headerList, ); @@ -248,7 +248,7 @@ class InnerRequest { } // TODO(mmastrac): This is quite slow as we're serializing a large number of values. We may want to consider // splitting this up into multiple ops. - this.#methodAndUri = op_get_request_method_and_url(this.#slabId); + this.#methodAndUri = op_http_get_request_method_and_url(this.#slabId); } const path = this.#methodAndUri[2]; @@ -283,7 +283,7 @@ class InnerRequest { if (this.#slabId === undefined) { throw new TypeError("request closed"); } - this.#methodAndUri = op_get_request_method_and_url(this.#slabId); + this.#methodAndUri = op_http_get_request_method_and_url(this.#slabId); } return { transport: "tcp", @@ -297,7 +297,7 @@ class InnerRequest { if (this.#slabId === undefined) { throw new TypeError("request closed"); } - this.#methodAndUri = op_get_request_method_and_url(this.#slabId); + this.#methodAndUri = op_http_get_request_method_and_url(this.#slabId); } return this.#methodAndUri[0]; } @@ -315,7 +315,7 @@ class InnerRequest { this.#body = null; return null; } - this.#streamRid = op_read_request_body(this.#slabId); + this.#streamRid = op_http_read_request_body(this.#slabId); this.#body = new InnerBody(readableStreamForRid(this.#streamRid, false)); return this.#body; } @@ -324,7 +324,7 @@ class InnerRequest { if (this.#slabId === undefined) { throw new TypeError("request closed"); } - return op_get_request_headers(this.#slabId); + return op_http_get_request_headers(this.#slabId); } get slabId() { @@ -365,12 +365,12 @@ function fastSyncResponseOrStream(req, respBody) { const body = stream.body; if (ObjectPrototypeIsPrototypeOf(Uint8ArrayPrototype, body)) { - op_set_response_body_bytes(req, body); + op_http_set_response_body_bytes(req, body); return null; } if (typeof body === "string") { - op_set_response_body_text(req, body); + op_http_set_response_body_text(req, body); return null; } @@ -380,7 +380,7 @@ function fastSyncResponseOrStream(req, respBody) { } const resourceBacking = getReadableStreamResourceBacking(stream); if (resourceBacking) { - op_set_response_body_resource( + op_http_set_response_body_resource( req, resourceBacking.rid, resourceBacking.autoClose, @@ -416,9 +416,9 @@ async function asyncResponse(responseBodies, req, status, stream) { // and we race it. let timeoutPromise; timeout = setTimeout(() => { - responseRid = op_set_response_body_stream(req); + responseRid = op_http_set_response_body_stream(req); SetPrototypeAdd(responseBodies, responseRid); - op_set_promise_complete(req, status); + op_http_set_promise_complete(req, status); timeoutPromise = core.writeAll(responseRid, value1); }, 250); const { value: value2, done: done2 } = await reader.read(); @@ -443,13 +443,13 @@ async function asyncResponse(responseBodies, req, status, stream) { // Reader will be closed by finally block // No response stream closed = true; - op_set_response_body_bytes(req, value1); + op_http_set_response_body_bytes(req, value1); return; } - responseRid = op_set_response_body_stream(req); + responseRid = op_http_set_response_body_stream(req); SetPrototypeAdd(responseBodies, responseRid); - op_set_promise_complete(req, status); + op_http_set_promise_complete(req, status); // Write our first packet await core.writeAll(responseRid, value1); } @@ -481,7 +481,7 @@ async function asyncResponse(responseBodies, req, status, stream) { core.tryClose(responseRid); SetPrototypeDelete(responseBodies, responseRid); } else { - op_set_promise_complete(req, status); + op_http_set_promise_complete(req, status); } } } @@ -545,9 +545,9 @@ function mapToCallback(responseBodies, context, signal, callback, onError) { const headers = inner.headerList; if (headers && headers.length > 0) { if (headers.length == 1) { - op_set_response_header(req, headers[0][0], headers[0][1]); + op_http_set_response_header(req, headers[0][0], headers[0][1]); } else { - op_set_response_headers(req, headers); + op_http_set_response_headers(req, headers); } } @@ -557,7 +557,7 @@ function mapToCallback(responseBodies, context, signal, callback, onError) { // Handle the stream asynchronously await asyncResponse(responseBodies, req, status, stream); } else { - op_set_promise_complete(req, status); + op_http_set_promise_complete(req, status); } innerRequest?.close(); @@ -625,13 +625,13 @@ async function serve(arg1, arg2) { listenOpts.alpnProtocols = ["h2", "http/1.1"]; const listener = Deno.listenTls(listenOpts); listenOpts.port = listener.addr.port; - context.initialize(op_serve_http( + context.initialize(op_http_serve( listener.rid, )); } else { const listener = Deno.listen(listenOpts); listenOpts.port = listener.addr.port; - context.initialize(op_serve_http( + context.initialize(op_http_serve( listener.rid, )); } diff --git a/ext/http/http_next.rs b/ext/http/http_next.rs index 5ed443142..f3d37f751 100644 --- a/ext/http/http_next.rs +++ b/ext/http/http_next.rs @@ -235,7 +235,7 @@ fn slab_insert( } #[op] -pub fn op_upgrade_raw( +pub fn op_http_upgrade_raw( state: &mut OpState, index: u32, ) -> Result<ResourceId, AnyError> { @@ -310,7 +310,7 @@ pub fn op_upgrade_raw( } #[op] -pub async fn op_upgrade( +pub async fn op_http_upgrade_next( state: Rc<RefCell<OpState>>, index: u32, headers: Vec<(ByteString, ByteString)>, @@ -353,7 +353,7 @@ pub async fn op_upgrade( } #[op(fast)] -pub fn op_set_promise_complete(index: u32, status: u16) { +pub fn op_http_set_promise_complete(index: u32, status: u16) { with_resp_mut(index, |resp| { // The Javascript code will never provide a status that is invalid here (see 23_response.js) *resp.as_mut().unwrap().status_mut() = @@ -365,7 +365,7 @@ pub fn op_set_promise_complete(index: u32, status: u16) { } #[op] -pub fn op_get_request_method_and_url( +pub fn op_http_get_request_method_and_url( index: u32, ) -> (String, Option<String>, String, String, Option<u16>) { // TODO(mmastrac): Passing method can be optimized @@ -393,7 +393,10 @@ pub fn op_get_request_method_and_url( } #[op] -pub fn op_get_request_header(index: u32, name: String) -> Option<ByteString> { +pub fn op_http_get_request_header( + index: u32, + name: String, +) -> Option<ByteString> { with_req(index, |req| { let value = req.headers.get(name); value.map(|value| value.as_bytes().into()) @@ -401,7 +404,9 @@ pub fn op_get_request_header(index: u32, name: String) -> Option<ByteString> { } #[op] -pub fn op_get_request_headers(index: u32) -> Vec<(ByteString, ByteString)> { +pub fn op_http_get_request_headers( + index: u32, +) -> Vec<(ByteString, ByteString)> { with_req(index, |req| { let headers = &req.headers; let mut vec = Vec::with_capacity(headers.len()); @@ -436,7 +441,10 @@ pub fn op_get_request_headers(index: u32) -> Vec<(ByteString, ByteString)> { } #[op(fast)] -pub fn op_read_request_body(state: &mut OpState, index: u32) -> ResourceId { +pub fn op_http_read_request_body( + state: &mut OpState, + index: u32, +) -> ResourceId { let incoming = with_req_body_mut(index, |body| body.take().unwrap()); let body_resource = Rc::new(HttpRequestBody::new(incoming)); let res = state.resource_table.add_rc(body_resource.clone()); @@ -447,7 +455,7 @@ pub fn op_read_request_body(state: &mut OpState, index: u32) -> ResourceId { } #[op(fast)] -pub fn op_set_response_header(index: u32, name: &str, value: &str) { +pub fn op_http_set_response_header(index: u32, name: &str, value: &str) { with_resp_mut(index, |resp| { let resp_headers = resp.as_mut().unwrap().headers_mut(); // These are valid latin-1 strings @@ -458,7 +466,7 @@ pub fn op_set_response_header(index: u32, name: &str, value: &str) { } #[op] -pub fn op_set_response_headers( +pub fn op_http_set_response_headers( index: u32, headers: Vec<(ByteString, ByteString)>, ) { @@ -476,7 +484,7 @@ pub fn op_set_response_headers( } #[op(fast)] -pub fn op_set_response_body_resource( +pub fn op_http_set_response_body_resource( state: &mut OpState, index: u32, stream_rid: ResourceId, @@ -502,7 +510,7 @@ pub fn op_set_response_body_resource( } #[op(fast)] -pub fn op_set_response_body_stream( +pub fn op_http_set_response_body_stream( state: &mut OpState, index: u32, ) -> Result<ResourceId, AnyError> { @@ -521,7 +529,7 @@ pub fn op_set_response_body_stream( } #[op(fast)] -pub fn op_set_response_body_text(index: u32, text: String) { +pub fn op_http_set_response_body_text(index: u32, text: String) { if !text.is_empty() { with_resp_mut(index, move |response| { response @@ -534,7 +542,7 @@ pub fn op_set_response_body_text(index: u32, text: String) { } #[op(fast)] -pub fn op_set_response_body_bytes(index: u32, buffer: &[u8]) { +pub fn op_http_set_response_body_bytes(index: u32, buffer: &[u8]) { if !buffer.is_empty() { with_resp_mut(index, |response| { response @@ -759,7 +767,7 @@ impl Drop for HttpJoinHandle { } #[op(v8)] -pub fn op_serve_http( +pub fn op_http_serve( state: Rc<RefCell<OpState>>, listener_rid: ResourceId, ) -> Result<(ResourceId, &'static str, String), AnyError> { @@ -814,7 +822,7 @@ pub fn op_serve_http( } #[op(v8)] -pub fn op_serve_http_on( +pub fn op_http_serve_on( state: Rc<RefCell<OpState>>, conn: ResourceId, ) -> Result<(ResourceId, &'static str, String), AnyError> { diff --git a/ext/http/lib.rs b/ext/http/lib.rs index cde15af88..6dab375a1 100644 --- a/ext/http/lib.rs +++ b/ext/http/lib.rs @@ -88,30 +88,30 @@ deno_core::extension!( deps = [deno_web, deno_net, deno_fetch, deno_websocket], ops = [ op_http_accept, - op_http_write_headers, op_http_headers, - op_http_write, - op_http_write_resource, op_http_shutdown, - op_http_websocket_accept_header, op_http_upgrade_websocket, - http_next::op_serve_http, - http_next::op_serve_http_on, - http_next::op_http_wait, + op_http_websocket_accept_header, + op_http_write_headers, + op_http_write_resource, + op_http_write, + http_next::op_http_get_request_header, + http_next::op_http_get_request_headers, + http_next::op_http_get_request_method_and_url, + http_next::op_http_read_request_body, + http_next::op_http_serve_on, + http_next::op_http_serve, + http_next::op_http_set_promise_complete, + http_next::op_http_set_response_body_bytes, + http_next::op_http_set_response_body_resource, + http_next::op_http_set_response_body_stream, + http_next::op_http_set_response_body_text, + http_next::op_http_set_response_header, + http_next::op_http_set_response_headers, http_next::op_http_track, - http_next::op_set_response_header, - http_next::op_set_response_headers, - http_next::op_set_response_body_text, - http_next::op_set_promise_complete, - http_next::op_set_response_body_bytes, - http_next::op_set_response_body_resource, - http_next::op_set_response_body_stream, - http_next::op_get_request_header, - http_next::op_get_request_headers, - http_next::op_get_request_method_and_url, - http_next::op_read_request_body, - http_next::op_upgrade, - http_next::op_upgrade_raw, + http_next::op_http_upgrade_raw, + http_next::op_http_upgrade_next, + http_next::op_http_wait, ], esm = ["00_serve.js", "01_http.js"], ); |