30 string sourceLocation;
34 : operation{std::move(op)}, sourceLocation{std::move(sourceLoc)} {}
37 : operation{std::move(rhs.operation)}, sourceLocation{std::move(rhs.sourceLocation)} {}
40 auto tie = [](
const OperationContext& oc) {
return std::tie(oc.operation, oc.sourceLocation); };
41 return tie(*
this) < tie(rhs);
44 operation = std::move(rhs.operation);
45 sourceLocation = std::move(rhs.sourceLocation);
54 : type{std::move(type)},
55 operationContext{std::move(opContext)},
56 message{std::move(message)},
57 serverReply{std::move(serverReply)} {}
59 : type{std::move(rhs.type)},
60 operationContext{std::move(rhs.operationContext)},
61 message{std::move(rhs.message)},
62 serverReply{std::move(rhs.serverReply)} {}
65 type = std::move(rhs.type);
66 operationContext = std::move(rhs.operationContext);
67 message = std::move(rhs.message);
68 serverReply = std::move(rhs.serverReply);
75 std::string serverReply;
85 bool isSuccess =
false;
86 bool uploadNotDownload =
false;
87 int64_t transferStartTime = 0;
88 int64_t totalDurationMs = -1;
89 int64_t transferDurationMs = -1;
90 size_t transferOffset = 0;
91 size_t transferRequestSize = 0;
92 size_t transferSize = 0;
93 size_t retryCount = 0;
94 size_t errorCount = 0;
95 size_t error429Count = 0;
104 uploadNotDownload =
true;
108 uploadNotDownload =
false;
113 totalDurationMs = durationMs;
116 TrafficEvent& setTransferDurationMs(int64_t aTransferDurationMs) {
117 transferDurationMs = aTransferDurationMs;
121 transferOffset = offset;
124 TrafficEvent& setTransferRequestSize(
size_t aTransferRequestSize) {
125 transferRequestSize = aTransferRequestSize;
129 transferSize = aTransferSize;
133 retryCount = aRetryCount;
136 TrafficEvent& setError429Count(
size_t anError429Count) {
137 error429Count = anError429Count;
141 errorCount = anErrorCount;
160 static constexpr const char* kErrorType =
"error";
161 static constexpr const char* kWarningType =
"warning";
162 static constexpr const char* kInfoType =
"info";
167 static void setLogger(std::unique_ptr<TelemetryLogger> telemetryLogger =
nullptr);
172 const string& message,
173 const string& serverMessage = {}) {
174 getInstance()->
logEvent(
LogEvent(kErrorType, operationContext, message, serverMessage));
176 static inline void warning(
177 const OperationContext& operationContext,
178 const string& message,
179 const string& serverMessage = {}) {
180 getInstance()->
logEvent(LogEvent(kWarningType, operationContext, message, serverMessage));
182 static inline void info(
183 const OperationContext& operationContext,
184 const string& message,
185 const string& serverMessage = {}) {
186 getInstance()->
logEvent(LogEvent(kInfoType, operationContext, message, serverMessage));
188 static inline void event(
189 const std::string& eventType,
190 const OperationContext& operationContext,
191 const string& message,
192 const string& serverMessage = {}) {
193 getInstance()->
logEvent(LogEvent(eventType, operationContext, message, serverMessage));
195 static inline void traffic(
const OperationContext& operationContext,
const TrafficEvent& event) {
196 getInstance()->logTraffic(operationContext, event);
198 static inline void flush() {
199 getInstance()->flushEvents();
203 virtual void logEvent(LogEvent&& event);
204 virtual void logTraffic(
const OperationContext& operationContext,
const TrafficEvent& event);
205 virtual void flushEvents() {}
215 static std::atomic<TelemetryLogger*>& getCurrentLogger();
218 return getCurrentLogger().load(std::memory_order_relaxed);
TelemetryLogger to report important events.
Definition TelemetryLogger.h:156
virtual void start()
Start telemetry: background threads should be started, as needed.
Definition TelemetryLogger.h:208
virtual void stop()
Definition TelemetryLogger.h:211
static void setLogger(std::unique_ptr< TelemetryLogger > telemetryLogger=nullptr)
Definition TelemetryLogger.cpp:42
virtual void logEvent(LogEvent &&event)
Actual methods that implement the behaviors.
Definition TelemetryLogger.cpp:59
static void error(const OperationContext &operationContext, const string &message, const string &serverMessage={})
methods for clients to use without having to get an instance, etc
Definition TelemetryLogger.h:170
Definition AsyncDiskFileChunk.hpp:49
General purpose telemetry event.
Definition TelemetryLogger.h:51
Context description for telemetry events.
Definition TelemetryLogger.h:28
Telemetry event specialized to report cloud traffic.
Definition TelemetryLogger.h:84