/__w/smoldot/smoldot/repo/lib/src/json_rpc/methods.rs
Line | Count | Source |
1 | | // Smoldot |
2 | | // Copyright (C) 2019-2022 Parity Technologies (UK) Ltd. |
3 | | // SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 |
4 | | |
5 | | // This program is free software: you can redistribute it and/or modify |
6 | | // it under the terms of the GNU General Public License as published by |
7 | | // the Free Software Foundation, either version 3 of the License, or |
8 | | // (at your option) any later version. |
9 | | |
10 | | // This program is distributed in the hope that it will be useful, |
11 | | // but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | | // GNU General Public License for more details. |
14 | | |
15 | | // You should have received a copy of the GNU General Public License |
16 | | // along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 | | |
18 | | //! List of requests and how to answer them. |
19 | | |
20 | | use super::parse; |
21 | | use crate::{header, identity::ss58}; |
22 | | |
23 | | use alloc::{ |
24 | | borrow::Cow, |
25 | | boxed::Box, |
26 | | format, |
27 | | string::{String, ToString as _}, |
28 | | vec, |
29 | | vec::Vec, |
30 | | }; |
31 | | use core::fmt; |
32 | | use hashbrown::HashMap; |
33 | | |
34 | | /// Parses a JSON call (usually sent from a JSON-RPC client and received by a JSON-RPC server). |
35 | | /// |
36 | | /// On success, returns a JSON-encoded identifier for that request that must be passed back when |
37 | | /// emitting the response. |
38 | 96 | pub fn parse_jsonrpc_client_to_server( |
39 | 96 | message: &str, |
40 | 96 | ) -> Result<(&str, MethodCall), ParseClientToServerError> { |
41 | 96 | let call_def95 = parse::parse_request(message).map_err(ParseClientToServerError::JsonRpcParse)?1 ; |
42 | | |
43 | | // No notification is supported by this server. If the `id` field is missing in the request, |
44 | | // assuming that this is a notification and return an appropriate error. |
45 | 95 | let request_id = match call_def.id_json { |
46 | 95 | Some(id) => id, |
47 | | None => { |
48 | 0 | return Err(ParseClientToServerError::UnknownNotification { |
49 | 0 | notification_name: call_def.method, |
50 | 0 | }); |
51 | | } |
52 | | }; |
53 | | |
54 | 95 | let call93 = match MethodCall::from_defs(call_def.method, call_def.params_json) { |
55 | 93 | Ok(c) => c, |
56 | 2 | Err(error) => return Err(ParseClientToServerError::Method { request_id, error }), |
57 | | }; |
58 | | |
59 | 93 | Ok((request_id, call)) |
60 | 96 | } _RNvNtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methods30parse_jsonrpc_client_to_server Line | Count | Source | 38 | 2 | pub fn parse_jsonrpc_client_to_server( | 39 | 2 | message: &str, | 40 | 2 | ) -> Result<(&str, MethodCall), ParseClientToServerError> { | 41 | 2 | let call_def = parse::parse_request(message).map_err(ParseClientToServerError::JsonRpcParse)?0 ; | 42 | | | 43 | | // No notification is supported by this server. If the `id` field is missing in the request, | 44 | | // assuming that this is a notification and return an appropriate error. | 45 | 2 | let request_id = match call_def.id_json { | 46 | 2 | Some(id) => id, | 47 | | None => { | 48 | 0 | return Err(ParseClientToServerError::UnknownNotification { | 49 | 0 | notification_name: call_def.method, | 50 | 0 | }); | 51 | | } | 52 | | }; | 53 | | | 54 | 2 | let call1 = match MethodCall::from_defs(call_def.method, call_def.params_json) { | 55 | 1 | Ok(c) => c, | 56 | 1 | Err(error) => return Err(ParseClientToServerError::Method { request_id, error }), | 57 | | }; | 58 | | | 59 | 1 | Ok((request_id, call)) | 60 | 2 | } |
_RNvNtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methods30parse_jsonrpc_client_to_server Line | Count | Source | 38 | 94 | pub fn parse_jsonrpc_client_to_server( | 39 | 94 | message: &str, | 40 | 94 | ) -> Result<(&str, MethodCall), ParseClientToServerError> { | 41 | 94 | let call_def93 = parse::parse_request(message).map_err(ParseClientToServerError::JsonRpcParse)?1 ; | 42 | | | 43 | | // No notification is supported by this server. If the `id` field is missing in the request, | 44 | | // assuming that this is a notification and return an appropriate error. | 45 | 93 | let request_id = match call_def.id_json { | 46 | 93 | Some(id) => id, | 47 | | None => { | 48 | 0 | return Err(ParseClientToServerError::UnknownNotification { | 49 | 0 | notification_name: call_def.method, | 50 | 0 | }); | 51 | | } | 52 | | }; | 53 | | | 54 | 93 | let call92 = match MethodCall::from_defs(call_def.method, call_def.params_json) { | 55 | 92 | Ok(c) => c, | 56 | 1 | Err(error) => return Err(ParseClientToServerError::Method { request_id, error }), | 57 | | }; | 58 | | | 59 | 92 | Ok((request_id, call)) | 60 | 94 | } |
|
61 | | |
62 | | /// Error produced by [`parse_jsonrpc_client_to_server`]. |
63 | | #[derive(Debug, derive_more::Display, derive_more::Error)] |
64 | | pub enum ParseClientToServerError<'a> { |
65 | | /// Could not parse the body of the message as a valid JSON-RPC message. |
66 | | JsonRpcParse(parse::ParseError), |
67 | | /// Call concerns a notification that isn't recognized. |
68 | | #[display("Call concerns a notification that isn't recognized: {notification_name:?}.")] |
69 | | UnknownNotification { |
70 | | /// Unknown notification. |
71 | | notification_name: &'a str, |
72 | | }, |
73 | | /// JSON-RPC request is valid, but there is a problem related to the method being called. |
74 | | #[display("{error}")] |
75 | | Method { |
76 | | /// Identifier of the request sent by the user. |
77 | | request_id: &'a str, |
78 | | /// Problem that happens. |
79 | | // TODO: this can't be marked as error source because sources must have 'static lifetime; evaluate trade-offs |
80 | | error: MethodError<'a>, |
81 | | }, |
82 | | } |
83 | | |
84 | | /// Parses a JSON notification. |
85 | 0 | pub fn parse_notification(message: &str) -> Result<ServerToClient, ParseNotificationError> { |
86 | 0 | let call_def = parse::parse_request(message).map_err(ParseNotificationError::JsonRpcParse)?; |
87 | 0 | let call = ServerToClient::from_defs(call_def.method, call_def.params_json) |
88 | 0 | .map_err(ParseNotificationError::Method)?; |
89 | 0 | Ok(call) |
90 | 0 | } Unexecuted instantiation: _RNvNtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methods18parse_notification Unexecuted instantiation: _RNvNtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methods18parse_notification |
91 | | |
92 | | /// Error produced by [`parse_notification`]. |
93 | | #[derive(Debug, derive_more::Display, derive_more::Error)] |
94 | | pub enum ParseNotificationError<'a> { |
95 | | /// Could not parse the body of the message as a valid JSON-RPC message. |
96 | | #[display("{_0}")] |
97 | | JsonRpcParse(parse::ParseError), |
98 | | /// JSON-RPC request is valid, but there is a problem related to the method being called. |
99 | | #[display("{_0}")] |
100 | | // TODO: this can't be marked as error source because sources must have 'static lifetime; evaluate trade-offs |
101 | | Method(#[error(not(source))] MethodError<'a>), |
102 | | } |
103 | | |
104 | | /// Builds a JSON call, to send it to a JSON-RPC server. |
105 | | /// |
106 | | /// # Panic |
107 | | /// |
108 | | /// Panics if the `id_json` isn't valid JSON. |
109 | | /// |
110 | 0 | pub fn build_json_call_object_parameters(id_json: Option<&str>, method: MethodCall) -> String { |
111 | 0 | method.to_json_request_object_parameters(id_json) |
112 | 0 | } Unexecuted instantiation: _RNvNtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methods33build_json_call_object_parameters Unexecuted instantiation: _RNvNtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methods33build_json_call_object_parameters |
113 | | |
114 | | /// See [`ParseClientToServerError::Method`] or [`ParseNotificationError::Method`]. |
115 | | #[derive(Debug, derive_more::Display, derive_more::Error)] |
116 | | pub enum MethodError<'a> { |
117 | | /// Call concerns a method that isn't recognized. |
118 | | #[display("Call concerns a method that isn't recognized: {method_name:?}")] |
119 | | UnknownMethod { |
120 | | /// Name of the unrecognized method. |
121 | | method_name: &'a str, |
122 | | }, |
123 | | /// Format the parameters is plain invalid. |
124 | | #[display("Invalid parameters format when calling {rpc_method}")] |
125 | | InvalidParametersFormat { |
126 | | /// Name of the JSON-RPC method that was attempted to be called. |
127 | | rpc_method: &'static str, |
128 | | }, |
129 | | /// Too many parameters have been passed to the function. |
130 | | #[display("{rpc_method} expects {expected} parameters, but got {actual}")] |
131 | | TooManyParameters { |
132 | | /// Name of the JSON-RPC method that was attempted to be called. |
133 | | rpc_method: &'static str, |
134 | | /// Number of parameters that are expected to be received. |
135 | | expected: usize, |
136 | | /// Number of parameters actually received. |
137 | | actual: usize, |
138 | | }, |
139 | | /// One of the parameters of the function call is invalid. |
140 | | #[display("Parameter of index {parameter_index} is invalid when calling {rpc_method}: {error}")] |
141 | | InvalidParameter { |
142 | | /// Name of the JSON-RPC method that was attempted to be called. |
143 | | rpc_method: &'static str, |
144 | | /// 0-based index of the parameter whose format is invalid. |
145 | | parameter_index: usize, |
146 | | /// Reason why it failed. |
147 | | #[error(source)] |
148 | | error: InvalidParameterError, |
149 | | }, |
150 | | /// The parameters of the function call are missing. |
151 | | MissingParameters { |
152 | | /// Name of the JSON-RPC method that was attempted to be called. |
153 | | rpc_method: &'static str, |
154 | | }, |
155 | | } |
156 | | |
157 | | impl<'a> MethodError<'a> { |
158 | | /// Turns the error into a JSON string representing the error response to send back. |
159 | | /// |
160 | | /// `id_json` must be a valid JSON-formatted request identifier, the same the user |
161 | | /// passed in the request. |
162 | | /// |
163 | | /// # Panic |
164 | | /// |
165 | | /// Panics if `id_json` isn't valid JSON. |
166 | | /// |
167 | 1 | pub fn to_json_error(&self, id_json: &str) -> String { |
168 | 1 | parse::build_error_response( |
169 | 1 | id_json, |
170 | 1 | match self { |
171 | 1 | MethodError::UnknownMethod { .. } => parse::ErrorResponse::MethodNotFound, |
172 | | MethodError::InvalidParametersFormat { .. } |
173 | | | MethodError::TooManyParameters { .. } |
174 | | | MethodError::InvalidParameter { .. } |
175 | 0 | | MethodError::MissingParameters { .. } => parse::ErrorResponse::InvalidParams, |
176 | | }, |
177 | 1 | None, |
178 | | ) |
179 | 1 | } Unexecuted instantiation: _RNvMNtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB2_11MethodError13to_json_error _RNvMNtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB2_11MethodError13to_json_error Line | Count | Source | 167 | 1 | pub fn to_json_error(&self, id_json: &str) -> String { | 168 | 1 | parse::build_error_response( | 169 | 1 | id_json, | 170 | 1 | match self { | 171 | 1 | MethodError::UnknownMethod { .. } => parse::ErrorResponse::MethodNotFound, | 172 | | MethodError::InvalidParametersFormat { .. } | 173 | | | MethodError::TooManyParameters { .. } | 174 | | | MethodError::InvalidParameter { .. } | 175 | 0 | | MethodError::MissingParameters { .. } => parse::ErrorResponse::InvalidParams, | 176 | | }, | 177 | 1 | None, | 178 | | ) | 179 | 1 | } |
|
180 | | } |
181 | | |
182 | | /// The parameter of a function call is invalid. |
183 | | #[derive(Debug, derive_more::Display, derive_more::Error)] |
184 | | pub struct InvalidParameterError(serde_json::Error); |
185 | | |
186 | | /// Generates two enums, one for requests and one for responses, based on the list of supported |
187 | | /// requests. |
188 | | macro_rules! define_methods { |
189 | | ($rq_name:ident, $rp_name:ident $(<$l:lifetime>)*, $( |
190 | | $(#[$attrs:meta])* |
191 | | $name:ident ($($(#[rename = $p_rpc_name:expr])* $p_name:ident: $p_ty:ty),*) -> $ret_ty:ty |
192 | | $([$($alias:ident),*])* |
193 | | , |
194 | | )*) => { |
195 | | #[allow(non_camel_case_types, non_snake_case)] |
196 | | #[derive(Debug, Clone)] |
197 | | pub enum $rq_name<'a> { |
198 | | $( |
199 | | $(#[$attrs])* |
200 | | $name { |
201 | | $($p_name: $p_ty),* |
202 | | }, |
203 | | )* |
204 | | } |
205 | | |
206 | | impl<'a> $rq_name<'a> { |
207 | | /// Returns a list of RPC method names of all the methods in the enum. |
208 | 0 | pub fn method_names() -> impl ExactSizeIterator<Item = &'static str> { |
209 | 0 | [$(stringify!($name)),*].iter().copied() |
210 | 0 | } Unexecuted instantiation: _RNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_10MethodCall12method_names Unexecuted instantiation: _RNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_14ServerToClient12method_names Unexecuted instantiation: _RNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_10MethodCall12method_names Unexecuted instantiation: _RNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_14ServerToClient12method_names |
211 | | |
212 | | /// Returns the name of the method. |
213 | 0 | pub fn name(&self) -> &'static str { |
214 | 0 | match self { |
215 | 0 | $($rq_name::$name { .. } => stringify!($name),)* |
216 | | } |
217 | 0 | } Unexecuted instantiation: _RNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_10MethodCall4name Unexecuted instantiation: _RNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_14ServerToClient4name Unexecuted instantiation: _RNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_10MethodCall4name Unexecuted instantiation: _RNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_14ServerToClient4name |
218 | | |
219 | | /// Returns an JSON object containing the list of the parameters of the method. |
220 | 0 | pub fn params_to_json_object(&self) -> String { |
221 | 0 | match self { |
222 | 0 | $($rq_name::$name { $($p_name),* } => { |
223 | | #[derive(serde::Serialize)] |
224 | | struct Params<'a> { |
225 | | $( |
226 | | $(#[serde(rename = $p_rpc_name)])* |
227 | | $p_name: &'a $p_ty, |
228 | | )* |
229 | | |
230 | | // This `_dummy` field is necessary to not have an "unused lifetime" |
231 | | // error if the parameters don't have a lifetime. |
232 | | #[serde(skip)] |
233 | | _dummy: core::marker::PhantomData<&'a ()>, |
234 | | } |
235 | | |
236 | 0 | serde_json::to_string(&Params { |
237 | 0 | $($p_name,)* |
238 | 0 | _dummy: core::marker::PhantomData |
239 | 0 | }).unwrap() |
240 | | },)* |
241 | | } |
242 | 0 | } Unexecuted instantiation: _RNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_10MethodCall21params_to_json_object Unexecuted instantiation: _RNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_14ServerToClient21params_to_json_object Unexecuted instantiation: _RNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_10MethodCall21params_to_json_object Unexecuted instantiation: _RNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_14ServerToClient21params_to_json_object |
243 | | |
244 | | /// Builds a JSON request, to send it to a JSON-RPC server. |
245 | | /// |
246 | | /// # Panic |
247 | | /// |
248 | | /// Panics if the `id_json` isn't valid JSON. |
249 | | /// |
250 | 0 | pub fn to_json_request_object_parameters(&self, id_json: Option<&str>) -> String { |
251 | 0 | parse::build_request(&parse::Request { |
252 | 0 | id_json, |
253 | 0 | method: self.name(), |
254 | 0 | // Note that we never skip the `params` field, even if empty. This is an |
255 | 0 | // arbitrary choice. |
256 | 0 | params_json: Some(&self.params_to_json_object()), |
257 | 0 | }) |
258 | 0 | } Unexecuted instantiation: _RNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_10MethodCall33to_json_request_object_parameters Unexecuted instantiation: _RNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_14ServerToClient33to_json_request_object_parameters Unexecuted instantiation: _RNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_10MethodCall33to_json_request_object_parameters Unexecuted instantiation: _RNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_14ServerToClient33to_json_request_object_parameters |
259 | | |
260 | 95 | fn from_defs(name: &'a str, params: Option<&'a str>) -> Result<Self, MethodError<'a>> { |
261 | | #![allow(unused, unused_mut)] |
262 | | |
263 | | $( |
264 | 95 | if name1 == stringify!($name) $($(|| name35 == stringify!87 ($alias))*)* { |
265 | | // First, if parameters are missing (i.e. the `params` field isn't there), |
266 | | // accept the call provided there is no parameter. |
267 | 0 | if params.is_none() { |
268 | | // TODO: use `count(p_name) when stable; https://rust-lang.github.io/rfcs/3086-macro-metavar-expr.html |
269 | 0 | if !has_params!($($p_name),*) { |
270 | | return Ok($rq_name::$name { |
271 | | // This code can't be reached if there is any parameter, thus |
272 | | // `unreachable!()` is never called. |
273 | 0 | $($p_name: unreachable!(),)* |
274 | | }) |
275 | | } else { |
276 | 0 | return Err(MethodError::MissingParameters { |
277 | 0 | rpc_method: stringify!($name), |
278 | 0 | }); |
279 | | } |
280 | 0 | } |
281 | | |
282 | | // Then, try parse parameters as if they were passed by name in a map. |
283 | | // For example, a method `my_method(foo: i32, bar: &str)` accepts |
284 | | // parameters formatted as `{"foo":5, "bar":"hello"}`. |
285 | | #[derive(serde::Deserialize)] |
286 | | struct Params<'a> { |
287 | | $( |
288 | | $(#[serde(rename = $p_rpc_name)])* |
289 | | $p_name: $p_ty, |
290 | | )* |
291 | | |
292 | | // This `_dummy` field is necessary to not have an "unused lifetime" |
293 | | // error if the parameters don't have a lifetime. |
294 | | #[serde(borrow, skip)] |
295 | | _dummy: core::marker::PhantomData<&'a ()>, |
296 | | } |
297 | 92 | if let Some(Ok(params0 )) = params0 .as_ref0 ().map0 (|p| serde_json::from_str(p)) { Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defs0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss0_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss10_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss12_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss14_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss16_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss18_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1G_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1K_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1M_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1O_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1S_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1Y_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1a_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1g_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1i_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1q_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1w_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss20_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss22_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss24_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2A_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2C_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2E_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2G_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2I_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2K_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2M_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2O_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2Q_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2S_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2U_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2a_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2c_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2g_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2k_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2o_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2s_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2u_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2w_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2y_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss30_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3A_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3G_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3K_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3Q_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3S_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3U_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3W_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3a_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3e_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3k_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3q_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss40_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss42_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss46_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4a_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4e_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4i_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4k_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4o_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss6_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss8_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssA_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssE_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssG_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssI_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssK_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssO_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssS_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssW_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssY_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssa_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssc_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssg_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssk_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defsso_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssq_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssu_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssy_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defs0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss4_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssE_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssK_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssa_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssg_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssm_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defsss_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssy_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defs0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss0_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss10_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss12_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss14_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss16_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss18_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1G_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1K_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1M_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1O_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1S_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1Y_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1a_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1g_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1i_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1q_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1w_0Bb_ Line | Count | Source | 297 | 24 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss20_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss22_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss24_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2A_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2C_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2E_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
_RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2G_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2I_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2K_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2M_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2O_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2Q_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2S_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2U_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2a_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2c_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2g_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2k_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2o_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2s_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2u_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
_RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2w_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2y_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss30_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3A_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3G_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3K_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3Q_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
_RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3S_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
_RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3U_0Bb_ Line | Count | Source | 297 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3W_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3a_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3e_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3k_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3q_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss40_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss42_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss46_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4a_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4e_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4i_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4k_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4o_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss6_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss8_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssA_0Bb_ Line | Count | Source | 297 | 12 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssE_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssG_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssI_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssK_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssO_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssS_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssW_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssY_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssa_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssc_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssg_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssk_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defsso_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssq_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssu_0Bb_ Line | Count | Source | 297 | 8 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssy_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defs0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss4_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssE_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssK_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssa_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssg_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssm_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defsss_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssy_0Bb_ |
298 | 0 | let Params { _dummy: _, $($p_name),* } = params; |
299 | 0 | return Ok($rq_name::$name { |
300 | 0 | $($p_name,)* |
301 | 0 | }) |
302 | 0 | } |
303 | | |
304 | | // Otherwise, try parse parameters as if they were passed by array. |
305 | | // For example, a method `my_method(foo: i32, bar: &str)` also accepts |
306 | | // parameters formatted as `[5, "hello"]`. |
307 | | // To make things more complex, optional parameters can be omitted. |
308 | | // |
309 | | // The code below allocates a `Vec`, but at the time of writing there is |
310 | | // no way to ask `serde_json` to parse an array without doing so. |
311 | 24 | if let Some(Ok(params0 )) = params0 .as_ref0 ().map0 (|p| serde_json::from_str::<Vec<&'a serde_json::value::RawValue>>(p)) { Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss11_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss13_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss15_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss17_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss19_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1H_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1L_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1N_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1P_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1T_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1Z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1b_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1h_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1j_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1r_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1x_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss21_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss23_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss25_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2B_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2D_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2F_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2H_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2J_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2L_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2N_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2P_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2R_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2T_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2V_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2b_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2d_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2h_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2l_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2p_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2t_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2v_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2x_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss31_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3B_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3H_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3L_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3R_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3T_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3V_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3X_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3b_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3f_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3l_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3r_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss41_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss43_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss47_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4b_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4f_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4j_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4l_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4p_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss5_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss7_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss9_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssB_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssF_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssH_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssJ_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssL_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssP_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssT_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssX_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssZ_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssb_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssd_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssh_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssl_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssp_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssr_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssv_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssz_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss5_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssF_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssL_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssb_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssh_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssn_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defsst_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssz_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss11_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss13_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss15_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss17_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss19_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1H_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1L_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1N_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1P_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1T_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1Z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1b_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1h_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1j_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1r_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1x_0Bb_ Line | Count | Source | 311 | 20 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str::<Vec<&'a serde_json::value::RawValue>>(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss21_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss23_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss25_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2B_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2D_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2F_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2H_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2J_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2L_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2N_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2P_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2R_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2T_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2V_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2b_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2d_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2h_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2l_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2p_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2t_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2v_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2x_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss31_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3B_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3H_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3L_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3R_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3T_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3V_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3X_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3b_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3f_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3l_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3r_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss41_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss43_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss47_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4b_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4f_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4j_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4l_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4p_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss5_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss7_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss9_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssB_0Bb_ Line | Count | Source | 311 | 4 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str::<Vec<&'a serde_json::value::RawValue>>(p)) { |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssF_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssH_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssJ_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssL_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssP_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssT_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssX_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssZ_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssb_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssd_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssh_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssl_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssp_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssr_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssv_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssz_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss5_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssF_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssL_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssb_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssh_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssn_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defsst_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssz_0Bb_ |
312 | 0 | let mut n = 0; |
313 | | $( |
314 | | // Missing parameters are implicitly equal to null. |
315 | 0 | let $p_name = match params.get(n) |
316 | 44 | .map0 (|val| serde_json::from_str(val.get())) Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1A_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1C_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1E_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1I_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1Q_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1U_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1W_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1c_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1e_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1k_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1m_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1o_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1s_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1u_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1y_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss26_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss28_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2W_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2Y_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2e_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2i_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2m_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2q_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss32_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss34_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss36_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss38_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3C_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3E_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3I_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3M_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3O_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3Y_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3c_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3g_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3i_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3m_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3o_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3s_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3u_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3w_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3y_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss44_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss48_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4c_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4g_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4m_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4q_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssC_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssM_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssQ_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssU_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defsse_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssi_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssm_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defsss_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssw_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss0_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss2_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss6_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss8_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssA_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssC_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssG_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssI_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssM_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssO_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssc_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defsse_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssi_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssk_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defsso_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssq_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssu_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssw_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1A_0Bb_ Line | Count | Source | 316 | 20 | .map(|val| serde_json::from_str(val.get())) |
_RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1C_0Bb_ Line | Count | Source | 316 | 4 | .map(|val| serde_json::from_str(val.get())) |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1E_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1I_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1Q_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1U_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1W_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1c_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1e_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1k_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1m_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1o_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1s_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1u_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1y_0Bb_ Line | Count | Source | 316 | 20 | .map(|val| serde_json::from_str(val.get())) |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss26_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss28_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2W_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2Y_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2e_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2i_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2m_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2q_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss32_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss34_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss36_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss38_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3C_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3E_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3I_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3M_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3O_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3Y_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3c_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3g_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3i_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3m_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3o_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3s_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3u_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3w_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3y_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss44_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss48_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4c_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4g_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4m_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4q_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssC_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssM_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssQ_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssU_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defsse_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssi_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssm_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defsss_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssw_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss0_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss2_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss6_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss8_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssA_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssC_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssG_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssI_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssM_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssO_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssc_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defsse_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssi_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssk_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defsso_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssq_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssu_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssw_0Bb_ |
317 | 40 | .unwrap_or_else0 (|| serde_json::from_str("null")) Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1B_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1D_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1F_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1J_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1R_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1V_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1X_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1d_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1f_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1l_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1n_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1p_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1t_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1v_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss27_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss29_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2X_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2Z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2f_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2j_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2n_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2r_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss33_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss35_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss37_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss39_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3D_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3F_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3J_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3N_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3P_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3Z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3d_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3h_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3j_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3n_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3p_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3t_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3v_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3x_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss45_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss49_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4d_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4h_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4n_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4r_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssD_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssN_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssR_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssV_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssf_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssj_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssn_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defsst_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssx_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss1_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss3_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss7_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss9_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssB_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssD_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssH_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssJ_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssN_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssP_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssd_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssf_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssj_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssl_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssp_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssr_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssv_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssx_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1B_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1D_0Bb_ Line | Count | Source | 317 | 16 | .unwrap_or_else(|| serde_json::from_str("null")) |
_RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1F_0Bb_ Line | Count | Source | 317 | 20 | .unwrap_or_else(|| serde_json::from_str("null")) |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1J_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1R_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1V_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1X_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1d_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1f_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1l_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1n_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1p_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1t_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1v_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss1z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss27_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss29_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2X_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2Z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2f_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2j_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2n_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss2r_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss33_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss35_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss37_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss39_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3D_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3F_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3J_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3N_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3P_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3Z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3d_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3h_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3j_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3n_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3p_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3t_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3v_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3x_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss3z_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss45_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss49_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4d_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4h_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4n_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defss4r_0Bb_ _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssD_0Bb_ Line | Count | Source | 317 | 4 | .unwrap_or_else(|| serde_json::from_str("null")) |
Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssN_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssR_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssV_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssf_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssj_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssn_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defsst_0Bb_ Unexecuted instantiation: _RNCNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_10MethodCall9from_defssx_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss1_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss3_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss7_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defss9_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssB_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssD_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssH_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssJ_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssN_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssP_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssd_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssf_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssj_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssl_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssp_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssr_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssv_0Bb_ Unexecuted instantiation: _RNCNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_14ServerToClient9from_defssx_0Bb_ |
318 | | { |
319 | 0 | Ok(v) => v, |
320 | 0 | Err(err) => return Err(MethodError::InvalidParameter { |
321 | 0 | rpc_method: stringify!($name), |
322 | 0 | parameter_index: n, |
323 | 0 | error: InvalidParameterError(err), |
324 | 0 | }) |
325 | | }; |
326 | 0 | n += 1; |
327 | | )* |
328 | 0 | if params.get(n).is_some() { |
329 | 0 | return Err(MethodError::TooManyParameters { |
330 | 0 | rpc_method: stringify!($name), |
331 | 0 | expected: n, |
332 | 0 | actual: params.len(), |
333 | 0 | }) |
334 | 0 | } |
335 | 0 | return Ok($rq_name::$name { |
336 | 0 | $($p_name,)* |
337 | 0 | }) |
338 | 0 | } |
339 | | |
340 | 0 | return Err(MethodError::InvalidParametersFormat { |
341 | 0 | rpc_method: stringify!($name), |
342 | 0 | }); |
343 | 1 | } |
344 | | )* |
345 | | |
346 | 1 | Err(MethodError::UnknownMethod { method_name: name }) |
347 | 95 | } _RNvMsq_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_10MethodCall9from_defs Line | Count | Source | 260 | 2 | fn from_defs(name: &'a str, params: Option<&'a str>) -> Result<Self, MethodError<'a>> { | 261 | | #![allow(unused, unused_mut)] | 262 | | | 263 | | $( | 264 | 2 | if name0 == stringify!($name) $($(|| name == stringify!($alias))*)* { | 265 | | // First, if parameters are missing (i.e. the `params` field isn't there), | 266 | | // accept the call provided there is no parameter. | 267 | 0 | if params.is_none() { | 268 | | // TODO: use `count(p_name) when stable; https://rust-lang.github.io/rfcs/3086-macro-metavar-expr.html | 269 | 0 | if !has_params!($($p_name),*) { | 270 | | return Ok($rq_name::$name { | 271 | | // This code can't be reached if there is any parameter, thus | 272 | | // `unreachable!()` is never called. | 273 | 0 | $($p_name: unreachable!(),)* | 274 | | }) | 275 | | } else { | 276 | 0 | return Err(MethodError::MissingParameters { | 277 | 0 | rpc_method: stringify!($name), | 278 | 0 | }); | 279 | | } | 280 | 0 | } | 281 | | | 282 | | // Then, try parse parameters as if they were passed by name in a map. | 283 | | // For example, a method `my_method(foo: i32, bar: &str)` accepts | 284 | | // parameters formatted as `{"foo":5, "bar":"hello"}`. | 285 | | #[derive(serde::Deserialize)] | 286 | | struct Params<'a> { | 287 | | $( | 288 | | $(#[serde(rename = $p_rpc_name)])* | 289 | | $p_name: $p_ty, | 290 | | )* | 291 | | | 292 | | // This `_dummy` field is necessary to not have an "unused lifetime" | 293 | | // error if the parameters don't have a lifetime. | 294 | | #[serde(borrow, skip)] | 295 | | _dummy: core::marker::PhantomData<&'a ()>, | 296 | | } | 297 | 0 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { | 298 | 0 | let Params { _dummy: _, $($p_name),* } = params; | 299 | 0 | return Ok($rq_name::$name { | 300 | 0 | $($p_name,)* | 301 | 0 | }) | 302 | 0 | } | 303 | | | 304 | | // Otherwise, try parse parameters as if they were passed by array. | 305 | | // For example, a method `my_method(foo: i32, bar: &str)` also accepts | 306 | | // parameters formatted as `[5, "hello"]`. | 307 | | // To make things more complex, optional parameters can be omitted. | 308 | | // | 309 | | // The code below allocates a `Vec`, but at the time of writing there is | 310 | | // no way to ask `serde_json` to parse an array without doing so. | 311 | 0 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str::<Vec<&'a serde_json::value::RawValue>>(p)) { | 312 | 0 | let mut n = 0; | 313 | | $( | 314 | | // Missing parameters are implicitly equal to null. | 315 | 0 | let $p_name = match params.get(n) | 316 | 0 | .map(|val| serde_json::from_str(val.get())) | 317 | 0 | .unwrap_or_else(|| serde_json::from_str("null")) | 318 | | { | 319 | 0 | Ok(v) => v, | 320 | 0 | Err(err) => return Err(MethodError::InvalidParameter { | 321 | 0 | rpc_method: stringify!($name), | 322 | 0 | parameter_index: n, | 323 | 0 | error: InvalidParameterError(err), | 324 | 0 | }) | 325 | | }; | 326 | 0 | n += 1; | 327 | | )* | 328 | 0 | if params.get(n).is_some() { | 329 | 0 | return Err(MethodError::TooManyParameters { | 330 | 0 | rpc_method: stringify!($name), | 331 | 0 | expected: n, | 332 | 0 | actual: params.len(), | 333 | 0 | }) | 334 | 0 | } | 335 | 0 | return Ok($rq_name::$name { | 336 | 0 | $($p_name,)* | 337 | 0 | }) | 338 | 0 | } | 339 | | | 340 | 0 | return Err(MethodError::InvalidParametersFormat { | 341 | 0 | rpc_method: stringify!($name), | 342 | 0 | }); | 343 | 0 | } | 344 | | )* | 345 | | | 346 | 0 | Err(MethodError::UnknownMethod { method_name: name }) | 347 | 2 | } |
Unexecuted instantiation: _RNvMsw_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_14ServerToClient9from_defs _RNvMsq_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_10MethodCall9from_defs Line | Count | Source | 260 | 93 | fn from_defs(name: &'a str, params: Option<&'a str>) -> Result<Self, MethodError<'a>> { | 261 | | #![allow(unused, unused_mut)] | 262 | | | 263 | | $( | 264 | 93 | if name1 == stringify!($name) $($(|| name33 == stringify!85 ($alias))*)* { | 265 | | // First, if parameters are missing (i.e. the `params` field isn't there), | 266 | | // accept the call provided there is no parameter. | 267 | 0 | if params.is_none() { | 268 | | // TODO: use `count(p_name) when stable; https://rust-lang.github.io/rfcs/3086-macro-metavar-expr.html | 269 | 0 | if !has_params!($($p_name),*) { | 270 | | return Ok($rq_name::$name { | 271 | | // This code can't be reached if there is any parameter, thus | 272 | | // `unreachable!()` is never called. | 273 | 0 | $($p_name: unreachable!(),)* | 274 | | }) | 275 | | } else { | 276 | 0 | return Err(MethodError::MissingParameters { | 277 | 0 | rpc_method: stringify!($name), | 278 | 0 | }); | 279 | | } | 280 | 0 | } | 281 | | | 282 | | // Then, try parse parameters as if they were passed by name in a map. | 283 | | // For example, a method `my_method(foo: i32, bar: &str)` accepts | 284 | | // parameters formatted as `{"foo":5, "bar":"hello"}`. | 285 | | #[derive(serde::Deserialize)] | 286 | | struct Params<'a> { | 287 | | $( | 288 | | $(#[serde(rename = $p_rpc_name)])* | 289 | | $p_name: $p_ty, | 290 | | )* | 291 | | | 292 | | // This `_dummy` field is necessary to not have an "unused lifetime" | 293 | | // error if the parameters don't have a lifetime. | 294 | | #[serde(borrow, skip)] | 295 | | _dummy: core::marker::PhantomData<&'a ()>, | 296 | | } | 297 | 0 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str(p)) { | 298 | 0 | let Params { _dummy: _, $($p_name),* } = params; | 299 | 0 | return Ok($rq_name::$name { | 300 | 0 | $($p_name,)* | 301 | 0 | }) | 302 | 0 | } | 303 | | | 304 | | // Otherwise, try parse parameters as if they were passed by array. | 305 | | // For example, a method `my_method(foo: i32, bar: &str)` also accepts | 306 | | // parameters formatted as `[5, "hello"]`. | 307 | | // To make things more complex, optional parameters can be omitted. | 308 | | // | 309 | | // The code below allocates a `Vec`, but at the time of writing there is | 310 | | // no way to ask `serde_json` to parse an array without doing so. | 311 | 0 | if let Some(Ok(params)) = params.as_ref().map(|p| serde_json::from_str::<Vec<&'a serde_json::value::RawValue>>(p)) { | 312 | 0 | let mut n = 0; | 313 | | $( | 314 | | // Missing parameters are implicitly equal to null. | 315 | 0 | let $p_name = match params.get(n) | 316 | 0 | .map(|val| serde_json::from_str(val.get())) | 317 | 0 | .unwrap_or_else(|| serde_json::from_str("null")) | 318 | | { | 319 | 0 | Ok(v) => v, | 320 | 0 | Err(err) => return Err(MethodError::InvalidParameter { | 321 | 0 | rpc_method: stringify!($name), | 322 | 0 | parameter_index: n, | 323 | 0 | error: InvalidParameterError(err), | 324 | 0 | }) | 325 | | }; | 326 | 0 | n += 1; | 327 | | )* | 328 | 0 | if params.get(n).is_some() { | 329 | 0 | return Err(MethodError::TooManyParameters { | 330 | 0 | rpc_method: stringify!($name), | 331 | 0 | expected: n, | 332 | 0 | actual: params.len(), | 333 | 0 | }) | 334 | 0 | } | 335 | 0 | return Ok($rq_name::$name { | 336 | 0 | $($p_name,)* | 337 | 0 | }) | 338 | 0 | } | 339 | | | 340 | 0 | return Err(MethodError::InvalidParametersFormat { | 341 | 0 | rpc_method: stringify!($name), | 342 | 0 | }); | 343 | 1 | } | 344 | | )* | 345 | | | 346 | 1 | Err(MethodError::UnknownMethod { method_name: name }) | 347 | 93 | } |
Unexecuted instantiation: _RNvMsw_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_14ServerToClient9from_defs |
348 | | } |
349 | | |
350 | | #[allow(non_camel_case_types)] |
351 | | #[derive(Debug, Clone)] |
352 | | pub enum $rp_name $(<$l>)* { |
353 | | $( |
354 | | $name($ret_ty), |
355 | | )* |
356 | | } |
357 | | |
358 | | impl$(<$l>)* $rp_name$(<$l>)* { |
359 | | /// Serializes the response into a JSON string. |
360 | | /// |
361 | | /// `id_json` must be a valid JSON-formatted request identifier, the same the user |
362 | | /// passed in the request. |
363 | | /// |
364 | | /// # Panic |
365 | | /// |
366 | | /// Panics if `id_json` isn't valid JSON. |
367 | | /// |
368 | 19 | pub fn to_json_response(&self, id_json: &str) -> String { |
369 | 19 | match self { |
370 | | $( |
371 | 0 | $rp_name::$name(out) => { |
372 | 0 | let result_json = serde_json::to_string(&out).unwrap(); |
373 | 0 | parse::build_success_response(id_json, &result_json) |
374 | | }, |
375 | | )* |
376 | | } |
377 | 19 | } Unexecuted instantiation: _RNvMsr_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_8Response16to_json_response Unexecuted instantiation: _RNvMsx_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_22ServerToClientResponse16to_json_response _RNvMsr_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_8Response16to_json_response Line | Count | Source | 368 | 19 | pub fn to_json_response(&self, id_json: &str) -> String { | 369 | 19 | match self { | 370 | | $( | 371 | 0 | $rp_name::$name(out) => { | 372 | 0 | let result_json = serde_json::to_string(&out).unwrap(); | 373 | 0 | parse::build_success_response(id_json, &result_json) | 374 | | }, | 375 | | )* | 376 | | } | 377 | 19 | } |
Unexecuted instantiation: _RNvMsx_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_22ServerToClientResponse16to_json_response |
378 | | } |
379 | | }; |
380 | | } |
381 | | |
382 | | macro_rules! has_params { |
383 | | () => { |
384 | | false |
385 | | }; |
386 | | ($p1:ident $(, $p:ident)*) => { |
387 | | true |
388 | | }; |
389 | | } |
390 | | |
391 | | // Note: `&str` shouldn't be used, because of https://github.com/serde-rs/json/issues/742 |
392 | | // TODO: change everything to take parameters by ref when possible |
393 | | // TODO: change everything to return values by ref when possible |
394 | | define_methods! { |
395 | | MethodCall, |
396 | | Response<'a>, |
397 | | account_nextIndex() -> (), // TODO: |
398 | | author_hasKey() -> (), // TODO: |
399 | | author_hasSessionKeys() -> (), // TODO: |
400 | | author_insertKey() -> (), // TODO: |
401 | | author_pendingExtrinsics() -> Vec<HexString>, // TODO: what does the returned value mean? |
402 | | author_removeExtrinsic() -> (), // TODO: |
403 | | author_rotateKeys() -> HexString, |
404 | | author_submitAndWatchExtrinsic(transaction: HexString) -> Cow<'a, str>, |
405 | | author_submitExtrinsic(transaction: HexString) -> HashHexString, |
406 | | author_unwatchExtrinsic(subscription: Cow<'a, str>) -> bool, |
407 | | babe_epochAuthorship() -> (), // TODO: |
408 | | chain_getBlock(hash: Option<HashHexString>) -> Block, |
409 | | chain_getBlockHash(height: Option<u64>) -> HashHexString [chain_getHead], |
410 | | chain_getFinalizedHead() -> HashHexString [chain_getFinalisedHead], |
411 | | chain_getHeader(hash: Option<HashHexString>) -> Header, // TODO: return type is guessed |
412 | | chain_subscribeAllHeads() -> Cow<'a, str>, |
413 | | chain_subscribeFinalizedHeads() -> Cow<'a, str> [chain_subscribeFinalisedHeads], |
414 | | chain_subscribeNewHeads() -> Cow<'a, str> [subscribe_newHead, chain_subscribeNewHead], |
415 | | chain_unsubscribeAllHeads(subscription: String) -> bool, |
416 | | chain_unsubscribeFinalizedHeads(subscription: String) -> bool [chain_unsubscribeFinalisedHeads], |
417 | | chain_unsubscribeNewHeads(subscription: String) -> bool [unsubscribe_newHead, chain_unsubscribeNewHead], |
418 | | childstate_getKeys() -> (), // TODO: |
419 | | childstate_getStorage() -> (), // TODO: |
420 | | childstate_getStorageHash() -> (), // TODO: |
421 | | childstate_getStorageSize() -> (), // TODO: |
422 | | grandpa_roundState() -> (), // TODO: |
423 | | offchain_localStorageGet() -> (), // TODO: |
424 | | offchain_localStorageSet() -> (), // TODO: |
425 | | payment_queryInfo(extrinsic: HexString, hash: Option<HashHexString>) -> RuntimeDispatchInfo, |
426 | | /// Returns a list of all JSON-RPC methods that are available. |
427 | | rpc_methods() -> RpcMethods, |
428 | | state_call(name: Cow<'a, str>, parameters: HexString, hash: Option<HashHexString>) -> HexString [state_callAt], |
429 | | state_getKeys(prefix: HexString, hash: Option<HashHexString>) -> Vec<HexString>, |
430 | | state_getKeysPaged(prefix: Option<HexString>, count: u32, start_key: Option<HexString>, hash: Option<HashHexString>) -> Vec<HexString> [state_getKeysPagedAt], |
431 | | state_getMetadata(hash: Option<HashHexString>) -> HexString, |
432 | | state_getPairs() -> (), // TODO: |
433 | | state_getReadProof() -> (), // TODO: |
434 | | state_getRuntimeVersion(at: Option<HashHexString>) -> RuntimeVersion<'a> [chain_getRuntimeVersion], |
435 | | state_getStorage(key: HexString, hash: Option<HashHexString>) -> HexString [state_getStorageAt], |
436 | | state_getStorageHash() -> () [state_getStorageHashAt], // TODO: |
437 | | state_getStorageSize() -> () [state_getStorageSizeAt], // TODO: |
438 | | state_queryStorage() -> (), // TODO: |
439 | | state_queryStorageAt(keys: Vec<HexString>, at: Option<HashHexString>) -> Vec<StorageChangeSet>, // TODO: |
440 | | state_subscribeRuntimeVersion() -> Cow<'a, str> [chain_subscribeRuntimeVersion], |
441 | | state_subscribeStorage(list: Vec<HexString>) -> Cow<'a, str>, |
442 | | state_unsubscribeRuntimeVersion(subscription: Cow<'a, str>) -> bool [chain_unsubscribeRuntimeVersion], |
443 | | state_unsubscribeStorage(subscription: Cow<'a, str>) -> bool, |
444 | | system_accountNextIndex(account: AccountId) -> u64, |
445 | | system_addReservedPeer() -> (), // TODO: |
446 | | system_chain() -> Cow<'a, str>, |
447 | | system_chainType() -> Cow<'a, str>, |
448 | | system_dryRun() -> () [system_dryRunAt], // TODO: |
449 | | system_health() -> SystemHealth, |
450 | | system_localListenAddresses() -> Vec<String>, |
451 | | /// Returns the Base58 encoding of the network identity of the node on the peer-to-peer network. |
452 | | system_localPeerId() -> Cow<'a, str>, |
453 | | /// Returns, as an opaque string, the name of the client serving these JSON-RPC requests. |
454 | | system_name() -> Cow<'a, str>, |
455 | | system_networkState() -> (), // TODO: |
456 | | system_nodeRoles() -> Cow<'a, [NodeRole]>, |
457 | | system_peers() -> Vec<SystemPeer>, |
458 | | system_properties() -> Box<serde_json::value::RawValue>, |
459 | | system_removeReservedPeer() -> (), // TODO: |
460 | | /// Returns, as an opaque string, the version of the client serving these JSON-RPC requests. |
461 | | system_version() -> Cow<'a, str>, |
462 | | |
463 | | // The functions below are experimental and are defined in the document https://github.com/paritytech/json-rpc-interface-spec/ |
464 | | chainHead_v1_body( |
465 | | #[rename = "followSubscription"] follow_subscription: Cow<'a, str>, |
466 | | hash: HashHexString |
467 | | ) -> ChainHeadBodyCallReturn<'a>, |
468 | | chainHead_v1_call( |
469 | | #[rename = "followSubscription"] follow_subscription: Cow<'a, str>, |
470 | | hash: HashHexString, |
471 | | function: Cow<'a, str>, |
472 | | #[rename = "callParameters"] call_parameters: HexString |
473 | | ) -> ChainHeadBodyCallReturn<'a>, |
474 | | chainHead_v1_follow( |
475 | | #[rename = "withRuntime"] with_runtime: bool |
476 | | ) -> Cow<'a, str>, |
477 | | chainHead_v1_header( |
478 | | #[rename = "followSubscription"] follow_subscription: Cow<'a, str>, |
479 | | hash: HashHexString |
480 | | ) -> Option<HexString>, |
481 | | chainHead_v1_stopOperation( |
482 | | #[rename = "followSubscription"] follow_subscription: Cow<'a, str>, |
483 | | #[rename = "operationId"] operation_id: Cow<'a, str> |
484 | | ) -> (), |
485 | | chainHead_v1_storage( |
486 | | #[rename = "followSubscription"] follow_subscription: Cow<'a, str>, |
487 | | hash: HashHexString, |
488 | | items: Vec<ChainHeadStorageRequestItem>, |
489 | | #[rename = "childTrie"] child_trie: Option<HexString> |
490 | | ) -> ChainHeadStorageReturn<'a>, |
491 | | chainHead_v1_continue( |
492 | | #[rename = "followSubscription"] follow_subscription: Cow<'a, str>, |
493 | | #[rename = "operationId"] operation_id: Cow<'a, str> |
494 | | ) -> (), |
495 | | chainHead_v1_unfollow( |
496 | | #[rename = "followSubscription"] follow_subscription: Cow<'a, str> |
497 | | ) -> (), |
498 | | chainHead_v1_unpin( |
499 | | #[rename = "followSubscription"] follow_subscription: Cow<'a, str>, |
500 | | #[rename = "hashOrHashes"] hash_or_hashes: HashHexStringSingleOrArray |
501 | | ) -> (), |
502 | | |
503 | | chainSpec_v1_chainName() -> Cow<'a, str>, |
504 | | chainSpec_v1_genesisHash() -> HashHexString, |
505 | | chainSpec_v1_properties() -> Box<serde_json::value::RawValue>, |
506 | | |
507 | | sudo_unstable_p2pDiscover(multiaddr: Cow<'a, str>) -> (), |
508 | | sudo_unstable_version() -> Cow<'a, str>, |
509 | | |
510 | | transaction_v1_broadcast(transaction: HexString) -> Cow<'a, str>, |
511 | | transaction_v1_stop(#[rename = "operationId"] operation_id: Cow<'a, str>) -> (), |
512 | | |
513 | | transactionWatch_v1_submitAndWatch(transaction: HexString) -> Cow<'a, str>, |
514 | | transactionWatch_v1_unwatch(subscription: Cow<'a, str>) -> (), |
515 | | |
516 | | // These functions are a custom addition in smoldot. As of the writing of this comment, there |
517 | | // is no plan to standardize them. See <https://github.com/paritytech/smoldot/issues/2245> and |
518 | | // <https://github.com/paritytech/smoldot/issues/2456>. |
519 | | sudo_network_unstable_watch() -> Cow<'a, str>, |
520 | | sudo_network_unstable_unwatch(subscription: Cow<'a, str>) -> (), |
521 | | chainHead_unstable_finalizedDatabase(#[rename = "maxSizeBytes"] max_size_bytes: Option<u64>) -> Cow<'a, str>, |
522 | | } |
523 | | |
524 | | define_methods! { |
525 | | ServerToClient, |
526 | | ServerToClientResponse, // TODO: unnecessary |
527 | | author_extrinsicUpdate(subscription: Cow<'a, str>, result: TransactionStatus) -> (), |
528 | | chain_finalizedHead(subscription: Cow<'a, str>, result: Header) -> (), |
529 | | chain_newHead(subscription: Cow<'a, str>, result: Header) -> (), |
530 | | chain_allHead(subscription: Cow<'a, str>, result: Header) -> (), |
531 | | state_runtimeVersion(subscription: Cow<'a, str>, result: Option<RuntimeVersion<'a>>) -> (), // TODO: the Option is a custom addition |
532 | | state_storage(subscription: Cow<'a, str>, result: StorageChangeSet) -> (), |
533 | | |
534 | | // The functions below are experimental and are defined in the document https://github.com/paritytech/json-rpc-interface-spec/ |
535 | | chainHead_v1_followEvent(subscription: Cow<'a, str>, result: FollowEvent<'a>) -> (), |
536 | | transactionWatch_v1_watchEvent(subscription: Cow<'a, str>, result: TransactionWatchEvent<'a>) -> (), |
537 | | |
538 | | // This function is a custom addition in smoldot. As of the writing of this comment, there is |
539 | | // no plan to standardize it. See https://github.com/paritytech/smoldot/issues/2245. |
540 | | sudo_networkState_event(subscription: Cow<'a, str>, result: NetworkEvent) -> (), |
541 | | } |
542 | | |
543 | | #[derive(Clone, PartialEq, Eq, Hash)] |
544 | | pub struct HexString(pub Vec<u8>); |
545 | | |
546 | | impl AsRef<[u8]> for HexString { |
547 | 0 | fn as_ref(&self) -> &[u8] { |
548 | 0 | &self.0 |
549 | 0 | } Unexecuted instantiation: _RNvXs_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB4_9HexStringINtNtCs1p5UDGgVI4d_4core7convert5AsRefShE6as_ref Unexecuted instantiation: _RNvXs_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB4_9HexStringINtNtCs1p5UDGgVI4d_4core7convert5AsRefShE6as_ref |
550 | | } |
551 | | |
552 | | // TODO: not great for type in public API |
553 | | impl<'a> serde::Deserialize<'a> for HexString { |
554 | 80 | fn deserialize<D>(deserializer: D) -> Result<HexString, D::Error> |
555 | 80 | where |
556 | 80 | D: serde::Deserializer<'a>, |
557 | | { |
558 | 80 | let string = String::deserialize(deserializer)?0 ; |
559 | | |
560 | 80 | if string.is_empty() { |
561 | 0 | return Ok(HexString(Vec::new())); |
562 | 80 | } |
563 | | |
564 | 80 | if !string.starts_with("0x") { |
565 | 0 | return Err(serde::de::Error::custom( |
566 | 0 | "hexadecimal string doesn't start with 0x", |
567 | 0 | )); |
568 | 80 | } |
569 | | |
570 | 80 | let bytes = hex::decode(&string[2..]).map_err(serde::de::Error::custom)?0 ; |
571 | 80 | Ok(HexString(bytes)) |
572 | 80 | } Unexecuted instantiation: _RINvXs0_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_9HexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeINtNvNtNtB16_9___private2de13missing_field24MissingFieldDeserializerNtNtCs6cpVfp2Hoex_10serde_json5error5ErrorEEBa_ Unexecuted instantiation: _RINvXs0_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_9HexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeQINtNtCs6cpVfp2Hoex_10serde_json2de12DeserializerNtNtB1Z_4read7StrReadEEBa_ Unexecuted instantiation: _RINvXs0_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_9HexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeINtNtNtNtB16_9___private2de7content19ContentDeserializerNtNtCs6cpVfp2Hoex_10serde_json5error5ErrorEEBa_ Unexecuted instantiation: _RINvXs0_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_9HexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeINtNvNtNtB16_9___private2de13missing_field24MissingFieldDeserializerNtNtCs6cpVfp2Hoex_10serde_json5error5ErrorEEBa_ _RINvXs0_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_9HexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeQINtNtCs6cpVfp2Hoex_10serde_json2de12DeserializerNtNtB1Z_4read7StrReadEEBa_ Line | Count | Source | 554 | 56 | fn deserialize<D>(deserializer: D) -> Result<HexString, D::Error> | 555 | 56 | where | 556 | 56 | D: serde::Deserializer<'a>, | 557 | | { | 558 | 56 | let string = String::deserialize(deserializer)?0 ; | 559 | | | 560 | 56 | if string.is_empty() { | 561 | 0 | return Ok(HexString(Vec::new())); | 562 | 56 | } | 563 | | | 564 | 56 | if !string.starts_with("0x") { | 565 | 0 | return Err(serde::de::Error::custom( | 566 | 0 | "hexadecimal string doesn't start with 0x", | 567 | 0 | )); | 568 | 56 | } | 569 | | | 570 | 56 | let bytes = hex::decode(&string[2..]).map_err(serde::de::Error::custom)?0 ; | 571 | 56 | Ok(HexString(bytes)) | 572 | 56 | } |
_RINvXs0_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_9HexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeQINtNtCs6cpVfp2Hoex_10serde_json2de12DeserializerNtNtB1Z_4read7StrReadEECs4VrkfB1pvQ3_25json_rpc_general_requests Line | Count | Source | 554 | 24 | fn deserialize<D>(deserializer: D) -> Result<HexString, D::Error> | 555 | 24 | where | 556 | 24 | D: serde::Deserializer<'a>, | 557 | | { | 558 | 24 | let string = String::deserialize(deserializer)?0 ; | 559 | | | 560 | 24 | if string.is_empty() { | 561 | 0 | return Ok(HexString(Vec::new())); | 562 | 24 | } | 563 | | | 564 | 24 | if !string.starts_with("0x") { | 565 | 0 | return Err(serde::de::Error::custom( | 566 | 0 | "hexadecimal string doesn't start with 0x", | 567 | 0 | )); | 568 | 24 | } | 569 | | | 570 | 24 | let bytes = hex::decode(&string[2..]).map_err(serde::de::Error::custom)?0 ; | 571 | 24 | Ok(HexString(bytes)) | 572 | 24 | } |
|
573 | | } |
574 | | |
575 | | impl fmt::Debug for HexString { |
576 | 0 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |
577 | 0 | write!(f, "0x{}", hex::encode(&self.0)) |
578 | 0 | } Unexecuted instantiation: _RNvXs1_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_9HexStringNtNtCs1p5UDGgVI4d_4core3fmt5Debug3fmt Unexecuted instantiation: _RNvXs1_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_9HexStringNtNtCs1p5UDGgVI4d_4core3fmt5Debug3fmt |
579 | | } |
580 | | |
581 | | #[derive(Debug, Clone)] |
582 | | pub struct HashHexString(pub [u8; 32]); |
583 | | |
584 | | // TODO: not great for type in public API |
585 | | impl<'a> serde::Deserialize<'a> for HashHexString { |
586 | 26 | fn deserialize<D>(deserializer: D) -> Result<HashHexString, D::Error> |
587 | 26 | where |
588 | 26 | D: serde::Deserializer<'a>, |
589 | | { |
590 | 26 | let string = String::deserialize(deserializer)?0 ; |
591 | | |
592 | 26 | if !string.starts_with("0x") { |
593 | 0 | return Err(serde::de::Error::custom("hash doesn't start with 0x")); |
594 | 26 | } |
595 | | |
596 | 26 | let bytes = hex::decode(&string[2..]).map_err(serde::de::Error::custom)?0 ; |
597 | 26 | if bytes.len() != 32 { |
598 | 0 | return Err(serde::de::Error::invalid_length( |
599 | 0 | bytes.len(), |
600 | 0 | &"a 32 bytes hash", |
601 | 0 | )); |
602 | 26 | } |
603 | | |
604 | 26 | let mut out = [0; 32]; |
605 | 26 | out.copy_from_slice(&bytes); |
606 | 26 | Ok(HashHexString(out)) |
607 | 26 | } Unexecuted instantiation: _RINvXs2_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeINtNtNtNtB1b_9___private2de7content22ContentRefDeserializerNtNtCs6cpVfp2Hoex_10serde_json5error5ErrorEEBa_ Unexecuted instantiation: _RINvXs2_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeINtNvNtNtB1b_9___private2de13missing_field24MissingFieldDeserializerNtNtCs6cpVfp2Hoex_10serde_json5error5ErrorEEBa_ Unexecuted instantiation: _RINvXs2_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeQINtNtCs6cpVfp2Hoex_10serde_json2de12DeserializerNtNtB24_4read7StrReadEEBa_ Unexecuted instantiation: _RINvXs2_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeINtNtNtNtB1b_9___private2de7content19ContentDeserializerNtNtCs6cpVfp2Hoex_10serde_json5error5ErrorEEBa_ Unexecuted instantiation: _RINvXs2_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeINtNtNtNtB1b_9___private2de7content22ContentRefDeserializerNtNtCs6cpVfp2Hoex_10serde_json5error5ErrorEEBa_ Unexecuted instantiation: _RINvXs2_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeINtNvNtNtB1b_9___private2de13missing_field24MissingFieldDeserializerNtNtCs6cpVfp2Hoex_10serde_json5error5ErrorEEBa_ _RINvXs2_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeQINtNtCs6cpVfp2Hoex_10serde_json2de12DeserializerNtNtB24_4read7StrReadEEBa_ Line | Count | Source | 586 | 20 | fn deserialize<D>(deserializer: D) -> Result<HashHexString, D::Error> | 587 | 20 | where | 588 | 20 | D: serde::Deserializer<'a>, | 589 | | { | 590 | 20 | let string = String::deserialize(deserializer)?0 ; | 591 | | | 592 | 20 | if !string.starts_with("0x") { | 593 | 0 | return Err(serde::de::Error::custom("hash doesn't start with 0x")); | 594 | 20 | } | 595 | | | 596 | 20 | let bytes = hex::decode(&string[2..]).map_err(serde::de::Error::custom)?0 ; | 597 | 20 | if bytes.len() != 32 { | 598 | 0 | return Err(serde::de::Error::invalid_length( | 599 | 0 | bytes.len(), | 600 | 0 | &"a 32 bytes hash", | 601 | 0 | )); | 602 | 20 | } | 603 | | | 604 | 20 | let mut out = [0; 32]; | 605 | 20 | out.copy_from_slice(&bytes); | 606 | 20 | Ok(HashHexString(out)) | 607 | 20 | } |
Unexecuted instantiation: _RINvXs2_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeINtNvNtNtB1b_9___private2de13missing_field24MissingFieldDeserializerNtNtCs6cpVfp2Hoex_10serde_json5error5ErrorEECs4VrkfB1pvQ3_25json_rpc_general_requests _RINvXs2_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeQINtNtCs6cpVfp2Hoex_10serde_json2de12DeserializerNtNtB24_4read7StrReadEECs4VrkfB1pvQ3_25json_rpc_general_requests Line | Count | Source | 586 | 6 | fn deserialize<D>(deserializer: D) -> Result<HashHexString, D::Error> | 587 | 6 | where | 588 | 6 | D: serde::Deserializer<'a>, | 589 | | { | 590 | 6 | let string = String::deserialize(deserializer)?0 ; | 591 | | | 592 | 6 | if !string.starts_with("0x") { | 593 | 0 | return Err(serde::de::Error::custom("hash doesn't start with 0x")); | 594 | 6 | } | 595 | | | 596 | 6 | let bytes = hex::decode(&string[2..]).map_err(serde::de::Error::custom)?0 ; | 597 | 6 | if bytes.len() != 32 { | 598 | 0 | return Err(serde::de::Error::invalid_length( | 599 | 0 | bytes.len(), | 600 | 0 | &"a 32 bytes hash", | 601 | 0 | )); | 602 | 6 | } | 603 | | | 604 | 6 | let mut out = [0; 32]; | 605 | 6 | out.copy_from_slice(&bytes); | 606 | 6 | Ok(HashHexString(out)) | 607 | 6 | } |
|
608 | | } |
609 | | |
610 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
611 | | #[serde(untagged)] |
612 | | pub enum HashHexStringSingleOrArray { |
613 | | Single(HashHexString), |
614 | | Array(Vec<HashHexString>), |
615 | | } |
616 | | |
617 | | /// Removes the length prefix at the beginning of `metadata`. Used for the `Metadata_metadata` |
618 | | /// JSON-RPC request. Returns an error if there is no valid length prefix. |
619 | 1 | pub fn remove_metadata_length_prefix( |
620 | 1 | metadata: &[u8], |
621 | 1 | ) -> Result<&[u8], RemoveMetadataLengthPrefixError> { |
622 | 1 | let (after_prefix, length) = crate::util::nom_scale_compact_usize(metadata).map_err( |
623 | 0 | |_: nom::Err<nom::error::Error<&[u8]>>| { |
624 | 0 | RemoveMetadataLengthPrefixError::InvalidLengthPrefix |
625 | 0 | }, Unexecuted instantiation: _RNCNvNtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methods29remove_metadata_length_prefix0B7_ Unexecuted instantiation: _RNCNvNtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methods29remove_metadata_length_prefix0B7_ |
626 | 0 | )?; |
627 | | |
628 | | // Verify that the length prefix indeed matches the metadata's length. |
629 | 1 | if length != after_prefix.len() { |
630 | 0 | return Err(RemoveMetadataLengthPrefixError::LengthMismatch); |
631 | 1 | } |
632 | | |
633 | 1 | Ok(after_prefix) |
634 | 1 | } Unexecuted instantiation: _RNvNtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methods29remove_metadata_length_prefix _RNvNtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methods29remove_metadata_length_prefix Line | Count | Source | 619 | 1 | pub fn remove_metadata_length_prefix( | 620 | 1 | metadata: &[u8], | 621 | 1 | ) -> Result<&[u8], RemoveMetadataLengthPrefixError> { | 622 | 1 | let (after_prefix, length) = crate::util::nom_scale_compact_usize(metadata).map_err( | 623 | | |_: nom::Err<nom::error::Error<&[u8]>>| { | 624 | | RemoveMetadataLengthPrefixError::InvalidLengthPrefix | 625 | | }, | 626 | 0 | )?; | 627 | | | 628 | | // Verify that the length prefix indeed matches the metadata's length. | 629 | 1 | if length != after_prefix.len() { | 630 | 0 | return Err(RemoveMetadataLengthPrefixError::LengthMismatch); | 631 | 1 | } | 632 | | | 633 | 1 | Ok(after_prefix) | 634 | 1 | } |
|
635 | | |
636 | | /// Error potentially returned by [`remove_metadata_length_prefix`]. |
637 | | #[derive(Debug, Clone, derive_more::Display, derive_more::Error)] |
638 | | pub enum RemoveMetadataLengthPrefixError { |
639 | | /// The length prefix at the beginning of the metadata is invalid. |
640 | | InvalidLengthPrefix, |
641 | | /// Length indicated by the length prefix doesn't match the size of the metadata. |
642 | | LengthMismatch, |
643 | | } |
644 | | |
645 | | /// Contains the public key of an account. |
646 | | /// |
647 | | /// The deserialization involves decoding an SS58 address into this public key. |
648 | | #[derive(Debug, Clone)] |
649 | | pub struct AccountId(pub Vec<u8>); |
650 | | |
651 | | impl serde::Serialize for AccountId { |
652 | 0 | fn serialize<S>(&self, _: S) -> Result<S::Ok, S::Error> |
653 | 0 | where |
654 | 0 | S: serde::Serializer, |
655 | | { |
656 | 0 | todo!() // TODO: /!\ Unexecuted instantiation: _RINvXs3_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_9AccountIdNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializepEBa_ Unexecuted instantiation: _RINvXs3_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_9AccountIdNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeINtNtCs6cpVfp2Hoex_10serde_json3ser18RawValueStrEmitterQINtNtCsaFPxhswmqCN_5alloc3vec3VechENtB1R_16CompactFormatterEEBa_ Unexecuted instantiation: _RINvXs3_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_9AccountIdNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeQINtNtCs6cpVfp2Hoex_10serde_json3ser10SerializerQINtNtCsaFPxhswmqCN_5alloc3vec3VechEEEBa_ |
657 | | } |
658 | | } |
659 | | |
660 | | // TODO: not great for type in public API |
661 | | impl<'a> serde::Deserialize<'a> for AccountId { |
662 | 0 | fn deserialize<D>(deserializer: D) -> Result<AccountId, D::Error> |
663 | 0 | where |
664 | 0 | D: serde::Deserializer<'a>, |
665 | | { |
666 | 0 | let string = <&str>::deserialize(deserializer)?; |
667 | 0 | let decoded = match ss58::decode(string) { |
668 | 0 | Ok(d) => d, |
669 | 0 | Err(err) => return Err(serde::de::Error::custom(err.to_string())), |
670 | | }; |
671 | | |
672 | | // TODO: check the prefix against the one of the current chain? |
673 | | |
674 | 0 | Ok(AccountId(decoded.public_key.as_ref().to_vec())) |
675 | 0 | } Unexecuted instantiation: _RINvXs4_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_9AccountIdNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeINtNvNtNtB16_9___private2de13missing_field24MissingFieldDeserializerNtNtCs6cpVfp2Hoex_10serde_json5error5ErrorEEBa_ Unexecuted instantiation: _RINvXs4_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_9AccountIdNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeQINtNtCs6cpVfp2Hoex_10serde_json2de12DeserializerNtNtB1Z_4read7StrReadEEBa_ Unexecuted instantiation: _RINvXs4_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_9AccountIdNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeINtNvNtNtB16_9___private2de13missing_field24MissingFieldDeserializerNtNtCs6cpVfp2Hoex_10serde_json5error5ErrorEEBa_ Unexecuted instantiation: _RINvXs4_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_9AccountIdNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeQINtNtCs6cpVfp2Hoex_10serde_json2de12DeserializerNtNtB1Z_4read7StrReadEEBa_ |
676 | | } |
677 | | |
678 | | #[derive(Debug, Clone)] |
679 | | pub struct Block { |
680 | | pub extrinsics: Vec<HexString>, |
681 | | pub header: Header, |
682 | | /// List of justifications. Each justification is made of a consensus engine id and of the |
683 | | /// actual SCALE-encoded justification. |
684 | | pub justifications: Option<Vec<([u8; 4], Vec<u8>)>>, |
685 | | } |
686 | | |
687 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
688 | | #[serde(tag = "event")] |
689 | | pub enum FollowEvent<'a> { |
690 | | #[serde(rename = "initialized")] |
691 | | Initialized { |
692 | | #[serde(rename = "finalizedBlockHashes")] |
693 | | finalized_block_hashes: Vec<HashHexString>, |
694 | | #[serde( |
695 | | rename = "finalizedBlockRuntime", |
696 | | skip_serializing_if = "Option::is_none" |
697 | | )] |
698 | | finalized_block_runtime: Option<MaybeRuntimeSpec<'a>>, |
699 | | }, |
700 | | #[serde(rename = "newBlock")] |
701 | | NewBlock { |
702 | | #[serde(rename = "blockHash")] |
703 | | block_hash: HashHexString, |
704 | | #[serde(rename = "parentBlockHash")] |
705 | | parent_block_hash: HashHexString, |
706 | | #[serde(rename = "newRuntime")] |
707 | | // TODO: must not be present if with_runtime: false |
708 | | new_runtime: Option<MaybeRuntimeSpec<'a>>, |
709 | | }, |
710 | | #[serde(rename = "bestBlockChanged")] |
711 | | BestBlockChanged { |
712 | | #[serde(rename = "bestBlockHash")] |
713 | | best_block_hash: HashHexString, |
714 | | }, |
715 | | #[serde(rename = "finalized")] |
716 | | Finalized { |
717 | | #[serde(rename = "finalizedBlockHashes")] |
718 | | finalized_blocks_hashes: Vec<HashHexString>, |
719 | | #[serde(rename = "prunedBlockHashes")] |
720 | | pruned_blocks_hashes: Vec<HashHexString>, |
721 | | }, |
722 | | #[serde(rename = "operationBodyDone")] |
723 | | OperationBodyDone { |
724 | | #[serde(rename = "operationId")] |
725 | | operation_id: Cow<'a, str>, |
726 | | value: Vec<HexString>, |
727 | | }, |
728 | | #[serde(rename = "operationCallDone")] |
729 | | OperationCallDone { |
730 | | #[serde(rename = "operationId")] |
731 | | operation_id: Cow<'a, str>, |
732 | | output: HexString, |
733 | | }, |
734 | | #[serde(rename = "operationInaccessible")] |
735 | | OperationInaccessible { |
736 | | #[serde(rename = "operationId")] |
737 | | operation_id: Cow<'a, str>, |
738 | | }, |
739 | | #[serde(rename = "operationStorageItems")] |
740 | | OperationStorageItems { |
741 | | #[serde(rename = "operationId")] |
742 | | operation_id: Cow<'a, str>, |
743 | | items: Vec<ChainHeadStorageResponseItem>, |
744 | | }, |
745 | | #[serde(rename = "operationStorageDone")] |
746 | | OperationStorageDone { |
747 | | #[serde(rename = "operationId")] |
748 | | operation_id: Cow<'a, str>, |
749 | | }, |
750 | | #[serde(rename = "operationWaitingForContinue")] |
751 | | OperationWaitingForContinue, |
752 | | #[serde(rename = "operationError")] |
753 | | OperationError { |
754 | | #[serde(rename = "operationId")] |
755 | | operation_id: Cow<'a, str>, |
756 | | error: Cow<'a, str>, |
757 | | }, |
758 | | #[serde(rename = "stop")] |
759 | | Stop {}, |
760 | | } |
761 | | |
762 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
763 | | #[serde(tag = "result")] |
764 | | pub enum ChainHeadBodyCallReturn<'a> { |
765 | | #[serde(rename = "started")] |
766 | | Started { |
767 | | #[serde(rename = "operationId")] |
768 | | operation_id: Cow<'a, str>, |
769 | | }, |
770 | | #[serde(rename = "limitReached")] |
771 | | LimitReached {}, |
772 | | } |
773 | | |
774 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
775 | | #[serde(tag = "result")] |
776 | | pub enum ChainHeadStorageReturn<'a> { |
777 | | #[serde(rename = "started")] |
778 | | Started { |
779 | | #[serde(rename = "operationId")] |
780 | | operation_id: Cow<'a, str>, |
781 | | #[serde(rename = "discardedItems")] |
782 | | discarded_items: usize, |
783 | | }, |
784 | | #[serde(rename = "limitReached")] |
785 | | LimitReached {}, |
786 | | } |
787 | | |
788 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
789 | | pub struct ChainHeadStorageRequestItem { |
790 | | pub key: HexString, |
791 | | #[serde(rename = "type")] |
792 | | pub ty: ChainHeadStorageType, |
793 | | } |
794 | | |
795 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
796 | | pub struct ChainHeadStorageResponseItem { |
797 | | pub key: HexString, |
798 | | #[serde(skip_serializing_if = "Option::is_none")] |
799 | | pub value: Option<HexString>, |
800 | | #[serde(skip_serializing_if = "Option::is_none")] |
801 | | pub hash: Option<HexString>, |
802 | | #[serde( |
803 | | rename = "closestDescendantMerkleValue", |
804 | | skip_serializing_if = "Option::is_none" |
805 | | )] |
806 | | pub closest_descendant_merkle_value: Option<HexString>, |
807 | | } |
808 | | |
809 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
810 | | pub enum ChainHeadStorageType { |
811 | | #[serde(rename = "value")] |
812 | | Value, |
813 | | #[serde(rename = "hash")] |
814 | | Hash, |
815 | | #[serde(rename = "closestDescendantMerkleValue")] |
816 | | ClosestDescendantMerkleValue, |
817 | | #[serde(rename = "descendantsValues")] |
818 | | DescendantsValues, |
819 | | #[serde(rename = "descendantsHashes")] |
820 | | DescendantsHashes, |
821 | | } |
822 | | |
823 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
824 | | #[serde(tag = "event")] |
825 | | pub enum TransactionWatchEvent<'a> { |
826 | | #[serde(rename = "validated")] |
827 | | Validated {}, |
828 | | #[serde(rename = "broadcasted")] |
829 | | Broadcasted { |
830 | | #[serde(rename = "numPeers")] |
831 | | num_peers: u32, |
832 | | }, |
833 | | #[serde(rename = "bestChainBlockIncluded")] |
834 | | BestChainBlockIncluded { |
835 | | #[serde(rename = "block")] |
836 | | block: Option<TransactionWatchEventBlock>, |
837 | | }, |
838 | | #[serde(rename = "finalized")] |
839 | | Finalized { |
840 | | #[serde(rename = "block")] |
841 | | block: TransactionWatchEventBlock, |
842 | | }, |
843 | | #[serde(rename = "error")] |
844 | | Error { error: Cow<'a, str> }, |
845 | | #[serde(rename = "invalid")] |
846 | | Invalid { error: Cow<'a, str> }, |
847 | | #[serde(rename = "dropped")] |
848 | | Dropped { |
849 | | broadcasted: bool, |
850 | | error: Cow<'a, str>, |
851 | | }, |
852 | | } |
853 | | |
854 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
855 | | pub struct TransactionWatchEventBlock { |
856 | | pub hash: HashHexString, |
857 | | pub index: u32, |
858 | | } |
859 | | |
860 | | /// Unstable event. |
861 | | /// See <https://github.com/paritytech/smoldot/issues/2245>. |
862 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
863 | | #[serde(tag = "event")] |
864 | | pub enum NetworkEvent { |
865 | | #[serde(rename = "connectionState")] |
866 | | ConnectionState { |
867 | | #[serde(rename = "connectionId")] |
868 | | connection_id: u32, |
869 | | #[serde(rename = "targetPeerId", skip_serializing_if = "Option::is_none")] |
870 | | target_peer_id: Option<String>, |
871 | | #[serde(rename = "targetMultiaddr")] |
872 | | target_multiaddr: String, |
873 | | status: NetworkEventStatus, |
874 | | direction: NetworkEventDirection, |
875 | | when: u64, |
876 | | }, |
877 | | #[serde(rename = "substreamState")] |
878 | | SubstreamState { |
879 | | #[serde(rename = "connectionId")] |
880 | | connection_id: u32, |
881 | | #[serde(rename = "substreamId")] |
882 | | substream_id: u32, |
883 | | status: NetworkEventStatus, |
884 | | #[serde(rename = "protocolName")] |
885 | | protocol_name: String, |
886 | | direction: NetworkEventDirection, |
887 | | when: u64, |
888 | | }, |
889 | | } |
890 | | |
891 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
892 | | pub enum NetworkEventStatus { |
893 | | #[serde(rename = "connecting")] |
894 | | Connecting, |
895 | | #[serde(rename = "open")] |
896 | | Open, |
897 | | #[serde(rename = "closed")] |
898 | | Close, |
899 | | } |
900 | | |
901 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
902 | | pub enum NetworkEventDirection { |
903 | | #[serde(rename = "in")] |
904 | | In, |
905 | | #[serde(rename = "out")] |
906 | | Out, |
907 | | } |
908 | | |
909 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
910 | | pub struct Header { |
911 | | #[serde(rename = "parentHash")] |
912 | | pub parent_hash: HashHexString, |
913 | | #[serde(rename = "extrinsicsRoot")] |
914 | | pub extrinsics_root: HashHexString, |
915 | | #[serde(rename = "stateRoot")] |
916 | | pub state_root: HashHexString, |
917 | | #[serde( |
918 | | serialize_with = "hex_num_serialize", |
919 | | deserialize_with = "hex_num_deserialize" |
920 | | )] |
921 | | pub number: u64, |
922 | | pub digest: HeaderDigest, |
923 | | } |
924 | | |
925 | | impl Header { |
926 | | /// Creates a [`Header`] from a SCALE-encoded header. |
927 | | /// |
928 | | /// Returns an error if the encoding is incorrect. |
929 | 2 | pub fn from_scale_encoded_header( |
930 | 2 | header: &[u8], |
931 | 2 | block_number_bytes: usize, |
932 | 2 | ) -> Result<Header, header::Error> { |
933 | 2 | let header = header::decode(header, block_number_bytes)?0 ; |
934 | | Ok(Header { |
935 | 2 | parent_hash: HashHexString(*header.parent_hash), |
936 | 2 | extrinsics_root: HashHexString(*header.extrinsics_root), |
937 | 2 | state_root: HashHexString(*header.state_root), |
938 | 2 | number: header.number, |
939 | | digest: HeaderDigest { |
940 | 2 | logs: header |
941 | 2 | .digest |
942 | 2 | .logs() |
943 | 2 | .map(|log| {0 |
944 | 0 | HexString(log.scale_encoding(block_number_bytes).fold( |
945 | 0 | Vec::new(), |
946 | 0 | |mut a, b| { |
947 | 0 | a.extend_from_slice(b.as_ref()); |
948 | 0 | a |
949 | 0 | }, Unexecuted instantiation: _RNCNCNvMs5_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB9_6Header25from_scale_encoded_header00Bd_ Unexecuted instantiation: _RNCNCNvMs5_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB9_6Header25from_scale_encoded_header00Bd_ |
950 | | )) |
951 | 0 | }) Unexecuted instantiation: _RNCNvMs5_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB7_6Header25from_scale_encoded_header0Bb_ Unexecuted instantiation: _RNCNvMs5_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB7_6Header25from_scale_encoded_header0Bb_ |
952 | 2 | .collect(), |
953 | | }, |
954 | | }) |
955 | 2 | } Unexecuted instantiation: _RNvMs5_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_6Header25from_scale_encoded_header _RNvMs5_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_6Header25from_scale_encoded_header Line | Count | Source | 929 | 2 | pub fn from_scale_encoded_header( | 930 | 2 | header: &[u8], | 931 | 2 | block_number_bytes: usize, | 932 | 2 | ) -> Result<Header, header::Error> { | 933 | 2 | let header = header::decode(header, block_number_bytes)?0 ; | 934 | | Ok(Header { | 935 | 2 | parent_hash: HashHexString(*header.parent_hash), | 936 | 2 | extrinsics_root: HashHexString(*header.extrinsics_root), | 937 | 2 | state_root: HashHexString(*header.state_root), | 938 | 2 | number: header.number, | 939 | | digest: HeaderDigest { | 940 | 2 | logs: header | 941 | 2 | .digest | 942 | 2 | .logs() | 943 | 2 | .map(|log| { | 944 | | HexString(log.scale_encoding(block_number_bytes).fold( | 945 | | Vec::new(), | 946 | | |mut a, b| { | 947 | | a.extend_from_slice(b.as_ref()); | 948 | | a | 949 | | }, | 950 | | )) | 951 | | }) | 952 | 2 | .collect(), | 953 | | }, | 954 | | }) | 955 | 2 | } |
|
956 | | } |
957 | | |
958 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
959 | | pub struct HeaderDigest { |
960 | | pub logs: Vec<HexString>, |
961 | | } |
962 | | |
963 | | #[derive(Debug, Clone)] |
964 | | pub struct RpcMethods { |
965 | | pub methods: Vec<String>, |
966 | | } |
967 | | |
968 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
969 | | #[serde(tag = "type")] |
970 | | pub enum MaybeRuntimeSpec<'a> { |
971 | | #[serde(rename = "valid")] |
972 | | Valid { spec: RuntimeSpec<'a> }, |
973 | | #[serde(rename = "invalid")] |
974 | | Invalid { error: String }, // TODO: String because it's more convenient; improve |
975 | | } |
976 | | |
977 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
978 | | pub enum NodeRole { |
979 | | // Note that "Light" isn't in the Substrate source code and is a custom addition. |
980 | | #[serde(rename = "Light")] |
981 | | Light, |
982 | | #[serde(rename = "Full")] |
983 | | Full, |
984 | | #[serde(rename = "Authority")] |
985 | | Authority, |
986 | | } |
987 | | |
988 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
989 | | pub struct RuntimeSpec<'a> { |
990 | | #[serde(rename = "specName")] |
991 | | pub spec_name: Cow<'a, str>, |
992 | | #[serde(rename = "implName")] |
993 | | pub impl_name: Cow<'a, str>, |
994 | | #[serde(rename = "specVersion")] |
995 | | pub spec_version: u32, |
996 | | #[serde(rename = "implVersion")] |
997 | | pub impl_version: u32, |
998 | | #[serde(rename = "transactionVersion", skip_serializing_if = "Option::is_none")] |
999 | | pub transaction_version: Option<u32>, |
1000 | | pub apis: HashMap<HexString, u32, fnv::FnvBuildHasher>, |
1001 | | } |
1002 | | |
1003 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
1004 | | pub struct RuntimeVersion<'a> { |
1005 | | #[serde(rename = "specName")] |
1006 | | pub spec_name: Cow<'a, str>, |
1007 | | #[serde(rename = "implName")] |
1008 | | pub impl_name: Cow<'a, str>, |
1009 | | #[serde(rename = "authoringVersion")] |
1010 | | pub authoring_version: u64, |
1011 | | #[serde(rename = "specVersion")] |
1012 | | pub spec_version: u64, |
1013 | | #[serde(rename = "implVersion")] |
1014 | | pub impl_version: u64, |
1015 | | #[serde(rename = "transactionVersion", skip_serializing_if = "Option::is_none")] |
1016 | | pub transaction_version: Option<u64>, |
1017 | | #[serde(rename = "stateVersion", skip_serializing_if = "Option::is_none")] |
1018 | | pub state_version: Option<u64>, |
1019 | | // TODO: optimize? |
1020 | | pub apis: Vec<(HexString, u32)>, |
1021 | | } |
1022 | | |
1023 | | #[derive(Debug, Copy, Clone)] |
1024 | | pub struct RuntimeDispatchInfo { |
1025 | | pub weight: u64, |
1026 | | pub class: DispatchClass, |
1027 | | pub partial_fee: u128, |
1028 | | } |
1029 | | |
1030 | | #[derive(Debug, Copy, Clone)] |
1031 | | pub enum DispatchClass { |
1032 | | Normal, |
1033 | | Operational, |
1034 | | Mandatory, |
1035 | | } |
1036 | | |
1037 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
1038 | | pub struct StorageChangeSet { |
1039 | | pub block: HashHexString, |
1040 | | pub changes: Vec<(HexString, Option<HexString>)>, |
1041 | | } |
1042 | | |
1043 | | #[derive(Debug, Clone)] |
1044 | | pub struct SystemHealth { |
1045 | | pub is_syncing: bool, |
1046 | | pub peers: u64, |
1047 | | pub should_have_peers: bool, |
1048 | | } |
1049 | | |
1050 | | #[derive(Debug, Clone, serde::Serialize)] |
1051 | | pub struct SystemPeer { |
1052 | | #[serde(rename = "peerId")] |
1053 | | pub peer_id: String, // Example: "12D3KooWHEQXbvCzLYvc87obHV6HY4rruHz8BJ9Lw1Gg2csVfR6Z" |
1054 | | pub roles: SystemPeerRole, |
1055 | | #[serde(rename = "bestHash")] |
1056 | | pub best_hash: HashHexString, |
1057 | | #[serde(rename = "bestNumber")] |
1058 | | pub best_number: u64, |
1059 | | } |
1060 | | |
1061 | | #[derive(Debug, Clone, serde::Serialize)] |
1062 | | pub enum SystemPeerRole { |
1063 | | #[serde(rename = "AUTHORITY")] |
1064 | | Authority, |
1065 | | #[serde(rename = "FULL")] |
1066 | | Full, |
1067 | | #[serde(rename = "LIGHT")] |
1068 | | Light, |
1069 | | } |
1070 | | |
1071 | | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
1072 | | pub enum TransactionStatus { |
1073 | | #[serde(rename = "future")] |
1074 | | Future, |
1075 | | #[serde(rename = "ready")] |
1076 | | Ready, |
1077 | | #[serde(rename = "broadcast")] |
1078 | | Broadcast(Vec<String>), // Base58 PeerIds // TODO: stronger typing |
1079 | | #[serde(rename = "inBlock")] |
1080 | | InBlock(HashHexString), |
1081 | | #[serde(rename = "retracted")] |
1082 | | Retracted(HashHexString), |
1083 | | #[serde(rename = "finalityTimeout")] |
1084 | | FinalityTimeout(HashHexString), |
1085 | | #[serde(rename = "finalized")] |
1086 | | Finalized(HashHexString), |
1087 | | #[serde(rename = "usurped")] |
1088 | | Usurped(HashHexString), |
1089 | | #[serde(rename = "dropped")] |
1090 | | Dropped, |
1091 | | #[serde(rename = "invalid")] |
1092 | | Invalid, |
1093 | | } |
1094 | | |
1095 | | impl serde::Serialize for HashHexString { |
1096 | 8 | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> |
1097 | 8 | where |
1098 | 8 | S: serde::Serializer, |
1099 | | { |
1100 | 8 | format!("0x{}", hex::encode(&self.0[..])).serialize(serializer) |
1101 | 8 | } Unexecuted instantiation: _RINvXs6_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializepEBa_ Unexecuted instantiation: _RINvXs6_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeINtNtCs6cpVfp2Hoex_10serde_json3ser18RawValueStrEmitterQINtNtCsaFPxhswmqCN_5alloc3vec3VechENtB1W_16CompactFormatterEEBa_ _RINvXs6_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_13HashHexStringNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeQINtNtCs6cpVfp2Hoex_10serde_json3ser10SerializerQINtNtCsaFPxhswmqCN_5alloc3vec3VechEEEBa_ Line | Count | Source | 1096 | 8 | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> | 1097 | 8 | where | 1098 | 8 | S: serde::Serializer, | 1099 | | { | 1100 | 8 | format!("0x{}", hex::encode(&self.0[..])).serialize(serializer) | 1101 | 8 | } |
|
1102 | | } |
1103 | | |
1104 | | impl fmt::Display for HexString { |
1105 | 60 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |
1106 | 60 | write!(f, "0x{}", hex::encode(&self.0[..])) |
1107 | 60 | } Unexecuted instantiation: _RNvXs7_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB5_9HexStringNtNtCs1p5UDGgVI4d_4core3fmt7Display3fmt _RNvXs7_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB5_9HexStringNtNtCs1p5UDGgVI4d_4core3fmt7Display3fmt Line | Count | Source | 1105 | 60 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | 1106 | 60 | write!(f, "0x{}", hex::encode(&self.0[..])) | 1107 | 60 | } |
|
1108 | | } |
1109 | | |
1110 | | impl serde::Serialize for HexString { |
1111 | 60 | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> |
1112 | 60 | where |
1113 | 60 | S: serde::Serializer, |
1114 | | { |
1115 | 60 | self.to_string().serialize(serializer) |
1116 | 60 | } Unexecuted instantiation: _RINvXs8_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_9HexStringNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializepEBa_ Unexecuted instantiation: _RINvXs8_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_9HexStringNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeINtNtCs6cpVfp2Hoex_10serde_json3ser16MapKeySerializerQINtNtCsaFPxhswmqCN_5alloc3vec3VechENtB1R_16CompactFormatterEEBa_ Unexecuted instantiation: _RINvXs8_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_9HexStringNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeINtNtCs6cpVfp2Hoex_10serde_json3ser18RawValueStrEmitterQINtNtCsaFPxhswmqCN_5alloc3vec3VechENtB1R_16CompactFormatterEEBa_ _RINvXs8_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_9HexStringNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeQINtNtCs6cpVfp2Hoex_10serde_json3ser10SerializerQINtNtCsaFPxhswmqCN_5alloc3vec3VechEEEBa_ Line | Count | Source | 1111 | 60 | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> | 1112 | 60 | where | 1113 | 60 | S: serde::Serializer, | 1114 | | { | 1115 | 60 | self.to_string().serialize(serializer) | 1116 | 60 | } |
|
1117 | | } |
1118 | | |
1119 | | impl serde::Serialize for RpcMethods { |
1120 | 0 | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> |
1121 | 0 | where |
1122 | 0 | S: serde::Serializer, |
1123 | | { |
1124 | | #[derive(serde::Serialize)] |
1125 | | struct SerdeRpcMethods<'a> { |
1126 | | methods: &'a [String], |
1127 | | } |
1128 | | |
1129 | 0 | SerdeRpcMethods { |
1130 | 0 | methods: &self.methods, |
1131 | 0 | } |
1132 | 0 | .serialize(serializer) |
1133 | 0 | } Unexecuted instantiation: _RINvXs9_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_10RpcMethodsNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializepEBa_ Unexecuted instantiation: _RINvXs9_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_10RpcMethodsNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeQINtNtCs6cpVfp2Hoex_10serde_json3ser10SerializerQINtNtCsaFPxhswmqCN_5alloc3vec3VechEEEBa_ |
1134 | | } |
1135 | | |
1136 | | impl serde::Serialize for Block { |
1137 | 0 | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> |
1138 | 0 | where |
1139 | 0 | S: serde::Serializer, |
1140 | | { |
1141 | | #[derive(serde::Serialize)] |
1142 | | struct SerdeBlock<'a> { |
1143 | | block: SerdeBlockInner<'a>, |
1144 | | } |
1145 | | |
1146 | | #[derive(serde::Serialize)] |
1147 | | struct SerdeBlockInner<'a> { |
1148 | | extrinsics: &'a [HexString], |
1149 | | header: &'a Header, |
1150 | | justifications: Option<Vec<Vec<Vec<u8>>>>, |
1151 | | } |
1152 | | |
1153 | | SerdeBlock { |
1154 | | block: SerdeBlockInner { |
1155 | 0 | extrinsics: &self.extrinsics, |
1156 | 0 | header: &self.header, |
1157 | 0 | justifications: self.justifications.as_ref().map(|list| { |
1158 | 0 | list.iter() |
1159 | 0 | .map(|(e, j)| vec![e.to_vec(), j.clone()]) Unexecuted instantiation: _RNCNCINvXsa_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtBa_5BlockNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializepE00Be_ Unexecuted instantiation: _RNCNCINvXsa_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtBa_5BlockNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeQINtNtCs6cpVfp2Hoex_10serde_json3ser10SerializerQINtNtCsaFPxhswmqCN_5alloc3vec3VechEEE00Be_ |
1160 | 0 | .collect() |
1161 | 0 | }), Unexecuted instantiation: _RNCINvXsa_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB8_5BlockNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializepE0Bc_ Unexecuted instantiation: _RNCINvXsa_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB8_5BlockNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeQINtNtCs6cpVfp2Hoex_10serde_json3ser10SerializerQINtNtCsaFPxhswmqCN_5alloc3vec3VechEEE0Bc_ |
1162 | | }, |
1163 | | } |
1164 | 0 | .serialize(serializer) |
1165 | 0 | } Unexecuted instantiation: _RINvXsa_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_5BlockNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializepEBa_ Unexecuted instantiation: _RINvXsa_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_5BlockNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeQINtNtCs6cpVfp2Hoex_10serde_json3ser10SerializerQINtNtCsaFPxhswmqCN_5alloc3vec3VechEEEBa_ |
1166 | | } |
1167 | | |
1168 | | impl serde::Serialize for RuntimeDispatchInfo { |
1169 | 0 | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> |
1170 | 0 | where |
1171 | 0 | S: serde::Serializer, |
1172 | | { |
1173 | | #[derive(serde::Serialize)] |
1174 | | struct SerdeRuntimeDispatchInfo { |
1175 | | weight: u64, |
1176 | | class: &'static str, |
1177 | | /// Sent back as a string in order to not accidentally lose precision. |
1178 | | #[serde(rename = "partialFee")] |
1179 | | partial_fee: String, |
1180 | | } |
1181 | | |
1182 | | SerdeRuntimeDispatchInfo { |
1183 | 0 | weight: self.weight, |
1184 | 0 | class: match self.class { |
1185 | 0 | DispatchClass::Normal => "normal", |
1186 | 0 | DispatchClass::Operational => "operational", |
1187 | 0 | DispatchClass::Mandatory => "mandatory", |
1188 | | }, |
1189 | 0 | partial_fee: self.partial_fee.to_string(), |
1190 | | } |
1191 | 0 | .serialize(serializer) |
1192 | 0 | } Unexecuted instantiation: _RINvXsb_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_19RuntimeDispatchInfoNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializepEBa_ Unexecuted instantiation: _RINvXsb_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_19RuntimeDispatchInfoNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeQINtNtCs6cpVfp2Hoex_10serde_json3ser10SerializerQINtNtCsaFPxhswmqCN_5alloc3vec3VechEEEBa_ |
1193 | | } |
1194 | | |
1195 | | #[derive(serde::Serialize, serde::Deserialize)] |
1196 | | struct SerdeSystemHealth { |
1197 | | #[serde(rename = "isSyncing")] |
1198 | | is_syncing: bool, |
1199 | | peers: u64, |
1200 | | #[serde(rename = "shouldHavePeers")] |
1201 | | should_have_peers: bool, |
1202 | | } |
1203 | | |
1204 | | impl serde::Serialize for SystemHealth { |
1205 | 1 | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> |
1206 | 1 | where |
1207 | 1 | S: serde::Serializer, |
1208 | | { |
1209 | 1 | SerdeSystemHealth { |
1210 | 1 | is_syncing: self.is_syncing, |
1211 | 1 | peers: self.peers, |
1212 | 1 | should_have_peers: self.should_have_peers, |
1213 | 1 | } |
1214 | 1 | .serialize(serializer) |
1215 | 1 | } Unexecuted instantiation: _RINvXsc_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_12SystemHealthNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializepEBa_ _RINvXsc_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_12SystemHealthNtNtCs2GrDYR8YNmG_5serde3ser9Serialize9serializeQINtNtCs6cpVfp2Hoex_10serde_json3ser10SerializerQINtNtCsaFPxhswmqCN_5alloc3vec3VechEEEBa_ Line | Count | Source | 1205 | 1 | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> | 1206 | 1 | where | 1207 | 1 | S: serde::Serializer, | 1208 | | { | 1209 | 1 | SerdeSystemHealth { | 1210 | 1 | is_syncing: self.is_syncing, | 1211 | 1 | peers: self.peers, | 1212 | 1 | should_have_peers: self.should_have_peers, | 1213 | 1 | } | 1214 | 1 | .serialize(serializer) | 1215 | 1 | } |
|
1216 | | } |
1217 | | |
1218 | | impl<'a> serde::Deserialize<'a> for SystemHealth { |
1219 | 1 | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> |
1220 | 1 | where |
1221 | 1 | D: serde::Deserializer<'a>, |
1222 | | { |
1223 | 1 | let h: SerdeSystemHealth = serde::Deserialize::deserialize(deserializer)?0 ; |
1224 | 1 | Ok(SystemHealth { |
1225 | 1 | is_syncing: h.is_syncing, |
1226 | 1 | peers: h.peers, |
1227 | 1 | should_have_peers: h.should_have_peers, |
1228 | 1 | }) |
1229 | 1 | } Unexecuted instantiation: _RINvXsd_NtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methodsNtB6_12SystemHealthNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializepEBa_ Unexecuted instantiation: _RINvXsd_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_12SystemHealthNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializepEBa_ _RINvXsd_NtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methodsNtB6_12SystemHealthNtNtCs2GrDYR8YNmG_5serde2de11Deserialize11deserializeQINtNtCs6cpVfp2Hoex_10serde_json2de12DeserializerNtNtB23_4read7StrReadEECs4VrkfB1pvQ3_25json_rpc_general_requests Line | Count | Source | 1219 | 1 | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> | 1220 | 1 | where | 1221 | 1 | D: serde::Deserializer<'a>, | 1222 | | { | 1223 | 1 | let h: SerdeSystemHealth = serde::Deserialize::deserialize(deserializer)?0 ; | 1224 | 1 | Ok(SystemHealth { | 1225 | 1 | is_syncing: h.is_syncing, | 1226 | 1 | peers: h.peers, | 1227 | 1 | should_have_peers: h.should_have_peers, | 1228 | 1 | }) | 1229 | 1 | } |
|
1230 | | } |
1231 | | |
1232 | 2 | fn hex_num_serialize<S>(num: &u64, serializer: S) -> Result<S::Ok, S::Error> |
1233 | 2 | where |
1234 | 2 | S: serde::Serializer, |
1235 | | { |
1236 | 2 | serde::Serialize::serialize(&format!("0x{:x}", *num), serializer) |
1237 | 2 | } Unexecuted instantiation: _RINvNtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methods17hex_num_serializepEB6_ Unexecuted instantiation: _RINvNtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methods17hex_num_serializeINtNtCs6cpVfp2Hoex_10serde_json3ser18RawValueStrEmitterQINtNtCsaFPxhswmqCN_5alloc3vec3VechENtB15_16CompactFormatterEEB6_ _RINvNtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methods17hex_num_serializeQINtNtCs6cpVfp2Hoex_10serde_json3ser10SerializerQINtNtCsaFPxhswmqCN_5alloc3vec3VechEEEB6_ Line | Count | Source | 1232 | 2 | fn hex_num_serialize<S>(num: &u64, serializer: S) -> Result<S::Ok, S::Error> | 1233 | 2 | where | 1234 | 2 | S: serde::Serializer, | 1235 | | { | 1236 | 2 | serde::Serialize::serialize(&format!("0x{:x}", *num), serializer) | 1237 | 2 | } |
|
1238 | | |
1239 | 2 | fn hex_num_deserialize<'de, D>(deserializer: D) -> Result<u64, D::Error> |
1240 | 2 | where |
1241 | 2 | D: serde::Deserializer<'de>, |
1242 | | { |
1243 | 2 | let mut string: String = serde::Deserialize::deserialize(deserializer)?0 ; |
1244 | 2 | if !string.starts_with("0x") { |
1245 | 0 | return Err(serde::de::Error::custom("number doesn't start with 0x")); |
1246 | 2 | } |
1247 | 2 | if string.len() % 2 != 0 { |
1248 | 2 | string.insert(2, '0'); |
1249 | 2 | }0 |
1250 | 2 | let decoded = hex::decode(&string[2..]).map_err(serde::de::Error::custom)?0 ; |
1251 | 2 | if decoded.len() > 8 { |
1252 | 0 | return Err(serde::de::Error::custom("number overflow")); |
1253 | 2 | } |
1254 | | |
1255 | 2 | let mut num = [0u8; 8]; |
1256 | 2 | num[..decoded.len()].copy_from_slice(&decoded); |
1257 | 2 | Ok(u64::from_be_bytes(num)) |
1258 | 2 | } Unexecuted instantiation: _RINvNtNtCsjlkOsLH0Zfj_7smoldot8json_rpc7methods19hex_num_deserializepEB6_ Unexecuted instantiation: _RINvNtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methods19hex_num_deserializeQINtNtCs6cpVfp2Hoex_10serde_json2de12DeserializerNtNtB1a_4read7StrReadEEB6_ _RINvNtNtCsc1ywvx6YAnK_7smoldot8json_rpc7methods19hex_num_deserializeQINtNtCs6cpVfp2Hoex_10serde_json2de12DeserializerNtNtB1a_4read7StrReadEECs4VrkfB1pvQ3_25json_rpc_general_requests Line | Count | Source | 1239 | 2 | fn hex_num_deserialize<'de, D>(deserializer: D) -> Result<u64, D::Error> | 1240 | 2 | where | 1241 | 2 | D: serde::Deserializer<'de>, | 1242 | | { | 1243 | 2 | let mut string: String = serde::Deserialize::deserialize(deserializer)?0 ; | 1244 | 2 | if !string.starts_with("0x") { | 1245 | 0 | return Err(serde::de::Error::custom("number doesn't start with 0x")); | 1246 | 2 | } | 1247 | 2 | if string.len() % 2 != 0 { | 1248 | 2 | string.insert(2, '0'); | 1249 | 2 | }0 | 1250 | 2 | let decoded = hex::decode(&string[2..]).map_err(serde::de::Error::custom)?0 ; | 1251 | 2 | if decoded.len() > 8 { | 1252 | 0 | return Err(serde::de::Error::custom("number overflow")); | 1253 | 2 | } | 1254 | | | 1255 | 2 | let mut num = [0u8; 8]; | 1256 | 2 | num[..decoded.len()].copy_from_slice(&decoded); | 1257 | 2 | Ok(u64::from_be_bytes(num)) | 1258 | 2 | } |
|
1259 | | |
1260 | | #[cfg(test)] |
1261 | | mod tests { |
1262 | | #[test] |
1263 | 1 | fn no_params_accepted() { |
1264 | | // No `params` field in the request. |
1265 | 1 | let (_, call) = super::parse_jsonrpc_client_to_server( |
1266 | 1 | r#"{"jsonrpc":"2.0","id":2,"method":"chainSpec_v1_chainName"}"#, |
1267 | 1 | ) |
1268 | 1 | .unwrap(); |
1269 | | |
1270 | 1 | assert!(matches!0 (call, super::MethodCall::chainSpec_v1_chainName {})); |
1271 | 1 | } |
1272 | | |
1273 | | #[test] |
1274 | 1 | fn no_params_refused() { |
1275 | | // No `params` field in the request. |
1276 | 1 | let err = super::parse_jsonrpc_client_to_server( |
1277 | 1 | r#"{"jsonrpc":"2.0","id":2,"method":"chainHead_v1_follow"}"#, |
1278 | | ); |
1279 | | |
1280 | 1 | assert!(matches!( |
1281 | 1 | err, |
1282 | | Err(super::ParseClientToServerError::Method { |
1283 | 1 | request_id: "2", |
1284 | | error: super::MethodError::MissingParameters { |
1285 | 1 | rpc_method: "chainHead_v1_follow" |
1286 | | } |
1287 | | }) |
1288 | | )); |
1289 | 1 | } |
1290 | | } |