1use crate::error::ErrorDetailSink;
2
3#[derive(Debug, Clone, Copy, Default, Eq, PartialEq)]
4pub enum CaptureRaw {
5 #[default]
6 None,
7 Line,
8 Json,
9 Both,
10}
11
12#[derive(Debug, Clone, Copy, Default, Eq, PartialEq)]
13pub enum ErrorDetailCapture {
14 #[default]
15 RedactedSummaryOnly,
16 FullDetails,
17}
18
19#[derive(Debug, Clone, Copy, Eq, PartialEq)]
20pub struct IngestLimits {
21 pub max_line_bytes: usize,
22 pub max_raw_bytes_total: Option<usize>,
23}
24
25impl Default for IngestLimits {
26 fn default() -> Self {
27 Self {
28 max_line_bytes: 64 * 1024,
29 max_raw_bytes_total: None,
30 }
31 }
32}
33
34pub struct IngestConfig {
35 pub limits: IngestLimits,
36 pub capture_raw: CaptureRaw,
37 pub error_detail_capture: ErrorDetailCapture,
38 pub error_sink: Option<Box<dyn ErrorDetailSink>>,
39}
40
41impl Default for IngestConfig {
42 fn default() -> Self {
43 Self {
44 limits: IngestLimits::default(),
45 capture_raw: CaptureRaw::None,
46 error_detail_capture: ErrorDetailCapture::RedactedSummaryOnly,
47 error_sink: None,
48 }
49 }
50}