Go to the documentation of this file.
23 #include "absl/base/thread_annotations.h"
24 #include "absl/time/time.h"
25 #include "absl/types/optional.h"
54 namespace experimental {
56 using ::grpc_event_engine::experimental::EventEngine;
75 reinterpret_cast<const char*
>(
slice.begin()),
slice.size(),
81 const auto* duration_proto =
83 if (duration_proto !=
nullptr) {
120 ByteBuffer response_buffer(&response_slice, 1);
129 if (cancelled_)
return false;
171 : min_report_duration_(
options.min_report_duration) {
173 "/xds.service.orca.v3.OpenRcaService/StreamCoreMetrics",
184 cpu_utilization_ = cpu_utilization;
185 response_slice_.reset();
190 cpu_utilization_ = -1;
191 response_slice_.reset();
196 memory_utilization_ = memory_utilization;
197 response_slice_.reset();
202 memory_utilization_ = -1;
203 response_slice_.reset();
209 response_slice_.reset();
214 named_utilization_.erase(
name);
215 response_slice_.reset();
219 std::map<std::string, double> named_utilization) {
221 named_utilization_ =
std::move(named_utilization);
222 response_slice_.reset();
227 if (!response_slice_.has_value()) {
231 if (cpu_utilization_ != -1) {
235 if (memory_utilization_ != -1) {
237 memory_utilization_);
239 for (
const auto& p : named_utilization_) {
243 p.second,
arena.ptr());
248 response_slice_.emplace(
buf, buf_length);
250 return Slice(*response_slice_);
void DeleteCpuUtilization()
const absl::Duration min_report_duration_
bool ok() const
Is the status OK?
void DeleteNamedUtilization(const std::string &name)
void Swap(ByteBuffer *other)
Swap the state of *this and *other.
bool MaybeScheduleTimer()
void SetAllNamedUtilization(std::map< std::string, double > named_utilization)
void SetNamedUtilization(std::string name, double utilization)
virtual TaskHandle RunAfter(Duration when, Closure *closure)=0
grpc::internal::Mutex timer_mu_
grpc_core::ScopedArenaPtr arena
void DeleteMemoryUtilization()
void StartWrite(const ByteBuffer *resp)
constexpr Duration Milliseconds(T n)
Server side rpc method class.
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
constexpr bool has_value() const noexcept
struct xds_data_orca_v3_OrcaLoadReport xds_data_orca_v3_OrcaLoadReport
void SetMemoryUtilization(double memory_utilization)
UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_set_cpu_utilization(xds_data_orca_v3_OrcaLoadReport *msg, double value)
UPB_INLINE xds_service_orca_v3_OrcaLoadReportRequest * xds_service_orca_v3_OrcaLoadReportRequest_parse(const char *buf, size_t size, upb_Arena *arena)
void SetCpuUtilization(double cpu_utilization)
absl::optional< EventEngine::TaskHandle > timer_handle_
static Duration FromSecondsAndNanoseconds(int64_t seconds, int32_t nanos)
UPB_INLINE int32_t google_protobuf_Duration_nanos(const google_protobuf_Duration *msg)
Slice GetOrCreateSerializedResponse()
void Clear()
Remove all data.
UPB_INLINE int64_t google_protobuf_Duration_seconds(const google_protobuf_Duration *msg)
grpc::internal::Mutex mu_
Status DumpToSingleSlice(Slice *slice) const
Dump (read) the buffer contents into slics.
UPB_INLINE char * xds_data_orca_v3_OrcaLoadReport_serialize(const xds_data_orca_v3_OrcaLoadReport *msg, upb_Arena *arena, size_t *len)
OrcaService(Options options)
static constexpr Duration Milliseconds(int64_t millis)
struct xds_service_orca_v3_OrcaLoadReportRequest xds_service_orca_v3_OrcaLoadReportRequest
void MarkMethodCallback(int index, internal::MethodHandler *handler)
grpc_core::ExecCtx exec_ctx
grpc_core::Duration report_interval_
ABSL_ATTRIBUTE_REINITIALIZES void reset() noexcept
UPB_INLINE upb_StringView upb_StringView_FromDataAndSize(const char *data, size_t size)
GRPC_CUSTOM_UTIL_STATUS Status
UPB_INLINE const struct google_protobuf_Duration * xds_service_orca_v3_OrcaLoadReportRequest_report_interval(const xds_service_orca_v3_OrcaLoadReportRequest *msg)
EventEngine * GetDefaultEventEngine()
void Finish(grpc::Status s) ABSL_LOCKS_EXCLUDED(writer_mu_)
Reactor(OrcaService *service, const ByteBuffer *request_buffer)
PreBindBacklog backlog_ ABSL_GUARDED_BY(writer_mu_)
void AddMethod(internal::RpcServiceMethod *method)
UPB_INLINE xds_data_orca_v3_OrcaLoadReport * xds_data_orca_v3_OrcaLoadReport_new(upb_Arena *arena)
UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_set_mem_utilization(xds_data_orca_v3_OrcaLoadReport *msg, double value)
__attribute__((deprecated("Please use GRPCProtoMethod."))) @interface ProtoMethod NSString * service
void OnWriteDone(bool ok) override
RefCounted(const RefCounted &)=delete
UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_utilization_set(xds_data_orca_v3_OrcaLoadReport *msg, upb_StringView key, double val, upb_Arena *a)
ServerWriteReactor is the interface for a server-streaming RPC.
RefCountedPtr< Reactor > Ref() GRPC_MUST_USE_RESULT
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:36