spacejam_service/service/
mod.rs1use crate::{BTreeMap, Gas, ServiceId};
4use serde::{Deserialize, Serialize};
5pub use {
6 account::ServiceAccount,
7 refine::{RefineContext, RefineLoad},
8 result::{WorkExecResult, WorkResult},
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::{WorkExecResultJson, WorkResultJson},
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)]
29#[cfg_attr(feature = "json", derive(Json))]
30pub struct Privileges {
31 pub bless: ServiceId,
33
34 #[cfg_attr(feature = "json", json(Vec<ServiceId>))]
36 pub assign: [ServiceId; crate::CORES_COUNT],
37
38 pub designate: ServiceId,
40
41 pub always_acc: BTreeMap<ServiceId, Gas>,
43}
44
45impl Privileges {
46 pub fn gas_limit(&self) -> Gas {
48 (crate::GAS_ACC * crate::CORES_COUNT as u64 + self.always_acc.values().sum::<u64>())
49 .max(crate::GAS_ALL_ACC)
50 }
51}
52
53#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone, Default)]
55#[cfg_attr(feature = "json", derive(Json))]
56pub struct GasLimit {
57 #[serde(alias = "min_memo_gas")]
60 pub accumulate: Gas,
61
62 #[serde(alias = "min_item_gas")]
64 pub transfer: Gas,
65}