moirai_executor/schedule/route/
policy.rs1mod route_policy {
4 pub trait Sealed {}
5}
6
7pub trait RoutePolicy: route_policy::Sealed + Copy + Default + Send + Sync + 'static {
13 const ENABLE_PROCESS_ROUTES: bool;
15
16 const ENABLE_SERVER_ROUTES: bool;
18
19 const ENABLE_ACCELERATOR_ROUTES: bool;
21
22 const PROCESS_PERIOD: usize;
24
25 const SERVER_PERIOD: usize;
27
28 const ACCELERATOR_PERIOD: usize;
30}
31
32#[derive(Debug, Clone, Copy, Default)]
34pub struct ThreadRoutePolicy;
35
36#[derive(Debug, Clone, Copy, Default)]
38pub struct HybridRoutePolicy;
39
40#[derive(Debug, Clone, Copy, Default)]
42pub struct ServerRoutePolicy;
43
44#[derive(Debug, Clone, Copy, Default)]
46pub struct AcceleratorRoutePolicy;
47
48impl route_policy::Sealed for ThreadRoutePolicy {}
49impl route_policy::Sealed for HybridRoutePolicy {}
50impl route_policy::Sealed for ServerRoutePolicy {}
51impl route_policy::Sealed for AcceleratorRoutePolicy {}
52
53impl RoutePolicy for ThreadRoutePolicy {
54 const ENABLE_PROCESS_ROUTES: bool = false;
55 const ENABLE_SERVER_ROUTES: bool = false;
56 const ENABLE_ACCELERATOR_ROUTES: bool = false;
57 const PROCESS_PERIOD: usize = 1;
58 const SERVER_PERIOD: usize = 1;
59 const ACCELERATOR_PERIOD: usize = 1;
60}
61
62impl RoutePolicy for HybridRoutePolicy {
63 const ENABLE_PROCESS_ROUTES: bool = true;
64 const ENABLE_SERVER_ROUTES: bool = true;
65 const ENABLE_ACCELERATOR_ROUTES: bool = false;
66 const PROCESS_PERIOD: usize = 5;
67 const SERVER_PERIOD: usize = 17;
68 const ACCELERATOR_PERIOD: usize = 1;
69}
70
71impl RoutePolicy for ServerRoutePolicy {
72 const ENABLE_PROCESS_ROUTES: bool = true;
73 const ENABLE_SERVER_ROUTES: bool = true;
74 const ENABLE_ACCELERATOR_ROUTES: bool = false;
75 const PROCESS_PERIOD: usize = 3;
76 const SERVER_PERIOD: usize = 11;
77 const ACCELERATOR_PERIOD: usize = 1;
78}
79
80impl RoutePolicy for AcceleratorRoutePolicy {
81 const ENABLE_PROCESS_ROUTES: bool = true;
82 const ENABLE_SERVER_ROUTES: bool = true;
83 const ENABLE_ACCELERATOR_ROUTES: bool = true;
84 const PROCESS_PERIOD: usize = 5;
85 const SERVER_PERIOD: usize = 17;
86 const ACCELERATOR_PERIOD: usize = 7;
87}