dope_core/driver/settings/
errors.rs1use o3::buffer::storage::Zero;
4
5use crate::{
6 driver::{route, route::table, settings, settings::demands::slots},
7 io::datagram::payload,
8};
9
10#[derive(Clone, Copy, Debug, PartialEq, Eq)]
12#[repr(u8)]
13pub enum Config {
14 QueueSubmissionsOutOfRange {
15 actual: u32,
16 minimum: u32,
17 maximum: u32,
18 },
19 ReceiveEntriesOutOfRange {
20 actual: u32,
21 minimum: u32,
22 maximum: u32,
23 },
24 ReceiveEntriesNotPowerOfTwo {
25 actual: u16,
26 },
27 ReceiveBuffer(Zero),
28 ReceiveAllocationTooLarge {
29 entries: u16,
30 buffer_len: u32,
31 actual: u64,
32 maximum: u64,
33 },
34 DatagramPayload(payload::Error),
35 DescriptorCapacityOutOfRange {
36 accepted: u32,
37 outbound: u32,
38 actual: u64,
39 minimum: u32,
40 maximum: u32,
41 },
42 ReadyCapacity {
43 files: u32,
44 ready: u32,
45 maximum: u32,
46 },
47}
48
49#[derive(Clone, Copy, Debug, Eq, PartialEq)]
50#[repr(u8)]
51pub enum Claim {
52 DuplicateRoute(route::Id),
53 AcceptedDescriptorsOverflow {
54 current: u32,
55 added: u32,
56 },
57 OutboundDescriptorsOverflow {
58 current: u32,
59 added: u32,
60 },
61 DescriptorConnectionsOutOfRange {
62 actual: usize,
63 minimum: usize,
64 maximum: usize,
65 },
66 ReceiveEntriesOverflow {
67 current: u32,
68 added: u32,
69 },
70 ReceiveEntriesPowerOfTwoOverflow {
71 requested: u32,
72 },
73 ReceiveEntriesTooLarge {
74 actual: usize,
75 maximum: usize,
76 },
77 ResidentDomainsOverflow(settings::DomainSum),
78 QueueSubmissionsPowerOfTwoOverflow {
79 requested: u32,
80 },
81 SchedulerReadyOverflow(slots::Sum),
82 SchedulerTimersOverflow(slots::Sum),
83 Layout(Config),
84}
85
86impl From<Config> for Claim {
87 fn from(source: Config) -> Self {
88 Self::Layout(source)
89 }
90}
91
92impl From<settings::DomainSum> for Claim {
93 fn from(source: settings::DomainSum) -> Self {
94 Self::ResidentDomainsOverflow(source)
95 }
96}
97
98impl From<table::Invalid> for Claim {
99 fn from(source: table::Invalid) -> Self {
100 Self::DescriptorConnectionsOutOfRange {
101 actual: source.actual,
102 minimum: source.minimum,
103 maximum: source.maximum,
104 }
105 }
106}