Skip to content

Commit

Permalink
Merge pull request #22 from Tianlin-Zhao/origin/w3ctest
Browse files Browse the repository at this point in the history
format
  • Loading branch information
Tianlin-Zhao authored Aug 11, 2020
2 parents d95f29e + 7a9e9ba commit fa90b35
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 135 deletions.
205 changes: 103 additions & 102 deletions api/include/opentelemetry/trace/propagation/http_trace_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -156,20 +156,20 @@ class HttpTraceContext : public HTTPTextFormat<T>
}
}

// static void InjectTraceState(TraceState trace_state, T &carrier, Setter setter)
// {
// std::string trace_state_string = "";
// nostd::span<TraceState::Entries> entries = trace_state.Entries();
// TraceState::Entry *entry = entries.data();
// while (entry != entries.end())
// {
// if (entry != entries.begin())
// trace_state_string += ",";
// trace_state_string += std::string(entry->GetKey()) + "=" + std::string(entry->GetValue());
// entry++;
// }
// setter(carrier, kTraceState, trace_state_string);
// }
// static void InjectTraceState(TraceState trace_state, T &carrier, Setter setter)
// {
// std::string trace_state_string = "";
// nostd::span<TraceState::Entries> entries = trace_state.Entries();
// TraceState::Entry *entry = entries.data();
// while (entry != entries.end())
// {
// if (entry != entries.begin())
// trace_state_string += ",";
// trace_state_string += std::string(entry->GetKey()) + "=" + std::string(entry->GetValue());
// entry++;
// }
// setter(carrier, kTraceState, trace_state_string);
// }

static void InjectTraceParent(const SpanContext &span_context, T &carrier, Setter setter)
{
Expand Down Expand Up @@ -201,10 +201,10 @@ class HttpTraceContext : public HTTPTextFormat<T>
static void InjectImpl(Setter setter, T &carrier, const SpanContext &span_context)
{
InjectTraceParent(span_context, carrier, setter);
// if (!span_context.trace_state().empty())
// {
// InjectTraceState(span_context.trace_state(), carrier, setter);
// }
// if (!span_context.trace_state().empty())
// {
// InjectTraceState(span_context.trace_state(), carrier, setter);
// }
}

static SpanContext ExtractContextFromTraceParent(nostd::string_view trace_parent)
Expand Down Expand Up @@ -285,7 +285,7 @@ class HttpTraceContext : public HTTPTextFormat<T>
SpanId span_id_obj = GenerateSpanIdFromString(span_id);
TraceFlags trace_flags_obj = GenerateTraceFlagsFromString(trace_flags);
return SpanContext(trace_id_obj, span_id_obj, trace_flags_obj, true);
// return SpanContext(trace_id_obj, span_id_obj, trace_flags_obj, TraceState(), true);
// return SpanContext(trace_id_obj, span_id_obj, trace_flags_obj, TraceState(), true);
}
else
{
Expand All @@ -294,76 +294,76 @@ class HttpTraceContext : public HTTPTextFormat<T>
}
}

