Go to the documentation of this file.
31 #include "absl/status/status.h"
32 #include "absl/strings/str_cat.h"
33 #include "absl/strings/string_view.h"
34 #include "absl/time/clock.h"
35 #include "absl/time/time.h"
36 #include "absl/types/optional.h"
37 #include "opencensus/stats/stats.h"
38 #include "opencensus/tags/tag_key.h"
39 #include "opencensus/tags/tag_map.h"
40 #include "opencensus/trace/span.h"
41 #include "opencensus/trace/span_context.h"
42 #include "opencensus/trace/status_code.h"
86 if (
op->
op()->send_initial_metadata) {
102 parent_context.
tags());
109 bool is_transparent_retry,
bool arena_allocated)
111 arena_allocated_(arena_allocated),
122 char tracing_buf[kMaxTraceContextLen];
124 kMaxTraceContextLen);
125 if (tracing_len > 0) {
133 if (encoded_tags_len > 0) {
141 ++sent_message_count_;
146 ++recv_message_count_;
156 reinterpret_cast<const char*
>(grpc_server_stats_bin->
data()),
157 grpc_server_stats_bin->
size(), elapsed_time);
167 status_code_ =
status.code();
168 if (recv_trailing_metadata ==
nullptr || transport_stream_stats ==
nullptr) {
172 FilterTrailingMetadata(recv_trailing_metadata, &elapsed_time);
173 std::vector<std::pair<opencensus::tags::TagKey, std::string>>
tags =
178 ::opencensus::stats::Record(
197 std::vector<std::pair<opencensus::tags::TagKey, std::string>>
tags =
201 ::opencensus::stats::Record(
212 if (--
parent_->num_active_rpcs_ == 0) {
215 if (arena_allocated_) {
233 std::vector<std::pair<opencensus::tags::TagKey, std::string>>
tags =
236 ::opencensus::stats::Record(
247 (parent_context ==
nullptr) ?
nullptr : parent_context);
255 bool is_first_attempt =
true;
259 if (transparent_retries_ != 0 || retries_ != 0) {
260 is_first_attempt =
false;
261 if (num_active_rpcs_ == 0) {
262 retry_delay_ +=
absl::Now() - time_at_last_attempt_end_;
265 attempt_num = retries_;
266 if (is_transparent_retry) {
267 ++transparent_retries_;
273 if (is_first_attempt) {
275 this, attempt_num, is_transparent_retry,
true );
278 this, attempt_num, is_transparent_retry,
false );
OpenCensusCallAttemptTracer(OpenCensusCallTracer *parent, uint64_t attempt_num, bool is_transparent_retry, bool arena_allocated)
void RecordReceivedMessage(const grpc_core::SliceBuffer &) override
const grpc_slice & grpc_slice_ref_internal(const grpc_slice &slice)
std::string StrCat(const AlphaNum &a, const AlphaNum &b)
MeasureInt64 RpcClientRetriesPerCall()
#define GPR_DEBUG_ASSERT(x)
@ GRPC_CONTEXT_CALL_TRACER
Value is a CallTracer object.
MeasureDouble RpcClientReceivedBytesPerRpc()
ABSL_NAMESPACE_BEGIN std::string StatusCodeToString(StatusCode code)
static constexpr uint32_t kMaxTagsLen
constexpr Duration Nanoseconds(T n)
static constexpr uint32_t kMaxTraceContextLen
OpenCensusCallTracer(const grpc_call_element_args *args)
grpc_transport_one_way_stats outgoing
::opencensus::tags::TagKey ClientMethodTagKey()
OpenCensusCallTracer * tracer_
void RecordSendInitialMetadata(grpc_metadata_batch *send_initial_metadata, uint32_t) override
MeasureDouble RpcClientRetryDelayPerCall()
grpc_core::ScopedArenaPtr arena
void RecordReceivedTrailingMetadata(absl::Status status, grpc_metadata_batch *recv_trailing_metadata, const grpc_transport_stream_stats *transport_stream_stats) override
::opencensus::trace::SpanContext Context() const
bool tags[kAvailableTags]
void RecordSendMessage(const grpc_core::SliceBuffer &) override
A C++ wrapper for the grpc_transport_stream_op_batch struct.
MeasureInt64 RpcClientReceivedMessagesPerRpc()
absl::string_view method_
size_t ServerStatsDeserialize(const char *buf, size_t buf_size, uint64_t *server_elapsed_time)
constexpr bool has_value() const noexcept
grpc_error_handle Init(grpc_call_element *, const grpc_call_element_args *args) override
Initializes the call data.
MeasureDouble RpcClientRoundtripLatency()
static Slice FromCopiedBuffer(const char *p, size_t len)
MeasureDouble RpcClientServerLatency()
double ToDoubleMilliseconds(Duration d)
size_t TraceContextSerialize(const ::opencensus::trace::SpanContext &context, char *tracing_buf, size_t tracing_buf_size)
~OpenCensusCallTracer() override
unsigned __int64 uint64_t
OpenCensusCallAttemptTracer * StartNewAttempt(bool is_transparent_retry) override
const uint8_t * data() const
GPRAPI grpc_slice grpc_empty_slice(void)
void GenerateClientContext(absl::string_view method, CensusContext *ctxt, CensusContext *parent_ctxt)
absl::string_view StatusCodeToString(grpc_status_code code)
void grpc_call_next_op(grpc_call_element *elem, grpc_transport_stream_op_batch *op)
absl::string_view GetMethod(const grpc_core::Slice &path)
@ GRPC_CONTEXT_TRACING
Value is a census_context.
MeasureDouble RpcClientSentBytesPerRpc()
void RecordEnd(const gpr_timespec &) override
grpc_transport_one_way_stats incoming
void StartTransportStreamOpBatch(grpc_call_element *elem, TransportStreamOpBatch *op) override
Starts a new stream operation.
MeasureInt64 RpcClientSentMessagesPerRpc()
ABSL_NAMESPACE_BEGIN Time Now()
::opencensus::tags::TagKey ClientStatusTagKey()
MeasureInt64 RpcClientTransparentRetriesPerCall()
#define GRPC_ERROR_UNREF(err)
const grpc_call_context_element * call_context_
grpc::ClientContext context
const ::opencensus::tags::TagMap & tags() const
size_t StatsContextSerialize(size_t, grpc_slice *)
const ::opencensus::trace::Span & Span() const
RefCountedPtr< GrpcLb > parent_
void AddSpanAttribute(absl::string_view key, opencensus::trace::AttributeValueRef attribute)
static void send_initial_metadata(void)
void RecordCancel(grpc_error_handle cancel_error) override
grpc_core::Arena * arena_
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:55