moirai_executor/schedule/route/
ids.rs1#[repr(transparent)]
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
6pub struct ThreadId(usize);
7
8impl ThreadId {
9 #[inline]
11 pub const fn new(id: usize) -> Self {
12 Self(id)
13 }
14
15 #[inline]
17 pub const fn get(self) -> usize {
18 self.0
19 }
20}
21
22#[repr(transparent)]
24#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
25pub struct ProcessId(usize);
26
27impl ProcessId {
28 #[inline]
30 pub const fn new(id: usize) -> Self {
31 Self(id)
32 }
33
34 #[inline]
36 pub const fn get(self) -> usize {
37 self.0
38 }
39}
40
41#[repr(transparent)]
43#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
44pub struct ServerId(usize);
45
46impl ServerId {
47 #[inline]
49 pub const fn new(id: usize) -> Self {
50 Self(id)
51 }
52
53 #[inline]
55 pub const fn get(self) -> usize {
56 self.0
57 }
58}
59
60#[repr(transparent)]
62#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
63pub struct AsyncLaneId(usize);
64
65impl AsyncLaneId {
66 #[inline]
68 pub const fn new(id: usize) -> Self {
69 Self(id)
70 }
71
72 #[inline]
74 pub const fn get(self) -> usize {
75 self.0
76 }
77}
78
79#[repr(transparent)]
81#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
82pub struct AcceleratorId(usize);
83
84impl AcceleratorId {
85 #[inline]
87 pub const fn new(id: usize) -> Self {
88 Self(id)
89 }
90
91 #[inline]
93 pub const fn get(self) -> usize {
94 self.0
95 }
96}
97
98#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
100pub enum AcceleratorKind {
101 Cpu,
103 Gpu,
105 Tpu,
107 Npu,
109}
110
111impl AcceleratorKind {
112 #[inline]
113 pub(crate) const fn checksum_tag(self) -> usize {
114 match self {
115 Self::Cpu => 1,
116 Self::Gpu => 2,
117 Self::Tpu => 3,
118 Self::Npu => 4,
119 }
120 }
121}
122
123#[repr(transparent)]
125#[derive(Debug, Clone, Copy, PartialEq, Eq)]
126pub struct WorkerCount(usize);
127
128impl WorkerCount {
129 #[inline]
131 pub const fn new(count: usize) -> Self {
132 Self(if count == 0 { 1 } else { count })
133 }
134
135 #[inline]
137 pub const fn get(self) -> usize {
138 self.0
139 }
140}
141
142#[repr(transparent)]
144#[derive(Debug, Clone, Copy, PartialEq, Eq)]
145pub struct ProcessCount(usize);
146
147impl ProcessCount {
148 #[inline]
150 pub const fn new(count: usize) -> Self {
151 Self(if count == 0 { 1 } else { count })
152 }
153
154 #[inline]
156 pub const fn get(self) -> usize {
157 self.0
158 }
159}
160
161#[repr(transparent)]
163#[derive(Debug, Clone, Copy, PartialEq, Eq)]
164pub struct AsyncLanesPerProcess(usize);
165
166impl AsyncLanesPerProcess {
167 #[inline]
169 pub const fn new(count: usize) -> Self {
170 Self(if count == 0 { 1 } else { count })
171 }
172
173 #[inline]
175 pub const fn get(self) -> usize {
176 self.0
177 }
178}
179
180#[repr(transparent)]
182#[derive(Debug, Clone, Copy, PartialEq, Eq)]
183pub struct ServerCount(usize);
184
185impl ServerCount {
186 #[inline]
188 pub const fn new(count: usize) -> Self {
189 Self(count)
190 }
191
192 #[inline]
194 pub const fn get(self) -> usize {
195 self.0
196 }
197}
198
199#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
201pub struct AcceleratorCounts {
202 cpu: usize,
203 gpu: usize,
204 tpu: usize,
205 npu: usize,
206}
207
208impl AcceleratorCounts {
209 #[inline]
211 pub const fn new(cpu: usize, gpu: usize, tpu: usize, npu: usize) -> Self {
212 Self { cpu, gpu, tpu, npu }
213 }
214
215 #[inline]
217 pub const fn cpu(self) -> usize {
218 self.cpu
219 }
220
221 #[inline]
223 pub const fn gpu(self) -> usize {
224 self.gpu
225 }
226
227 #[inline]
229 pub const fn tpu(self) -> usize {
230 self.tpu
231 }
232
233 #[inline]
235 pub const fn npu(self) -> usize {
236 self.npu
237 }
238
239 #[inline]
241 pub const fn total(self) -> usize {
242 self.cpu + self.gpu + self.tpu + self.npu
243 }
244}