// static TraceState ExtractTraceState(nostd::string_view &trace_state_header)
// {
// TraceState trace_state = TraceState();
// int start_pos = -1;
// int end_pos = -1;
// int ctr_pos = -1;
// int element_num = 0;
// nostd::string_view key;
// nostd::string_view val;
// for (int i = 0; i < int(trace_state_header.length()); i++)
// {
// if (trace_state_header[i] == '\t')
// continue;
// else if (trace_state_header[i] == ',')
// {
// if (start_pos == -1 && end_pos == -1)
// continue;
// element_num++;
// if (ctr_pos != -1)
// {
// key = trace_state_header.substr(start_pos, ctr_pos - start_pos + 1);
// val = trace_state_header.substr(ctr_pos + 1, end_pos - ctr_pos);
// if (key != "")
// trace_state.Set(key, val);
// }
// ctr_pos = -1;
// end_pos = -1;
// start_pos = -1;
// }
// else if (trace_state_header[i] == '=')
// {
// ctr_pos = i;
// }
// else
// {
// end_pos = i;
// if (start_pos == -1)
// start_pos = i;
// }
// }
// if (start_pos != -1 && end_pos != -1)
// {
// if (ctr_pos != -1)
// {
// key = trace_state_header.substr(start_pos, ctr_pos - start_pos + 1);
// val = trace_state_header.substr(ctr_pos + 1, end_pos - ctr_pos);
// if (key != "")
// trace_state.Set(key, val);
// }
// element_num++;
// }
//
// if (element_num >= kTraceStateMaxMembers)
// {
// return TraceState(); // too many k-v pairs will result in an invalid trace state
// }
// return trace_state;
// }
//
// static void AddNewMember(TraceState &trace_state, nostd::string_view member)
// {
// for (int i = 0; i < int(member.length()); i++)
// {
// if (member[i] == '=')
// {
// trace_state.Set(member.substr(0, i), member.substr(i + 1, member.length() - i - 1));
// return;
// }
// }
// }
// static TraceState ExtractTraceState(nostd::string_view &trace_state_header)
// {
// TraceState trace_state = TraceState();
// int start_pos = -1;
// int end_pos = -1;
// int ctr_pos = -1;
// int element_num = 0;
// nostd::string_view key;
// nostd::string_view val;
// for (int i = 0; i < int(trace_state_header.length()); i++)
// {
// if (trace_state_header[i] == '\t')
// continue;
// else if (trace_state_header[i] == ',')
// {
// if (start_pos == -1 && end_pos == -1)
// continue;
// element_num++;
// if (ctr_pos != -1)
// {
// key = trace_state_header.substr(start_pos, ctr_pos - start_pos + 1);
// val = trace_state_header.substr(ctr_pos + 1, end_pos - ctr_pos);
// if (key != "")
// trace_state.Set(key, val);
// }
// ctr_pos = -1;
// end_pos = -1;
// start_pos = -1;
// }
// else if (trace_state_header[i] == '=')
// {
// ctr_pos = i;
// }
// else
// {
// end_pos = i;
// if (start_pos == -1)
// start_pos = i;
// }
// }
// if (start_pos != -1 && end_pos != -1)
// {
// if (ctr_pos != -1)
// {
// key = trace_state_header.substr(start_pos, ctr_pos - start_pos + 1);
// val = trace_state_header.substr(ctr_pos + 1, end_pos - ctr_pos);
// if (key != "")
// trace_state.Set(key, val);
// }
// element_num++;
// }
//
// if (element_num >= kTraceStateMaxMembers)
// {
// return TraceState(); // too many k-v pairs will result in an invalid trace state
// }
// return trace_state;
// }
//
// static void AddNewMember(TraceState &trace_state, nostd::string_view member)
// {
// for (int i = 0; i < int(member.length()); i++)
// {
// if (member[i] == '=')
// {
// trace_state.Set(member.substr(0, i), member.substr(i + 1, member.length() - i - 1));
// return;
// }
// }
// }

static SpanContext ExtractImpl(Getter getter, const T &carrier)
{
Expand All @@ -373,21 +373,22 @@ class HttpTraceContext : public HTTPTextFormat<T>
return SpanContext(false, false);
}
SpanContext context_from_parent_header = ExtractContextFromTraceParent(trace_parent);
// if (!context_from_parent_header.IsValid())
// {
// if (!context_from_parent_header.IsValid())
// {
return context_from_parent_header;
// }
// }

// nostd::string_view trace_state_header = getter(carrier, kTraceState);
//
// if (trace_state_header == "" || trace_state_header.empty())
// {
// return context_from_parent_header;
// }
//
// TraceState trace_state = ExtractTraceState(trace_state_header);
// return SpanContext(context_from_parent_header.trace_id(), context_from_parent_header.span_id(),
// context_from_parent_header.trace_flags(), trace_state, true);
// nostd::string_view trace_state_header = getter(carrier, kTraceState);
//
// if (trace_state_header == "" || trace_state_header.empty())
// {
// return context_from_parent_header;
// }
//
// TraceState trace_state = ExtractTraceState(trace_state_header);
// return SpanContext(context_from_parent_header.trace_id(),
// context_from_parent_header.span_id(),
// context_from_parent_header.trace_flags(), trace_state, true);
}
};
} // namespace propagation
Expand Down
28 changes: 12 additions & 16 deletions api/include/opentelemetry/trace/span_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,52 +32,48 @@ class SpanContext final
// An invalid SpanContext.
SpanContext() noexcept
: trace_flags_(trace::TraceFlags((uint8_t) false)),
// trace_state_(new TraceState),
// trace_state_(new TraceState),
remote_parent_(false){};

