stratum_server/
request.rs

1use crate::{
2    types::{GlobalVars, ID},
3    Frame,
4};
5
6pub struct StratumRequest<State> {
7    pub(crate) state: State,
8    pub(crate) values: Frame,
9    pub(crate) global_vars: GlobalVars,
10}
11
12impl<State> StratumRequest<State> {
13    ///  Access application scoped state.
14    pub fn state(&self) -> &State {
15        &self.state
16    }
17
18    pub fn global_vars(&self) -> &GlobalVars {
19        &self.global_vars
20    }
21
22    // pub fn get_ex_message(&self) -> Option<ExMessageGeneric> {
23    //     match &self.values {
24    //         MessageValue::StratumV1(_) => None,
25    //         MessageValue::ExMessage(msg) => Some(msg.clone()),
26    //     }
27    // }
28
29    pub fn get_json<T: serde::de::DeserializeOwned>(
30        &self,
31        _name: &str,
32    ) -> Result<T, serde_json::Error> {
33        match &self.values {
34            Frame::V1(request) => Ok(serde_json::from_value(request.params.clone())?),
35            // MessageValue::ExMessage(_) => Err(serde::de::Error::custom(
36            //     "wrong message type request".to_string(),
37            // )),
38        }
39    }
40
41    pub fn get_id(&self) -> Result<ID, serde_json::Error> {
42        match &self.values {
43            Frame::V1(request) => Ok(request.id.clone()),
44            // MessageValue::ExMessage(_) => Err(serde::de::Error::custom(
45            //     "wrong message type request".to_string(),
46            // )),
47        }
48    }
49}