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