1#![allow(clippy::disallowed_types)] use std::collections::HashMap;
5use std::path::PathBuf;
6
7use laminar_connectors::connector::DeliveryGuarantee;
8use laminar_core::streaming::{BackpressureStrategy, StreamCheckpointConfig};
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
12pub enum BackpressurePolicy {
13 #[default]
15 Backpressure,
16 ShedOldest,
18 Fail,
20}
21
22#[derive(Clone)]
25pub struct SecretString(String);
26
27impl SecretString {
28 pub fn new(value: impl Into<String>) -> Self {
30 Self(value.into())
31 }
32
33 #[must_use]
35 pub fn expose(&self) -> &str {
36 &self.0
37 }
38}
39
40impl std::fmt::Debug for SecretString {
41 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
42 f.write_str("\"[REDACTED]\"")
43 }
44}
45
46#[derive(Debug, Clone)]
48pub struct LaminarConfig {
49 pub default_buffer_size: usize,
51 pub default_backpressure: BackpressureStrategy,
53 pub storage_dir: Option<PathBuf>,
55 pub checkpoint: Option<StreamCheckpointConfig>,
57 pub object_store_url: Option<String>,
59 pub object_store_options: HashMap<String, String>,
61 pub http_auth_token: Option<SecretString>,
64 pub delivery_guarantee: DeliveryGuarantee,
66 pub max_state_bytes_per_operator: Option<usize>,
68
69 pub pipeline_channel_capacity: Option<usize>,
71 pub pipeline_batch_window: Option<std::time::Duration>,
73 pub pipeline_drain_budget_ns: Option<u64>,
75 pub pipeline_query_budget_ns: Option<u64>,
77 pub pipeline_max_input_buf_batches: Option<usize>,
79 pub pipeline_max_input_buf_bytes: Option<usize>,
81 pub pipeline_backpressure_policy: BackpressurePolicy,
83}
84
85impl Default for LaminarConfig {
86 fn default() -> Self {
87 Self {
88 default_buffer_size: 65536,
89 default_backpressure: BackpressureStrategy::Block,
90 storage_dir: None,
91 checkpoint: None,
92 object_store_url: None,
93 object_store_options: HashMap::new(),
94 http_auth_token: None,
95 delivery_guarantee: DeliveryGuarantee::default(),
96 max_state_bytes_per_operator: None,
97 pipeline_channel_capacity: None,
98 pipeline_batch_window: None,
99 pipeline_drain_budget_ns: None,
100 pipeline_query_budget_ns: None,
101 pipeline_max_input_buf_batches: None,
102 pipeline_max_input_buf_bytes: None,
103 pipeline_backpressure_policy: BackpressurePolicy::default(),
104 }
105 }
106}