Struct http_types::trace::TraceContext [−][src]
pub struct TraceContext { /* fields omitted */ }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]
impl TraceContext[src]pub fn new() -> Self[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<Self>>[src]
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) -> Self[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
Auto Trait Implementations
impl RefUnwindSafe for TraceContext
impl RefUnwindSafe for TraceContextimpl Send for TraceContext
impl Send for TraceContextimpl Sync for TraceContext
impl Sync for TraceContextimpl Unpin for TraceContext
impl Unpin for TraceContextimpl UnwindSafe for TraceContext
impl UnwindSafe for TraceContext