diff options
author | Bert Belder <bertbelder@gmail.com> | 2020-08-18 18:30:13 +0200 |
---|---|---|
committer | Bert Belder <bertbelder@gmail.com> | 2020-08-19 02:01:48 +0200 |
commit | 27f4aeb92469660fdd78a89a7b2902c08a23ca4a (patch) | |
tree | e2076aaf31f0708e5037f46d3750f93b0d637417 /cli/ops/fetch.rs | |
parent | de1007fc6a2a6c2909732dcb87a5af6c1e370b09 (diff) |
Make Rc/Arc wrapper around State/GlobalState visible (#7104)
Diffstat (limited to 'cli/ops/fetch.rs')
-rw-r--r-- | cli/ops/fetch.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/cli/ops/fetch.rs b/cli/ops/fetch.rs index 539316260..b320222ed 100644 --- a/cli/ops/fetch.rs +++ b/cli/ops/fetch.rs @@ -14,8 +14,9 @@ use http::Method; use reqwest::Client; use std::convert::From; use std::path::PathBuf; +use std::rc::Rc; -pub fn init(i: &mut CoreIsolate, s: &State) { +pub fn init(i: &mut CoreIsolate, s: &Rc<State>) { i.register_op("op_fetch", s.stateful_json_op2(op_fetch)); i.register_op( "op_create_http_client", @@ -34,22 +35,23 @@ struct FetchArgs { pub fn op_fetch( isolate_state: &mut CoreIsolateState, - state: &State, + state: &Rc<State>, args: Value, data: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { let args: FetchArgs = serde_json::from_value(args)?; let url = args.url; let resource_table_ = isolate_state.resource_table.borrow(); - let state_ = state.borrow(); + let mut client_ref_mut; let client = if let Some(rid) = args.client_rid { let r = resource_table_ .get::<HttpClientResource>(rid) .ok_or_else(OpError::bad_resource_id)?; &r.client } else { - &state_.http_client + client_ref_mut = state.http_client.borrow_mut(); + &mut *client_ref_mut }; let method = match args.method { @@ -137,7 +139,7 @@ struct CreateHttpClientOptions { fn op_create_http_client( isolate_state: &mut CoreIsolateState, - state: &State, + state: &Rc<State>, args: Value, _zero_copy: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { @@ -148,7 +150,7 @@ fn op_create_http_client( state.check_read(&PathBuf::from(ca_file))?; } - let client = create_http_client(args.ca_file).unwrap(); + let client = create_http_client(args.ca_file.as_deref()).unwrap(); let rid = resource_table.add("httpClient", Box::new(HttpClientResource::new(client))); |