Skip to content

Commit 4a96827

Browse files
committed
address Bruce's comments
1 parent 20416a5 commit 4a96827

File tree

1 file changed

+14
-26
lines changed

1 file changed

+14
-26
lines changed

lib/codecs/src/decoding/format/protobuf.rs

+14-26
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use std::collections::BTreeMap;
22
use std::fs;
3+
use std::path::PathBuf;
34

45
use bytes::Bytes;
56
use chrono::Utc;
6-
use lookup::PathPrefix;
77
use ordered_float::NotNan;
88
use prost_reflect::{DescriptorPool, DynamicMessage, MessageDescriptor, ReflectMessage};
99
use smallvec::{smallvec, SmallVec};
@@ -23,7 +23,7 @@ use super::Deserializer;
2323
#[derive(Debug, Clone, Default)]
2424
pub struct ProtobufDeserializerConfig {
2525
/// Path to desc file
26-
desc_file: String,
26+
desc_file: PathBuf,
2727

2828
/// message type. e.g package.message
2929
message_type: String,
@@ -32,6 +32,7 @@ pub struct ProtobufDeserializerConfig {
3232
impl ProtobufDeserializerConfig {
3333
/// Build the `ProtobufDeserializer` from this configuration.
3434
pub fn build(&self) -> ProtobufDeserializer {
35+
// TODO return a Result instead.
3536
ProtobufDeserializer::try_from(self).unwrap()
3637
}
3738

@@ -65,13 +66,6 @@ impl ProtobufDeserializerConfig {
6566
}
6667
}
6768

68-
impl ProtobufDeserializerConfig {
69-
/// Creates a new `ProtobufDeserializerConfig`.
70-
pub fn new() -> Self {
71-
Default::default()
72-
}
73-
}
74-
7569
/// Deserializer that builds `Event`s from a byte frame containing protobuf.
7670
#[derive(Debug, Clone)]
7771
pub struct ProtobufDeserializer {
@@ -85,15 +79,15 @@ impl ProtobufDeserializer {
8579
}
8680

8781
fn get_message_descriptor(
88-
desc_file: String,
82+
desc_file: &PathBuf,
8983
message_type: String,
9084
) -> vector_common::Result<MessageDescriptor> {
91-
let b = fs::read(desc_file.clone())
92-
.map_err(|e| format!("Failed to open protobuf desc file '{desc_file}': {e}"))?;
85+
let b = fs::read(desc_file)
86+
.map_err(|e| format!("Failed to open protobuf desc file '{desc_file:?}': {e}",))?;
9387
let pool = DescriptorPool::decode(b.as_slice())
94-
.map_err(|e| format!("Failed to parse protobuf desc file '{desc_file}': {e}"))?;
88+
.map_err(|e| format!("Failed to parse protobuf desc file '{desc_file:?}': {e}"))?;
9589
Ok(pool.get_message_by_name(&message_type).unwrap_or_else(|| {
96-
panic!("The message type '{message_type}' could not be found in '{desc_file}'")
90+
panic!("The message type '{message_type}' could not be found in '{desc_file:?}'")
9791
}))
9892
}
9993
}
@@ -113,14 +107,12 @@ impl Deserializer for ProtobufDeserializer {
113107
LogNamespace::Vector => event,
114108
LogNamespace::Legacy => {
115109
let timestamp = Utc::now();
116-
117-
if let Some(timestamp_key) = log_schema().timestamp_key() {
110+
if let Some(timestamp_key) = log_schema().timestamp_key_target_path() {
118111
let log = event.as_mut_log();
119-
if !log.contains((PathPrefix::Event, timestamp_key)) {
120-
log.insert((PathPrefix::Event, timestamp_key), timestamp);
112+
if !log.contains(timestamp_key) {
113+
log.insert(timestamp_key, timestamp);
121114
}
122115
}
123-
124116
event
125117
}
126118
};
@@ -133,7 +125,7 @@ impl TryFrom<&ProtobufDeserializerConfig> for ProtobufDeserializer {
133125
type Error = vector_common::Error;
134126
fn try_from(config: &ProtobufDeserializerConfig) -> vector_common::Result<Self> {
135127
let message_descriptor = ProtobufDeserializer::get_message_descriptor(
136-
config.desc_file.clone(),
128+
&config.desc_file,
137129
config.message_type.clone(),
138130
)?;
139131
Ok(Self::new(message_descriptor))
@@ -252,7 +244,7 @@ mod tests {
252244
) {
253245
let input = Bytes::from(protobuf_bin_message);
254246
let message_descriptor = ProtobufDeserializer::get_message_descriptor(
255-
protobuf_desc_path.to_str().unwrap().to_string(),
247+
&protobuf_desc_path,
256248
message_type.to_string(),
257249
)
258250
.unwrap();
@@ -348,11 +340,7 @@ mod tests {
348340
fn deserialize_error_invalid_protobuf() {
349341
let input = Bytes::from("{ foo");
350342
let message_descriptor = ProtobufDeserializer::get_message_descriptor(
351-
test_data_dir()
352-
.join("test_protobuf.desc")
353-
.to_str()
354-
.unwrap()
355-
.to_string(),
343+
&test_data_dir().join("test_protobuf.desc"),
356344
"test_protobuf.Person".to_string(),
357345
)
358346
.unwrap();

0 commit comments

Comments
 (0)