#![allow(unused_imports)]
#![allow(unused_extern_crates)]
#![cfg_attr(feature = "cargo-clippy", allow(too_many_arguments, type_complexity))]
#![cfg_attr(rustfmt, rustfmt_skip)]
extern crate thrift;
use thrift::OrderedFloat;
use std::cell::RefCell;
use std::collections::{BTreeMap, BTreeSet};
use std::convert::{From, TryFrom};
use std::default::Default;
use std::error::Error;
use std::fmt;
use std::fmt::{Display, Formatter};
use std::rc::Rc;
use thrift::{ApplicationError, ApplicationErrorKind, ProtocolError, ProtocolErrorKind, TThriftClient};
use thrift::protocol::{TFieldIdentifier, TListIdentifier, TMapIdentifier, TMessageIdentifier, TMessageType, TInputProtocol, TOutputProtocol, TSetIdentifier, TStructIdentifier, TType};
use thrift::protocol::field_id;
use thrift::protocol::verify_expected_message_type;
use thrift::protocol::verify_expected_sequence_number;
use thrift::protocol::verify_expected_service_call;
use thrift::protocol::verify_required_field_exists;
use thrift::server::TProcessor;
#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct SpanContext {
pub trace_id: Option<i64>,
pub trace_id_high: Option<i64>,
pub span_id: Option<i64>,
pub parent_span_id: Option<i64>,
pub sampled: Option<bool>,
pub flags: Option<i64>,
pub baggage_items: Option<BTreeMap<String, String>>,
}
impl SpanContext {
pub fn new<F1, F2, F3, F4, F5, F6, F7>(trace_id: F1, trace_id_high: F2, span_id: F3, parent_span_id: F4, sampled: F5, flags: F6, baggage_items: F7) -> SpanContext where F1: Into<Option<i64>>, F2: Into<Option<i64>>, F3: Into<Option<i64>>, F4: Into<Option<i64>>, F5: Into<Option<bool>>, F6: Into<Option<i64>>, F7: Into<Option<BTreeMap<String, String>>> {
SpanContext {
trace_id: trace_id.into(),
trace_id_high: trace_id_high.into(),
span_id: span_id.into(),
parent_span_id: parent_span_id.into(),
sampled: sampled.into(),
flags: flags.into(),
baggage_items: baggage_items.into(),
}
}
pub fn read_from_in_protocol(i_prot: &mut dyn TInputProtocol) -> thrift::Result<SpanContext> {
i_prot.read_struct_begin()?;
let mut f_1: Option<i64> = Some(0);
let mut f_2: Option<i64> = Some(0);
let mut f_3: Option<i64> = Some(0);
let mut f_4: Option<i64> = Some(0);
let mut f_5: Option<bool> = Some(false);
let mut f_6: Option<i64> = Some(0);
let mut f_7: Option<BTreeMap<String, String>> = Some(BTreeMap::new());
loop {
let field_ident = i_prot.read_field_begin()?;
if field_ident.field_type == TType::Stop {
break;
}
let field_id = field_id(&field_ident)?;
match field_id {
1 => {
let val = i_prot.read_i64()?;
f_1 = Some(val);
},
2 => {
let val = i_prot.read_i64()?;
f_2 = Some(val);
},
3 => {
let val = i_prot.read_i64()?;
f_3 = Some(val);
},
4 => {
let val = i_prot.read_i64()?;
f_4 = Some(val);
},
5 => {
let val = i_prot.read_bool()?;
f_5 = Some(val);
},
6 => {
let val = i_prot.read_i64()?;
f_6 = Some(val);
},
7 => {
let map_ident = i_prot.read_map_begin()?;
let mut val: BTreeMap<String, String> = BTreeMap::new();
for _ in 0..map_ident.size {
let map_key_0 = i_prot.read_string()?;
let map_val_1 = i_prot.read_string()?;
val.insert(map_key_0, map_val_1);
}
i_prot.read_map_end()?;
f_7 = Some(val);
},
_ => {
i_prot.skip(field_ident.field_type)?;
},
};
i_prot.read_field_end()?;
}
i_prot.read_struct_end()?;
let ret = SpanContext {
trace_id: f_1,
trace_id_high: f_2,
span_id: f_3,
parent_span_id: f_4,
sampled: f_5,
flags: f_6,
baggage_items: f_7,
};
Ok(ret)
}
pub fn write_to_out_protocol(&self, o_prot: &mut dyn TOutputProtocol) -> thrift::Result<()> {
let struct_ident = TStructIdentifier::new("SpanContext");
o_prot.write_struct_begin(&struct_ident)?;
if let Some(fld_var) = self.trace_id {
o_prot.write_field_begin(&TFieldIdentifier::new("trace_id", TType::I64, 1))?;
o_prot.write_i64(fld_var)?;
o_prot.write_field_end()?;
()
} else {
()
}
if let Some(fld_var) = self.trace_id_high {
o_prot.write_field_begin(&TFieldIdentifier::new("trace_id_high", TType::I64, 2))?;
o_prot.write_i64(fld_var)?;
o_prot.write_field_end()?;
()
} else {
()
}
if let Some(fld_var) = self.span_id {
o_prot.write_field_begin(&TFieldIdentifier::new("span_id", TType::I64, 3))?;
o_prot.write_i64(fld_var)?;
o_prot.write_field_end()?;
()
} else {
()
}
if let Some(fld_var) = self.parent_span_id {
o_prot.write_field_begin(&TFieldIdentifier::new("parent_span_id", TType::I64, 4))?;
o_prot.write_i64(fld_var)?;
o_prot.write_field_end()?;
()
} else {
()
}
if let Some(fld_var) = self.sampled {
o_prot.write_field_begin(&TFieldIdentifier::new("sampled", TType::Bool, 5))?;
o_prot.write_bool(fld_var)?;
o_prot.write_field_end()?;
()
} else {
()
}
if let Some(fld_var) = self.flags {
o_prot.write_field_begin(&TFieldIdentifier::new("flags", TType::I64, 6))?;
o_prot.write_i64(fld_var)?;
o_prot.write_field_end()?;
()
} else {
()
}
if let Some(ref fld_var) = self.baggage_items {
o_prot.write_field_begin(&TFieldIdentifier::new("baggage_items", TType::Map, 7))?;
o_prot.write_map_begin(&TMapIdentifier::new(TType::String, TType::String, fld_var.len() as i32))?;
for (k, v) in fld_var {
o_prot.write_string(k)?;
o_prot.write_string(v)?;
o_prot.write_map_end()?;
}
o_prot.write_field_end()?;
()
} else {
()
}
o_prot.write_field_stop()?;
o_prot.write_struct_end()
}
}
impl Default for SpanContext {
fn default() -> Self {
SpanContext{
trace_id: Some(0),
trace_id_high: Some(0),
span_id: Some(0),
parent_span_id: Some(0),
sampled: Some(false),
flags: Some(0),
baggage_items: Some(BTreeMap::new()),
}
}
}