pallet_session_validator_management_rpc/
lib.rs1#![deny(missing_docs)]
3use derive_new::new;
4use jsonrpsee::{
5 core::RpcResult,
6 core::async_trait,
7 proc_macros::rpc,
8 types::{ErrorObject, ErrorObjectOwned},
9};
10use sidechain_domain::{McEpochNumber, StakePoolPublicKey};
11use sp_session_validator_management_query::SessionValidatorManagementQueryApi;
12use sp_session_validator_management_query::types::*;
13use std::sync::Arc;
14
15#[rpc(client, server, namespace = "sidechain")]
16pub trait SessionValidatorManagementRpcApi {
17 #[method(name = "getEpochCommittee")]
19 fn get_epoch_committee(&self, epoch_number: u64) -> RpcResult<GetCommitteeResponse>;
20
21 #[method(name = "getRegistrations")]
26 async fn get_registrations(
27 &self,
28 mc_epoch_number: McEpochNumber,
29 #[argument(rename = "mc_public_key")] stake_pool_public_key: StakePoolPublicKey,
30 ) -> RpcResult<Vec<CandidateRegistrationEntry>>;
31
32 #[method(name = "getAriadneParameters")]
34 async fn get_ariadne_parameters(
35 &self,
36 epoch_number: McEpochNumber,
37 ) -> RpcResult<AriadneParameters>;
38}
39
40#[derive(new)]
41pub struct SessionValidatorManagementRpc<T> {
43 query_api: Arc<T>,
44}
45
46#[async_trait]
47impl<T> SessionValidatorManagementRpcApiServer for SessionValidatorManagementRpc<T>
48where
49 T: SessionValidatorManagementQueryApi + Send + Sync + 'static,
50{
51 fn get_epoch_committee(&self, epoch_number: u64) -> RpcResult<GetCommitteeResponse> {
52 self.query_api.get_epoch_committee(epoch_number).map_err(error_object_from_str)
53 }
54
55 async fn get_registrations(
56 &self,
57 mc_epoch_number: McEpochNumber,
58 stake_pool_public_key: StakePoolPublicKey,
59 ) -> RpcResult<Vec<CandidateRegistrationEntry>> {
60 self.query_api
61 .get_registrations(mc_epoch_number, stake_pool_public_key)
62 .await
63 .map_err(error_object_from_str)
64 }
65
66 async fn get_ariadne_parameters(
67 &self,
68 epoch_number: McEpochNumber,
69 ) -> RpcResult<AriadneParameters> {
70 self.query_api
71 .get_ariadne_parameters(epoch_number)
72 .await
73 .map_err(error_object_from_str)
74 }
75}
76
77fn error_object_from_str(msg: impl Into<String>) -> ErrorObjectOwned {
78 ErrorObject::owned::<u8>(-1, msg, None)
79}