open_census_call_tracer.h
Go to the documentation of this file.
1 //
2 //
3 // Copyright 2021 gRPC authors.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 //
18 
19 #ifndef GRPC_INTERNAL_CPP_EXT_FILTERS_OPEN_CENSUS_CALL_TRACER_H
20 #define GRPC_INTERNAL_CPP_EXT_FILTERS_OPEN_CENSUS_CALL_TRACER_H
21 
23 
24 #include <stdint.h>
25 
26 #include "absl/base/thread_annotations.h"
27 #include "absl/status/status.h"
28 #include "absl/strings/string_view.h"
29 #include "absl/time/time.h"
30 
32 #include <grpc/support/atm.h>
33 
45 
46 namespace grpc {
47 
49  public:
51  public:
53  uint64_t attempt_num, bool is_transparent_retry,
54  bool arena_allocated);
56  uint32_t /*flags*/) override;
57  void RecordOnDoneSendInitialMetadata(gpr_atm* /*peer_string*/) override {}
59  grpc_metadata_batch* /*send_trailing_metadata*/) override {}
60  void RecordSendMessage(
61  const grpc_core::SliceBuffer& /*send_message*/) override;
63  grpc_metadata_batch* /*recv_initial_metadata*/,
64  uint32_t /*flags*/) override {}
66  const grpc_core::SliceBuffer& /*recv_message*/) override;
68  absl::Status status, grpc_metadata_batch* recv_trailing_metadata,
69  const grpc_transport_stream_stats* transport_stream_stats) override;
70  void RecordCancel(grpc_error_handle cancel_error) override;
71  void RecordEnd(const gpr_timespec& /*latency*/) override;
72 
73  CensusContext* context() { return &context_; }
74 
75  private:
76  // Maximum size of trace context is sent on the wire.
77  static constexpr uint32_t kMaxTraceContextLen = 64;
78  // Maximum size of tags that are sent on the wire.
79  static constexpr uint32_t kMaxTagsLen = 2048;
81  const bool arena_allocated_;
83  // Start time (for measuring latency).
85  // Number of messages in this RPC.
88  // End status code
90  };
91 
93  ~OpenCensusCallTracer() override;
94 
95  void GenerateContext();
97  bool is_transparent_retry) override;
98 
99  private:
101  // Client method.
107  // Non-transparent attempts per call
108  uint64_t retries_ ABSL_GUARDED_BY(&mu_) = 0;
109  // Transparent retries per call
110  uint64_t transparent_retries_ ABSL_GUARDED_BY(&mu_) = 0;
111  // Retry delay
113  absl::Time time_at_last_attempt_end_ ABSL_GUARDED_BY(&mu_);
114  uint64_t num_active_rpcs_ ABSL_GUARDED_BY(&mu_) = 0;
115 };
116 
117 }; // namespace grpc
118 
119 #endif // GRPC_INTERNAL_CPP_EXT_FILTERS_OPEN_CENSUS_CALL_TRACER_H
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::OpenCensusCallAttemptTracer
OpenCensusCallAttemptTracer(OpenCensusCallTracer *parent, uint64_t attempt_num, bool is_transparent_retry, bool arena_allocated)
Definition: client_filter.cc:107
slice.h
grpc::status
auto status
Definition: cpp/client/credentials_test.cc:200
metadata_batch.h
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::RecordReceivedMessage
void RecordReceivedMessage(const grpc_core::SliceBuffer &) override
Definition: client_filter.cc:144
absl::Time
Definition: third_party/abseil-cpp/absl/time/time.h:642
grpc
Definition: grpcpp/alarm.h:33
grpc_core::Slice
Definition: src/core/lib/slice/slice.h:282
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::kMaxTagsLen
static constexpr uint32_t kMaxTagsLen
Definition: open_census_call_tracer.h:79
absl::string_view
Definition: abseil-cpp/absl/strings/string_view.h:167
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::kMaxTraceContextLen
static constexpr uint32_t kMaxTraceContextLen
Definition: open_census_call_tracer.h:77
grpc::OpenCensusCallTracer::OpenCensusCallTracer
OpenCensusCallTracer(const grpc_call_element_args *args)
Definition: client_filter.cc:226
arena.h
ABSL_GUARDED_BY
#define ABSL_GUARDED_BY(x)
Definition: abseil-cpp/absl/base/thread_annotations.h:62
grpc_core::CallTracer
Definition: call_tracer.h:41
grpc::CensusContext
Definition: cpp/ext/filters/census/context.h:44
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::RecordSendInitialMetadata
void RecordSendInitialMetadata(grpc_metadata_batch *send_initial_metadata, uint32_t) override
Definition: client_filter.cc:120
grpc_core::Arena
Definition: src/core/lib/resource_quota/arena.h:45
grpc_core::CallTracer::CallAttemptTracer
Definition: call_tracer.h:47
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::RecordReceivedTrailingMetadata
void RecordReceivedTrailingMetadata(absl::Status status, grpc_metadata_batch *recv_trailing_metadata, const grpc_transport_stream_stats *transport_stream_stats) override
Definition: client_filter.cc:164
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::RecordSendMessage
void RecordSendMessage(const grpc_core::SliceBuffer &) override
Definition: client_filter.cc:139
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::parent_
OpenCensusCallTracer * parent_
Definition: open_census_call_tracer.h:80
grpc::OpenCensusCallTracer::GenerateContext
void GenerateContext()
Definition: client_filter.cc:243
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::RecordSendTrailingMetadata
void RecordSendTrailingMetadata(grpc_metadata_batch *) override
Definition: open_census_call_tracer.h:58
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::RecordOnDoneSendInitialMetadata
void RecordOnDoneSendInitialMetadata(gpr_atm *) override
Definition: open_census_call_tracer.h:57
context.h
grpc::OpenCensusCallTracer::method_
absl::string_view method_
Definition: open_census_call_tracer.h:103
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
channel_stack.h
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::context
CensusContext * context()
Definition: open_census_call_tracer.h:73
grpc::OpenCensusCallTracer::~OpenCensusCallTracer
~OpenCensusCallTracer() override
Definition: client_filter.cc:232
uint64_t
unsigned __int64 uint64_t
Definition: stdint-msvc2008.h:90
grpc::OpenCensusCallTracer::StartNewAttempt
OpenCensusCallAttemptTracer * StartNewAttempt(bool is_transparent_retry) override
Definition: client_filter.cc:251
absl::Duration
Definition: third_party/abseil-cpp/absl/time/time.h:159
error.h
grpc_call_element_args
Definition: channel_stack.h:80
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::recv_message_count_
uint64_t recv_message_count_
Definition: open_census_call_tracer.h:86
call_tracer.h
stdint.h
gpr_types.h
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::RecordEnd
void RecordEnd(const gpr_timespec &) override
Definition: client_filter.cc:194
grpc::OpenCensusCallTracer
Definition: open_census_call_tracer.h:48
gpr_atm
intptr_t gpr_atm
Definition: impl/codegen/atm_gcc_atomic.h:32
grpc_core::Mutex
Definition: src/core/lib/gprpp/sync.h:61
grpc::OpenCensusCallTracer::context_
CensusContext context_
Definition: open_census_call_tracer.h:104
grpc_core::SliceBuffer
Definition: src/core/lib/slice/slice_buffer.h:44
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::start_time_
absl::Time start_time_
Definition: open_census_call_tracer.h:84
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::status_code_
absl::StatusCode status_code_
Definition: open_census_call_tracer.h:89
absl::StatusCode
StatusCode
Definition: third_party/abseil-cpp/absl/status/status.h:92
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::RecordReceivedInitialMetadata
void RecordReceivedInitialMetadata(grpc_metadata_batch *, uint32_t) override
Definition: open_census_call_tracer.h:62
grpc_transport_stream_stats
Definition: transport.h:249
absl::Status
Definition: third_party/abseil-cpp/absl/status/status.h:424
grpc_call_context_element
Definition: core/lib/channel/context.h:51
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::context_
CensusContext context_
Definition: open_census_call_tracer.h:82
transport.h
grpc::OpenCensusCallTracer::call_context_
const grpc_call_context_element * call_context_
Definition: open_census_call_tracer.h:100
atm.h
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer
Definition: open_census_call_tracer.h:50
gpr_timespec
Definition: gpr_types.h:50
grpc_error
Definition: error_internal.h:42
grpc_metadata_batch
Definition: metadata_batch.h:1259
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::sent_message_count_
uint64_t sent_message_count_
Definition: open_census_call_tracer.h:87
slice_buffer.h
send_initial_metadata
static void send_initial_metadata(void)
Definition: test/core/fling/server.cc:121
grpc::OpenCensusCallTracer::mu_
grpc_core::Mutex mu_
Definition: open_census_call_tracer.h:106
sync.h
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::RecordCancel
void RecordCancel(grpc_error_handle cancel_error) override
Definition: client_filter.cc:188
grpc::OpenCensusCallTracer::OpenCensusCallAttemptTracer::arena_allocated_
const bool arena_allocated_
Definition: open_census_call_tracer.h:81
context.h
grpc::OpenCensusCallTracer::path_
grpc_core::Slice path_
Definition: open_census_call_tracer.h:102
grpc::OpenCensusCallTracer::arena_
grpc_core::Arena * arena_
Definition: open_census_call_tracer.h:105
port_platform.h


grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:35