Go to the documentation of this file.
28 #include "absl/memory/memory.h"
29 #include "absl/status/status.h"
30 #include "absl/status/statusor.h"
31 #include "absl/strings/string_view.h"
51 class HealthStreamEventHandler
52 :
public SubchannelStreamClient::CallEventHandler {
54 HealthStreamEventHandler(
56 RefCountedPtr<channelz::SubchannelNode> channelz_node,
57 RefCountedPtr<ConnectivityStateWatcherInterface>
watcher)
62 Slice GetPathLocked()
override {
66 void OnCallStartLocked(SubchannelStreamClient*
client)
override {
68 "starting health watch");
71 void OnRetryTimerStartLocked(SubchannelStreamClient*
client)
override {
73 "health check call failed; will retry after backoff");
76 grpc_slice EncodeSendMessageLocked()
override {
85 request_struct,
arena.ptr(), &buf_length);
92 SubchannelStreamClient*
client,
94 auto healthy = DecodeResponse(serialized_message);
97 healthy.status().ToString().c_str());
98 return healthy.status();
102 "backend unhealthy");
109 void RecvTrailingMetadataReadyLocked(SubchannelStreamClient*
client,
113 "health checking Watch method returned UNIMPLEMENTED; "
114 "disabling health checks but assuming server is healthy";
132 serialized_message.
data(), serialized_message.
size(),
arena.ptr());
141 void SetHealthStatusLocked(SubchannelStreamClient*
client,
143 const char* reason) {
155 RefCountedPtr<ConnectivityStateWatcherInterface>
watcher_;
166 return MakeOrphanable<SubchannelStreamClient>(
167 std::move(connected_subchannel), interested_parties,
168 absl::make_unique<HealthStreamEventHandler>(
std::move(service_name),
172 ?
"HealthCheckClient"
Status InvalidArgumentError(absl::string_view message)
RefCountedPtr< channelz::SubchannelNode > channelz_node_
OrphanablePtr< SubchannelStreamClient > MakeHealthCheckClient(std::string service_name, RefCountedPtr< ConnectedSubchannel > connected_subchannel, grpc_pollset_set *interested_parties, RefCountedPtr< channelz::SubchannelNode > channelz_node, RefCountedPtr< ConnectivityStateWatcherInterface > watcher)
UPB_INLINE grpc_health_v1_HealthCheckRequest * grpc_health_v1_HealthCheckRequest_new(upb_Arena *arena)
struct grpc_pollset_set grpc_pollset_set
static Slice FromStaticString(const char *s)
#define GRPC_SLICE_MALLOC(len)
@ GRPC_CHANNEL_TRANSIENT_FAILURE
#define GRPC_TRACE_FLAG_ENABLED(f)
UPB_INLINE char * grpc_health_v1_HealthCheckRequest_serialize(const grpc_health_v1_HealthCheckRequest *msg, upb_Arena *arena, size_t *len)
grpc_core::ScopedArenaPtr arena
@ grpc_health_v1_HealthCheckResponse_SERVING
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
UPB_INLINE grpc_health_v1_HealthCheckResponse * grpc_health_v1_HealthCheckResponse_parse(const char *buf, size_t size, upb_Arena *arena)
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
TraceFlag grpc_health_check_client_trace(false, "health_check_client")
constexpr size_type size() const noexcept
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
std::string service_name_
#define GRPC_SLICE_START_PTR(slice)
GPRAPI grpc_slice grpc_slice_from_static_string(const char *source)
RefCountedPtr< ConnectivityStateWatcherInterface > watcher_
@ GRPC_CHANNEL_CONNECTING
const char * ConnectivityStateName(grpc_connectivity_state state)
constexpr const char * kErrorMessage
UPB_INLINE int32_t grpc_health_v1_HealthCheckResponse_status(const grpc_health_v1_HealthCheckResponse *msg)
std::unique_ptr< T, Deleter > OrphanablePtr
UPB_INLINE upb_StringView upb_StringView_FromDataAndSize(const char *data, size_t size)
UPB_INLINE void grpc_health_v1_HealthCheckRequest_set_service(grpc_health_v1_HealthCheckRequest *msg, upb_StringView value)
Status UnavailableError(absl::string_view message)
struct grpc_health_v1_HealthCheckRequest grpc_health_v1_HealthCheckRequest
@ GRPC_STATUS_UNIMPLEMENTED
constexpr const_pointer data() const noexcept
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:01