spacejam_service/service/
mod.rs1use crate::{BTreeMap, Gas, ServiceId};
4use serde::{Deserialize, Serialize};
5pub use {
6 account::ServiceAccount,
7 refine::{RefineContext, RefineLoad},
8 result::{WorkDigest, WorkExecResult},
9 work::{ExtrinsicSpec, ImportSpec, WorkItem, WorkPackage, WorkPackageSpec},
10};
11
12#[cfg(feature = "json")]
13use {crate::Vec, spacejson::Json};
14
15#[cfg(feature = "json")]
16pub use {
17 refine::{RefineContextJson, RefineLoadJson},
18 result::{WorkDigestJson, WorkExecResultJson},
19 work::{ExtrinsicSpecJson, ImportSpecJson, WorkPackageSpecJson},
20};
21
22pub mod account;
23pub mod refine;
24pub mod result;
25pub mod work;
26
27#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
31#[cfg_attr(feature = "json", derive(Json))]
32pub struct Privileges {
33 pub bless: ServiceId,
35
36 #[cfg_attr(feature = "json", json(Vec<ServiceId>))]
38 pub assign: [ServiceId; crate::CORES_COUNT],
39
40 pub designate: ServiceId,
42
43 pub register: ServiceId,
46
47 pub always_acc: BTreeMap<ServiceId, Gas>,
49}
50
51impl Privileges {
52 pub fn gas_limit(&self) -> Gas {
54 (crate::GAS_ACC * crate::CORES_COUNT as u64 + self.always_acc.values().sum::<u64>())
55 .max(crate::GAS_ALL_ACC)
56 }
57}
58
59#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone, Default)]
61#[cfg_attr(feature = "json", derive(Json))]
62pub struct GasLimit {
63 #[serde(alias = "min_memo_gas")]
66 pub accumulate: Gas,
67
68 #[serde(alias = "min_item_gas")]
70 pub transfer: Gas,
71}