SpanContext(bool sampled_flag, bool has_remote_parent) noexcept
: trace_flags_(trace::TraceFlags((uint8_t)sampled_flag)),
// trace_state_(new TraceState),
// trace_state_(new TraceState),
remote_parent_(has_remote_parent){};
SpanContext(TraceId trace_id,
SpanId span_id,
TraceFlags trace_flags,
// TraceState trace_state,
// TraceState trace_state,
bool has_remote_parent) noexcept
{
trace_id_ = trace_id;
span_id_ = span_id;
trace_flags_ = trace_flags;
// trace_state_.reset(new TraceState(trace_state));
// trace_state_.reset(new TraceState(trace_state));
remote_parent_ = has_remote_parent;
}
SpanContext(SpanContext &&ctx)
: trace_id_(ctx.trace_id()),
span_id_(ctx.span_id()),
trace_flags_(ctx.trace_flags())
// trace_state_(std::move(ctx.trace_state_))
: trace_id_(ctx.trace_id()), span_id_(ctx.span_id()), trace_flags_(ctx.trace_flags())
// trace_state_(std::move(ctx.trace_state_))
{}
SpanContext(const SpanContext &ctx)
: trace_id_(ctx.trace_id()),
span_id_(ctx.span_id()),
trace_flags_(ctx.trace_flags())
// trace_state_(new TraceState(ctx.trace_state()))
: trace_id_(ctx.trace_id()), span_id_(ctx.span_id()), trace_flags_(ctx.trace_flags())
// trace_state_(new TraceState(ctx.trace_state()))
{}

SpanContext &operator=(const SpanContext &ctx)
{
trace_id_ = ctx.trace_id_;
span_id_ = ctx.span_id_;
trace_flags_ = ctx.trace_flags_;
// trace_state_.reset(new TraceState(*(ctx.trace_state_.get())));
// trace_state_.reset(new TraceState(*(ctx.trace_state_.get())));
return *this;
};
SpanContext &operator=(SpanContext &&ctx)
{
trace_id_ = ctx.trace_id_;
span_id_ = ctx.span_id_;
trace_flags_ = ctx.trace_flags_;
// trace_state_.reset(new TraceState(*(ctx.trace_state_.get())));
// trace_state_.reset(new TraceState(*(ctx.trace_state_.get())));
return *this;
};
// TODO
Expand All @@ -88,7 +84,7 @@ class SpanContext final
const TraceId &trace_id() const noexcept { return trace_id_; }
const SpanId &span_id() const noexcept { return span_id_; }
const TraceFlags &trace_flags() const noexcept { return trace_flags_; }
// const TraceState &trace_state() const noexcept { return *trace_state_; }
// const TraceState &trace_state() const noexcept { return *trace_state_; }

bool IsValid() const noexcept { return trace_id_.IsValid() && span_id_.IsValid(); }

Expand All @@ -102,7 +98,7 @@ class SpanContext final
TraceId trace_id_;
SpanId span_id_;
TraceFlags trace_flags_;
// nostd::unique_ptr<TraceState> trace_state_; // Never nullptr.
// nostd::unique_ptr<TraceState> trace_state_; // Never nullptr.
bool remote_parent_ = false;
};

Expand Down
15 changes: 8 additions & 7 deletions api/include/opentelemetry/trace/trace_state.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,22 @@
//#include "opentelemetry/nostd/string_view.h"
//#include "opentelemetry/nostd/unique_ptr.h"
//
//OPENTELEMETRY_BEGIN_NAMESPACE
//namespace trace
// OPENTELEMETRY_BEGIN_NAMESPACE
// namespace trace
//{
//
///**
// * TraceState carries tracing-system specific context in a list of key-value pairs. TraceState
// * allows different vendors to propagate additional information and inter-operate with their legacy
// * allows different vendors to propagate additional information and inter-operate with their
// legacy
// * id formats.
// *
// * For more information, see the W3C Trace Context specification:
// * https://www.w3.org/TR/trace-context
// */
//class TraceState
// class TraceState
//{
//public:
// public:
// static constexpr int kKeyMaxSize = 256;
// static constexpr int kValueMaxSize = 256;
// static constexpr int kMaxKeyValuePairs = 32;
Expand Down Expand Up @@ -83,7 +84,7 @@
// // Returns whether value is a valid value. See https://www.w3.org/TR/trace-context/#value
// static bool IsValidValue(nostd::string_view value);
//
//private:
// private:
// // Store entries in a C-style array to avoid using std::array or std::vector.
// Entry entries_[kMaxKeyValuePairs];
//
Expand All @@ -92,4 +93,4 @@
//};
//
//} // namespace trace
//OPENTELEMETRY_END_NAMESPACE
// OPENTELEMETRY_END_NAMESPACE
Loading

0 comments on commit fa90b35

Please sign in to comment.