MCPcopy Create free account
hub / github.com/apache/brpc / CreateBthreadSpan

Method CreateBthreadSpan

src/brpc/span.cpp:243–284  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

241}
242
243std::shared_ptr<Span> Span::CreateBthreadSpan(const std::string& full_method_name,
244 int64_t base_real_us) {
245 std::shared_ptr<Span> parent = Span::tls_parent();
246 Span* span_raw = butil::get_object<Span>(Forbidden());
247 if (__builtin_expect(span_raw == NULL, 0)) {
248 return nullptr;
249 }
250 std::shared_ptr<Span> span(span_raw, SpanDeleter());
251 span->_log_id = 0;
252 span->_base_cid = INVALID_BTHREAD_ID;
253 span->_ending_tid = INVALID_BTHREAD; // Bthread Span uses ending_tid
254 span->_type = SPAN_TYPE_BTHREAD;
255 span->_async = false;
256 span->_protocol = PROTOCOL_UNKNOWN;
257 span->_error_code = 0;
258 span->_request_size = 0;
259 span->_response_size = 0;
260 span->_base_real_us = base_real_us;
261 span->_received_real_us = 0;
262 span->_start_parse_real_us = 0;
263 span->_start_callback_real_us = 0;
264 span->_start_send_real_us = 0;
265 span->_sent_real_us = 0;
266 span->_full_method_name = full_method_name;
267 span->_info.clear();
268
269 if (parent) {
270 span->_trace_id = parent->trace_id();
271 span->_parent_span_id = parent->span_id();
272 span->_local_parent = parent;
273 {
274 BAIDU_SCOPED_LOCK(parent->_client_list_spinlock);
275 parent->_client_list.push_back(span);
276 }
277 } else {
278 span->_trace_id = GenerateTraceId();
279 span->_parent_span_id = 0;
280 }
281
282 span->_span_id = GenerateSpanId();
283 return span;
284}
285
286inline const std::string& unknown_span_name() {
287 // thread-safe in gcc.

Callers

nothing calls this directly

Calls 8

SpanDeleterClass · 0.85
GenerateTraceIdFunction · 0.85
GenerateSpanIdFunction · 0.85
ForbiddenClass · 0.70
clearMethod · 0.45
trace_idMethod · 0.45
span_idMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected