[−][src]Struct tide::http::trace::TraceContext
Extract and apply Trace-Context headers.
Specifications
Examples
use http_types::trace::TraceContext; let mut res = http_types::Response::new(200); res.insert_header( "traceparent", "00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01" ); let context = TraceContext::from_headers(&res)?.unwrap(); let trace_id = u128::from_str_radix("0af7651916cd43dd8448eb211c80319c", 16); let parent_id = u64::from_str_radix("00f067aa0ba902b7", 16); assert_eq!(context.trace_id(), trace_id.unwrap()); assert_eq!(context.parent_id(), parent_id.ok()); assert_eq!(context.sampled(), true);
Implementations
impl TraceContext
[src]
pub fn new() -> TraceContext
[src]
Generate a new TraceContext object without a parent.
By default root TraceContext objects are sampled.
To mark it unsampled, call context.set_sampled(false)
.
Examples
use http_types::trace::TraceContext; let context = TraceContext::new(); assert_eq!(context.parent_id(), None); assert_eq!(context.sampled(), true);
pub fn from_headers(
headers: impl AsRef<Headers>
) -> Result<Option<TraceContext>, Error>
[src]
headers: impl AsRef<Headers>
) -> Result<Option<TraceContext>, Error>
Create and return TraceContext object based on traceparent
HTTP header.
Errors
This function may error if the header is malformed. An error with a
status code of 400: Bad Request
will be generated.
Examples
use http_types::trace::TraceContext; let mut res = http_types::Response::new(200); res.insert_header( "traceparent", "00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01" ); let context = TraceContext::from_headers(&res)?.unwrap(); let trace_id = u128::from_str_radix("0af7651916cd43dd8448eb211c80319c", 16); let parent_id = u64::from_str_radix("00f067aa0ba902b7", 16); assert_eq!(context.trace_id(), trace_id.unwrap()); assert_eq!(context.parent_id(), parent_id.ok()); assert_eq!(context.sampled(), true);
pub fn apply(&self, headers: impl AsMut<Headers>)
[src]
Add the traceparent header to the http headers
Examples
use http_types::trace::TraceContext; use http_types::{Request, Response, Url, Method}; let mut req = Request::new(Method::Get, Url::parse("https://example.com").unwrap()); req.insert_header( "traceparent", "00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01" ); let parent = TraceContext::from_headers(&req)?.unwrap(); let mut res = Response::new(200); parent.apply(&mut res); let child = TraceContext::from_headers(&res)?.unwrap(); assert_eq!(child.version(), parent.version()); assert_eq!(child.trace_id(), parent.trace_id()); assert_eq!(child.parent_id(), Some(parent.id()));
pub fn name(&self) -> HeaderName
[src]
Get the HeaderName
.
pub fn value(&self) -> HeaderValue
[src]
Get the HeaderValue
.
pub fn child(&self) -> TraceContext
[src]
Generate a child of the current TraceContext and return it.
The child will have a new randomly genrated id
and its parent_id
will be set to the
id
of this TraceContext.
pub fn id(&self) -> u64
[src]
Return the id of the TraceContext.
pub fn version(&self) -> u8
[src]
Return the version of the TraceContext spec used.
You probably don't need this.
pub fn trace_id(&self) -> u128
[src]
Return the trace id of the TraceContext.
All children will have the same trace_id
.
pub fn parent_id(&self) -> Option<u64>
[src]
Return the id of the parent TraceContext.
pub fn sampled(&self) -> bool
[src]
Returns true if the trace is sampled
Examples
use http_types::trace::TraceContext; use http_types::Response; let mut res = Response::new(200); res.insert_header("traceparent", "00-00000000000000000000000000000001-0000000000000002-01"); let context = TraceContext::from_headers(&res)?.unwrap(); assert_eq!(context.sampled(), true);
pub fn set_sampled(&mut self, sampled: bool)
[src]
Change sampled flag
Examples
use http_types::trace::TraceContext; let mut context = TraceContext::new(); assert_eq!(context.sampled(), true); context.set_sampled(false); assert_eq!(context.sampled(), false);
Trait Implementations
impl Debug for TraceContext
[src]
impl Display for TraceContext
[src]
Auto Trait Implementations
impl RefUnwindSafe for TraceContext
[src]
impl Send for TraceContext
[src]
impl Sync for TraceContext
[src]
impl Unpin for TraceContext
[src]
impl UnwindSafe for TraceContext
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,