vector/sinks/splunk_hec/common/
request.rs

1use std::sync::Arc;
2
3use bytes::Bytes;
4use vector_lib::request_metadata::{MetaDescriptive, RequestMetadata};
5use vector_lib::{
6    event::{EventFinalizers, Finalizable},
7    ByteSizeOf,
8};
9
10use crate::sinks::util::ElementCount;
11
12#[derive(Clone, Debug)]
13pub struct HecRequest {
14    pub body: Bytes,
15    pub metadata: RequestMetadata,
16    pub finalizers: EventFinalizers,
17    pub passthrough_token: Option<Arc<str>>,
18    pub index: Option<String>,
19    pub source: Option<String>,
20    pub sourcetype: Option<String>,
21    pub host: Option<String>,
22}
23
24impl ByteSizeOf for HecRequest {
25    fn allocated_bytes(&self) -> usize {
26        self.body.allocated_bytes() + self.finalizers.allocated_bytes()
27    }
28}
29
30impl ElementCount for HecRequest {
31    fn element_count(&self) -> usize {
32        self.metadata.event_count()
33    }
34}
35
36impl Finalizable for HecRequest {
37    fn take_finalizers(&mut self) -> EventFinalizers {
38        std::mem::take(&mut self.finalizers)
39    }
40}
41
42impl MetaDescriptive for HecRequest {
43    fn get_metadata(&self) -> &RequestMetadata {
44        &self.metadata
45    }
46
47    fn metadata_mut(&mut self) -> &mut RequestMetadata {
48        &mut self.metadata
49    }
50}