bacnet_server/server/
atomic_read_file_budget.rs1use super::*;
3
4#[derive(Clone, Copy, Debug, PartialEq, Eq)]
11pub struct AtomicReadFileBudget {
12 pub max_requested_stream_octets: usize,
14 pub max_requested_records: usize,
16 pub max_service_ack_bytes: usize,
18}
19
20impl Default for AtomicReadFileBudget {
21 fn default() -> Self {
22 Self {
23 max_requested_stream_octets: 16384,
24 max_requested_records: 256,
25 max_service_ack_bytes: 16384,
26 }
27 }
28}
29
30impl AtomicReadFileBudget {
31 pub fn validate(&self) -> Result<(), Error> {
33 for (name, value) in [
34 (
35 "atomic_read_file_max_requested_stream_octets",
36 self.max_requested_stream_octets,
37 ),
38 (
39 "atomic_read_file_max_requested_records",
40 self.max_requested_records,
41 ),
42 (
43 "atomic_read_file_max_service_ack_bytes",
44 self.max_service_ack_bytes,
45 ),
46 ] {
47 if value == 0 {
48 return Err(Error::Encoding(format!("{name} must be positive")));
49 }
50 }
51 Ok(())
52 }
53}
54
55impl<T: TransportPort + 'static> ServerBuilder<T> {
56 pub fn atomic_read_file_budget(mut self, budget: AtomicReadFileBudget) -> Self {
58 self.config.atomic_read_file_budget = budget;
59 self
60 }
61}
62impl BipServerBuilder {
63 pub fn atomic_read_file_budget(mut self, budget: AtomicReadFileBudget) -> Self {
65 self.config.atomic_read_file_budget = budget;
66 self
67 }
68}
69#[cfg(feature = "sc-tls")]
70impl ScServerBuilder {
71 pub fn atomic_read_file_budget(mut self, budget: AtomicReadFileBudget) -> Self {
73 self.config.atomic_read_file_budget = budget;
74 self
75 }
76}