spacetimedb/messages/
control_worker_api.rs

1use spacetimedb_lib::Identity;
2use spacetimedb_sats::de::Deserialize;
3use spacetimedb_sats::ser::Serialize;
4
5use super::control_db::*;
6
7/// Messages from control node to worker node.
8#[derive(Clone, PartialEq, Serialize, Deserialize)]
9pub enum WorkerBoundMessage {
10    ScheduleState(ScheduleState),
11    ScheduleUpdate(ScheduleUpdate),
12    EnergyBalanceState(EnergyBalanceState),
13    EnergyBalanceUpdate(EnergyBalanceUpdate),
14}
15/// Messages from worker node to control node.
16#[derive(Clone, PartialEq, Serialize, Deserialize)]
17pub enum ControlBoundMessage {
18    EnergyWithdrawals(EnergyWithdrawals),
19}
20#[derive(Clone, PartialEq, Serialize, Deserialize)]
21pub struct ScheduleState {
22    pub replicas: Vec<Replica>,
23    pub databases: Vec<Database>,
24    pub nodes: Vec<Node>,
25}
26#[derive(Clone, PartialEq, Serialize, Deserialize)]
27pub enum ScheduleUpdate {
28    Insert(InsertOperation),
29    Update(UpdateOperation),
30    Delete(DeleteOperation),
31}
32#[derive(Clone, PartialEq, Serialize, Deserialize)]
33pub enum InsertOperation {
34    Replica(Replica),
35    Database(Database),
36    Node(Node),
37}
38#[derive(Clone, PartialEq, Serialize, Deserialize)]
39pub enum UpdateOperation {
40    Replica(Replica),
41    Database(Database),
42    Node(Node),
43}
44#[derive(Clone, PartialEq, Serialize, Deserialize)]
45pub enum DeleteOperation {
46    ReplicaId(u64),
47    DatabaseId(u64),
48    NodeId(u64),
49}
50/// An energy balance update from control node to worker node.
51#[derive(Clone, PartialEq, Serialize, Deserialize)]
52pub struct EnergyBalanceUpdate {
53    pub identity: Identity,
54    pub energy_balance: i128,
55}
56// A message to synchronize energy balances from control node to worker node.
57#[derive(Clone, PartialEq, Serialize, Deserialize)]
58pub struct EnergyBalanceState {
59    pub balances: Vec<EnergyBalance>,
60}
61/// Budget spend update from worker up to control node.
62#[derive(Clone, PartialEq, Serialize, Deserialize)]
63pub struct EnergyWithdrawals {
64    pub withdrawals: Vec<EnergyWithdrawal>,
65}
66#[derive(Clone, PartialEq, Serialize, Deserialize)]
67pub struct EnergyWithdrawal {
68    pub identity: Identity,
69    pub amount: i128,
70}