forge_core/config/
node.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7#[non_exhaustive]
8pub struct NodeConfig {
9 #[serde(default = "default_roles")]
11 pub roles: Vec<NodeRole>,
12
13 #[serde(default = "default_capabilities")]
15 pub worker_capabilities: Vec<String>,
16}
17
18impl Default for NodeConfig {
19 fn default() -> Self {
20 Self {
21 roles: default_roles(),
22 worker_capabilities: default_capabilities(),
23 }
24 }
25}
26
27fn default_roles() -> Vec<NodeRole> {
28 vec![
29 NodeRole::Gateway,
30 NodeRole::Function,
31 NodeRole::Worker,
32 NodeRole::Scheduler,
33 ]
34}
35
36fn default_capabilities() -> Vec<String> {
37 vec!["general".to_string()]
38}
39
40#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
42#[serde(rename_all = "lowercase")]
43#[non_exhaustive]
44pub enum NodeRole {
45 Gateway,
47 Function,
49 Worker,
51 Scheduler,
53}