mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-05 08:09:22 +00:00
41 lines
1.4 KiB
Rust
41 lines
1.4 KiB
Rust
// Copyright 2022 Zinc Labs Inc. and Contributors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
use opentelemetry::propagation::Extractor;
|
|
|
|
pub mod event;
|
|
pub mod metrics;
|
|
pub mod search;
|
|
pub mod traces;
|
|
|
|
pub struct MetadataMap<'a>(&'a tonic::metadata::MetadataMap);
|
|
|
|
impl<'a> Extractor for MetadataMap<'a> {
|
|
/// Get a value for a key from the MetadataMap. If the value can't be converted to &str, returns None
|
|
fn get(&self, key: &str) -> Option<&str> {
|
|
self.0.get(key).and_then(|metadata| metadata.to_str().ok())
|
|
}
|
|
|
|
/// Collect all the keys from the MetadataMap.
|
|
fn keys(&self) -> Vec<&str> {
|
|
self.0
|
|
.keys()
|
|
.map(|key| match key {
|
|
tonic::metadata::KeyRef::Ascii(v) => v.as_str(),
|
|
tonic::metadata::KeyRef::Binary(v) => v.as_str(),
|
|
})
|
|
.collect::<Vec<_>>()
|
|
}
|
|
}
|