mirror of
https://gitee.com/TarsCloud/TarsCpp.git
synced 2024-12-22 22:16:38 +08:00
add miss file text_map_carrier.h for tars tracking
This commit is contained in:
parent
13c01023ae
commit
831b21e266
66
servant/servant/text_map_carrier.h
Normal file
66
servant/servant/text_map_carrier.h
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#ifndef LIGHTSTEP_TEXT_MAP_CARRIER
|
||||||
|
#define LIGHTSTEP_TEXT_MAP_CARRIER
|
||||||
|
|
||||||
|
#include <opentracing/propagation.h>
|
||||||
|
#include <string>
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
|
using opentracing::expected;
|
||||||
|
using opentracing::string_view;
|
||||||
|
using opentracing::TextMapReader;
|
||||||
|
using opentracing::TextMapWriter;
|
||||||
|
|
||||||
|
class TextMapCarrier : public TextMapReader, public TextMapWriter {
|
||||||
|
public:
|
||||||
|
TextMapCarrier(std::unordered_map<std::string, std::string> &text_map)
|
||||||
|
: text_map_(text_map) {}
|
||||||
|
|
||||||
|
expected<void> Set(string_view key, string_view value) const override {
|
||||||
|
text_map_[key] = value;
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
expected<void> ForeachKey(
|
||||||
|
std::function<expected<void>(string_view key, string_view value)> f)
|
||||||
|
const override {
|
||||||
|
for (const auto &key_value : text_map_) {
|
||||||
|
auto result = f(key_value.first, key_value.second);
|
||||||
|
if (!result)
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::unordered_map<std::string, std::string> &text_map_;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// span context reader/writer helper
|
||||||
|
|
||||||
|
static std::string read_span_context(std::unordered_map<std::string, std::string> m)
|
||||||
|
{
|
||||||
|
std::string output = "";
|
||||||
|
|
||||||
|
for (auto it = m.cbegin(); it != m.cend(); it++)
|
||||||
|
{
|
||||||
|
output += (it->first) + ":" + it->second + ",";
|
||||||
|
}
|
||||||
|
|
||||||
|
return output.substr(0, output.size() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void write_span_context(std::unordered_map<std::string, std::string> &m, char *context)
|
||||||
|
{
|
||||||
|
char * keypair = strtok(context, ",");
|
||||||
|
while(keypair != NULL)
|
||||||
|
{
|
||||||
|
std::string s(keypair);
|
||||||
|
std::string::size_type found = s.find_first_of(':');
|
||||||
|
m.insert(std::pair<std::string, std::string>(s.substr(0,found),s.substr(found+1)));
|
||||||
|
keypair =strtok(NULL, ",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // LIGHTSTEP_TEXT_MAP_CARRIER
|
Loading…
Reference in New Issue
Block a user