refactor: rewrite more ops to op2 macro (#20478)

This commit is contained in:
Bartek Iwańczuk 2023-09-14 23:05:18 +02:00 committed by GitHub
parent dc505e905e
commit 5e7435fb80
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 83 additions and 65 deletions

View file

@ -20,7 +20,7 @@ use deno_core::futures::stream::Peekable;
use deno_core::futures::FutureExt;
use deno_core::futures::StreamExt;
use deno_core::futures::TryFutureExt;
use deno_core::op;
use deno_core::op2;
use deno_core::unsync::spawn;
use deno_core::AsyncRefCell;
use deno_core::AsyncResult;
@ -511,10 +511,11 @@ struct NextRequestResponse(
String,
);
#[op]
#[op2(async)]
#[serde]
async fn op_http_accept(
state: Rc<RefCell<OpState>>,
rid: ResourceId,
#[smi] rid: ResourceId,
) -> Result<Option<NextRequestResponse>, AnyError> {
let conn = state.borrow().resource_table.get::<HttpConnResource>(rid)?;
@ -613,13 +614,13 @@ fn req_headers(
headers
}
#[op]
#[op2(async)]
async fn op_http_write_headers(
state: Rc<RefCell<OpState>>,
rid: u32,
status: u16,
headers: Vec<(ByteString, ByteString)>,
data: Option<StringOrBuffer>,
#[smi] rid: u32,
#[smi] status: u16,
#[serde] headers: Vec<(ByteString, ByteString)>,
#[serde] data: Option<StringOrBuffer>,
) -> Result<(), AnyError> {
let stream = state
.borrow_mut()
@ -683,10 +684,11 @@ async fn op_http_write_headers(
}
}
#[op]
#[op2]
#[serde]
fn op_http_headers(
state: &mut OpState,
rid: u32,
#[smi] rid: u32,
) -> Result<Vec<(ByteString, ByteString)>, AnyError> {
let stream = state.resource_table.get::<HttpStreamResource>(rid)?;
let rd = RcRef::map(&stream, |r| &r.rd)
@ -832,11 +834,11 @@ fn should_compress(headers: &hyper::HeaderMap) -> bool {
.unwrap_or_default()
}
#[op]
#[op2(async)]
async fn op_http_write_resource(
state: Rc<RefCell<OpState>>,
rid: ResourceId,
stream: ResourceId,
#[smi] rid: ResourceId,
#[smi] stream: ResourceId,
) -> Result<(), AnyError> {
let http_stream = state
.borrow()
@ -891,11 +893,11 @@ async fn op_http_write_resource(
Ok(())
}
#[op]
#[op2(async)]
async fn op_http_write(
state: Rc<RefCell<OpState>>,
rid: ResourceId,
buf: JsBuffer,
#[smi] rid: ResourceId,
#[buffer] buf: JsBuffer,
) -> Result<(), AnyError> {
let stream = state
.borrow()
@ -944,10 +946,10 @@ async fn op_http_write(
/// Gracefully closes the write half of the HTTP stream. Note that this does not
/// remove the HTTP stream resource from the resource table; it still has to be
/// closed with `Deno.core.close()`.
#[op]
#[op2(async)]
async fn op_http_shutdown(
state: Rc<RefCell<OpState>>,
rid: ResourceId,
#[smi] rid: ResourceId,
) -> Result<(), AnyError> {
let stream = state
.borrow()
@ -979,8 +981,11 @@ async fn op_http_shutdown(
Ok(())
}
#[op]
fn op_http_websocket_accept_header(key: String) -> Result<String, AnyError> {
#[op2]
#[string]
fn op_http_websocket_accept_header(
#[string] key: String,
) -> Result<String, AnyError> {
let digest = ring::digest::digest(
&ring::digest::SHA1_FOR_LEGACY_USE_ONLY,
format!("{key}258EAFA5-E914-47DA-95CA-C5AB0DC85B11").as_bytes(),
@ -988,10 +993,11 @@ fn op_http_websocket_accept_header(key: String) -> Result<String, AnyError> {
Ok(base64::encode(digest))
}
#[op]
#[op2(async)]
#[smi]
async fn op_http_upgrade_websocket(
state: Rc<RefCell<OpState>>,
rid: ResourceId,
#[smi] rid: ResourceId,
) -> Result<ResourceId, AnyError> {
let stream = state
.borrow_mut()