Coverage Report

Created: 2025-07-01 09:16

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/__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
}