vector/sinks/splunk_hec/common/
request.rs1use 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}