VOL-4032: gRPC Streams for Events, Metrics
Change-Id: Iff813c7e701490833b8585a6c5516348000e541f
diff --git a/VERSION b/VERSION
index 930e300..a551051 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.14.1
+0.15.0
diff --git a/cpp/dmi/hw_events_mgmt_service.grpc.pb.cc b/cpp/dmi/hw_events_mgmt_service.grpc.pb.cc
index 450a295..7168f79 100644
--- a/cpp/dmi/hw_events_mgmt_service.grpc.pb.cc
+++ b/cpp/dmi/hw_events_mgmt_service.grpc.pb.cc
@@ -24,6 +24,7 @@
static const char* NativeEventsManagementService_method_names[] = {
"/dmi.NativeEventsManagementService/ListEvents",
"/dmi.NativeEventsManagementService/UpdateEventsConfiguration",
+ "/dmi.NativeEventsManagementService/StreamEvents",
};
std::unique_ptr< NativeEventsManagementService::Stub> NativeEventsManagementService::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) {
@@ -35,6 +36,7 @@
NativeEventsManagementService::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel)
: channel_(channel), rpcmethod_ListEvents_(NativeEventsManagementService_method_names[0], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
, rpcmethod_UpdateEventsConfiguration_(NativeEventsManagementService_method_names[1], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
+ , rpcmethod_StreamEvents_(NativeEventsManagementService_method_names[2], ::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
{}
::grpc::Status NativeEventsManagementService::Stub::ListEvents(::grpc::ClientContext* context, const ::dmi::HardwareID& request, ::dmi::ListEventsResponse* response) {
@@ -93,6 +95,22 @@
return ::grpc_impl::internal::ClientAsyncResponseReaderFactory< ::dmi::EventsConfigurationResponse>::Create(channel_.get(), cq, rpcmethod_UpdateEventsConfiguration_, context, request, false);
}
+::grpc::ClientReader< ::dmi::Event>* NativeEventsManagementService::Stub::StreamEventsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request) {
+ return ::grpc_impl::internal::ClientReaderFactory< ::dmi::Event>::Create(channel_.get(), rpcmethod_StreamEvents_, context, request);
+}
+
+void NativeEventsManagementService::Stub::experimental_async::StreamEvents(::grpc::ClientContext* context, ::google::protobuf::Empty* request, ::grpc::experimental::ClientReadReactor< ::dmi::Event>* reactor) {
+ ::grpc_impl::internal::ClientCallbackReaderFactory< ::dmi::Event>::Create(stub_->channel_.get(), stub_->rpcmethod_StreamEvents_, context, request, reactor);
+}
+
+::grpc::ClientAsyncReader< ::dmi::Event>* NativeEventsManagementService::Stub::AsyncStreamEventsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq, void* tag) {
+ return ::grpc_impl::internal::ClientAsyncReaderFactory< ::dmi::Event>::Create(channel_.get(), cq, rpcmethod_StreamEvents_, context, request, true, tag);
+}
+
+::grpc::ClientAsyncReader< ::dmi::Event>* NativeEventsManagementService::Stub::PrepareAsyncStreamEventsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) {
+ return ::grpc_impl::internal::ClientAsyncReaderFactory< ::dmi::Event>::Create(channel_.get(), cq, rpcmethod_StreamEvents_, context, request, false, nullptr);
+}
+
NativeEventsManagementService::Service::Service() {
AddMethod(new ::grpc::internal::RpcServiceMethod(
NativeEventsManagementService_method_names[0],
@@ -114,6 +132,16 @@
::dmi::EventsConfigurationResponse* resp) {
return service->UpdateEventsConfiguration(ctx, req, resp);
}, this)));
+ AddMethod(new ::grpc::internal::RpcServiceMethod(
+ NativeEventsManagementService_method_names[2],
+ ::grpc::internal::RpcMethod::SERVER_STREAMING,
+ new ::grpc::internal::ServerStreamingHandler< NativeEventsManagementService::Service, ::google::protobuf::Empty, ::dmi::Event>(
+ [](NativeEventsManagementService::Service* service,
+ ::grpc_impl::ServerContext* ctx,
+ const ::google::protobuf::Empty* req,
+ ::grpc_impl::ServerWriter<::dmi::Event>* writer) {
+ return service->StreamEvents(ctx, req, writer);
+ }, this)));
}
NativeEventsManagementService::Service::~Service() {
@@ -133,6 +161,13 @@
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}
+::grpc::Status NativeEventsManagementService::Service::StreamEvents(::grpc::ServerContext* context, const ::google::protobuf::Empty* request, ::grpc::ServerWriter< ::dmi::Event>* writer) {
+ (void) context;
+ (void) request;
+ (void) writer;
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+}
+
} // namespace dmi
diff --git a/cpp/dmi/hw_events_mgmt_service.grpc.pb.h b/cpp/dmi/hw_events_mgmt_service.grpc.pb.h
index b6877d1..d247295 100644
--- a/cpp/dmi/hw_events_mgmt_service.grpc.pb.h
+++ b/cpp/dmi/hw_events_mgmt_service.grpc.pb.h
@@ -54,6 +54,16 @@
std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::EventsConfigurationResponse>> PrepareAsyncUpdateEventsConfiguration(::grpc::ClientContext* context, const ::dmi::EventsConfigurationRequest& request, ::grpc::CompletionQueue* cq) {
return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::EventsConfigurationResponse>>(PrepareAsyncUpdateEventsConfigurationRaw(context, request, cq));
}
+ // Initiate the server streaming of the events
+ std::unique_ptr< ::grpc::ClientReaderInterface< ::dmi::Event>> StreamEvents(::grpc::ClientContext* context, const ::google::protobuf::Empty& request) {
+ return std::unique_ptr< ::grpc::ClientReaderInterface< ::dmi::Event>>(StreamEventsRaw(context, request));
+ }
+ std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::dmi::Event>> AsyncStreamEvents(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq, void* tag) {
+ return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::dmi::Event>>(AsyncStreamEventsRaw(context, request, cq, tag));
+ }
+ std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::dmi::Event>> PrepareAsyncStreamEvents(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) {
+ return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::dmi::Event>>(PrepareAsyncStreamEventsRaw(context, request, cq));
+ }
class experimental_async_interface {
public:
virtual ~experimental_async_interface() {}
@@ -85,6 +95,12 @@
#else
virtual void UpdateEventsConfiguration(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::EventsConfigurationResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0;
#endif
+ // Initiate the server streaming of the events
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ virtual void StreamEvents(::grpc::ClientContext* context, ::google::protobuf::Empty* request, ::grpc::ClientReadReactor< ::dmi::Event>* reactor) = 0;
+ #else
+ virtual void StreamEvents(::grpc::ClientContext* context, ::google::protobuf::Empty* request, ::grpc::experimental::ClientReadReactor< ::dmi::Event>* reactor) = 0;
+ #endif
};
#ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
typedef class experimental_async_interface async_interface;
@@ -98,6 +114,9 @@
virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::ListEventsResponse>* PrepareAsyncListEventsRaw(::grpc::ClientContext* context, const ::dmi::HardwareID& request, ::grpc::CompletionQueue* cq) = 0;
virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::EventsConfigurationResponse>* AsyncUpdateEventsConfigurationRaw(::grpc::ClientContext* context, const ::dmi::EventsConfigurationRequest& request, ::grpc::CompletionQueue* cq) = 0;
virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::EventsConfigurationResponse>* PrepareAsyncUpdateEventsConfigurationRaw(::grpc::ClientContext* context, const ::dmi::EventsConfigurationRequest& request, ::grpc::CompletionQueue* cq) = 0;
+ virtual ::grpc::ClientReaderInterface< ::dmi::Event>* StreamEventsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request) = 0;
+ virtual ::grpc::ClientAsyncReaderInterface< ::dmi::Event>* AsyncStreamEventsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
+ virtual ::grpc::ClientAsyncReaderInterface< ::dmi::Event>* PrepareAsyncStreamEventsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) = 0;
};
class Stub final : public StubInterface {
public:
@@ -116,6 +135,15 @@
std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::EventsConfigurationResponse>> PrepareAsyncUpdateEventsConfiguration(::grpc::ClientContext* context, const ::dmi::EventsConfigurationRequest& request, ::grpc::CompletionQueue* cq) {
return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::EventsConfigurationResponse>>(PrepareAsyncUpdateEventsConfigurationRaw(context, request, cq));
}
+ std::unique_ptr< ::grpc::ClientReader< ::dmi::Event>> StreamEvents(::grpc::ClientContext* context, const ::google::protobuf::Empty& request) {
+ return std::unique_ptr< ::grpc::ClientReader< ::dmi::Event>>(StreamEventsRaw(context, request));
+ }
+ std::unique_ptr< ::grpc::ClientAsyncReader< ::dmi::Event>> AsyncStreamEvents(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq, void* tag) {
+ return std::unique_ptr< ::grpc::ClientAsyncReader< ::dmi::Event>>(AsyncStreamEventsRaw(context, request, cq, tag));
+ }
+ std::unique_ptr< ::grpc::ClientAsyncReader< ::dmi::Event>> PrepareAsyncStreamEvents(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) {
+ return std::unique_ptr< ::grpc::ClientAsyncReader< ::dmi::Event>>(PrepareAsyncStreamEventsRaw(context, request, cq));
+ }
class experimental_async final :
public StubInterface::experimental_async_interface {
public:
@@ -143,6 +171,11 @@
#else
void UpdateEventsConfiguration(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::EventsConfigurationResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override;
#endif
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ void StreamEvents(::grpc::ClientContext* context, ::google::protobuf::Empty* request, ::grpc::ClientReadReactor< ::dmi::Event>* reactor) override;
+ #else
+ void StreamEvents(::grpc::ClientContext* context, ::google::protobuf::Empty* request, ::grpc::experimental::ClientReadReactor< ::dmi::Event>* reactor) override;
+ #endif
private:
friend class Stub;
explicit experimental_async(Stub* stub): stub_(stub) { }
@@ -158,8 +191,12 @@
::grpc::ClientAsyncResponseReader< ::dmi::ListEventsResponse>* PrepareAsyncListEventsRaw(::grpc::ClientContext* context, const ::dmi::HardwareID& request, ::grpc::CompletionQueue* cq) override;
::grpc::ClientAsyncResponseReader< ::dmi::EventsConfigurationResponse>* AsyncUpdateEventsConfigurationRaw(::grpc::ClientContext* context, const ::dmi::EventsConfigurationRequest& request, ::grpc::CompletionQueue* cq) override;
::grpc::ClientAsyncResponseReader< ::dmi::EventsConfigurationResponse>* PrepareAsyncUpdateEventsConfigurationRaw(::grpc::ClientContext* context, const ::dmi::EventsConfigurationRequest& request, ::grpc::CompletionQueue* cq) override;
+ ::grpc::ClientReader< ::dmi::Event>* StreamEventsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request) override;
+ ::grpc::ClientAsyncReader< ::dmi::Event>* AsyncStreamEventsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq, void* tag) override;
+ ::grpc::ClientAsyncReader< ::dmi::Event>* PrepareAsyncStreamEventsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) override;
const ::grpc::internal::RpcMethod rpcmethod_ListEvents_;
const ::grpc::internal::RpcMethod rpcmethod_UpdateEventsConfiguration_;
+ const ::grpc::internal::RpcMethod rpcmethod_StreamEvents_;
};
static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
@@ -173,6 +210,8 @@
// The default behavior of the device is to report all the supported events
// This configuration is persisted across reboots of the device or the device manager
virtual ::grpc::Status UpdateEventsConfiguration(::grpc::ServerContext* context, const ::dmi::EventsConfigurationRequest* request, ::dmi::EventsConfigurationResponse* response);
+ // Initiate the server streaming of the events
+ virtual ::grpc::Status StreamEvents(::grpc::ServerContext* context, const ::google::protobuf::Empty* request, ::grpc::ServerWriter< ::dmi::Event>* writer);
};
template <class BaseClass>
class WithAsyncMethod_ListEvents : public BaseClass {
@@ -214,7 +253,27 @@
::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag);
}
};
- typedef WithAsyncMethod_ListEvents<WithAsyncMethod_UpdateEventsConfiguration<Service > > AsyncService;
+ template <class BaseClass>
+ class WithAsyncMethod_StreamEvents : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ WithAsyncMethod_StreamEvents() {
+ ::grpc::Service::MarkMethodAsync(2);
+ }
+ ~WithAsyncMethod_StreamEvents() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status StreamEvents(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Event>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ void RequestStreamEvents(::grpc::ServerContext* context, ::google::protobuf::Empty* request, ::grpc::ServerAsyncWriter< ::dmi::Event>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+ ::grpc::Service::RequestAsyncServerStreaming(2, context, request, writer, new_call_cq, notification_cq, tag);
+ }
+ };
+ typedef WithAsyncMethod_ListEvents<WithAsyncMethod_UpdateEventsConfiguration<WithAsyncMethod_StreamEvents<Service > > > AsyncService;
template <class BaseClass>
class ExperimentalWithCallbackMethod_ListEvents : public BaseClass {
private:
@@ -309,11 +368,49 @@
#endif
{ return nullptr; }
};
+ template <class BaseClass>
+ class ExperimentalWithCallbackMethod_StreamEvents : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ ExperimentalWithCallbackMethod_StreamEvents() {
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ ::grpc::Service::
+ #else
+ ::grpc::Service::experimental().
+ #endif
+ MarkMethodCallback(2,
+ new ::grpc_impl::internal::CallbackServerStreamingHandler< ::google::protobuf::Empty, ::dmi::Event>(
+ [this](
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ ::grpc::CallbackServerContext*
+ #else
+ ::grpc::experimental::CallbackServerContext*
+ #endif
+ context, const ::google::protobuf::Empty* request) { return this->StreamEvents(context, request); }));
+ }
+ ~ExperimentalWithCallbackMethod_StreamEvents() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status StreamEvents(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Event>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ virtual ::grpc::ServerWriteReactor< ::dmi::Event>* StreamEvents(
+ ::grpc::CallbackServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/)
+ #else
+ virtual ::grpc::experimental::ServerWriteReactor< ::dmi::Event>* StreamEvents(
+ ::grpc::experimental::CallbackServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/)
+ #endif
+ { return nullptr; }
+ };
#ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
- typedef ExperimentalWithCallbackMethod_ListEvents<ExperimentalWithCallbackMethod_UpdateEventsConfiguration<Service > > CallbackService;
+ typedef ExperimentalWithCallbackMethod_ListEvents<ExperimentalWithCallbackMethod_UpdateEventsConfiguration<ExperimentalWithCallbackMethod_StreamEvents<Service > > > CallbackService;
#endif
- typedef ExperimentalWithCallbackMethod_ListEvents<ExperimentalWithCallbackMethod_UpdateEventsConfiguration<Service > > ExperimentalCallbackService;
+ typedef ExperimentalWithCallbackMethod_ListEvents<ExperimentalWithCallbackMethod_UpdateEventsConfiguration<ExperimentalWithCallbackMethod_StreamEvents<Service > > > ExperimentalCallbackService;
template <class BaseClass>
class WithGenericMethod_ListEvents : public BaseClass {
private:
@@ -349,6 +446,23 @@
}
};
template <class BaseClass>
+ class WithGenericMethod_StreamEvents : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ WithGenericMethod_StreamEvents() {
+ ::grpc::Service::MarkMethodGeneric(2);
+ }
+ ~WithGenericMethod_StreamEvents() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status StreamEvents(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Event>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ };
+ template <class BaseClass>
class WithRawMethod_ListEvents : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
@@ -389,6 +503,26 @@
}
};
template <class BaseClass>
+ class WithRawMethod_StreamEvents : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ WithRawMethod_StreamEvents() {
+ ::grpc::Service::MarkMethodRaw(2);
+ }
+ ~WithRawMethod_StreamEvents() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status StreamEvents(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Event>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ void RequestStreamEvents(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+ ::grpc::Service::RequestAsyncServerStreaming(2, context, request, writer, new_call_cq, notification_cq, tag);
+ }
+ };
+ template <class BaseClass>
class ExperimentalWithRawCallbackMethod_ListEvents : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
@@ -465,6 +599,44 @@
{ return nullptr; }
};
template <class BaseClass>
+ class ExperimentalWithRawCallbackMethod_StreamEvents : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ ExperimentalWithRawCallbackMethod_StreamEvents() {
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ ::grpc::Service::
+ #else
+ ::grpc::Service::experimental().
+ #endif
+ MarkMethodRawCallback(2,
+ new ::grpc_impl::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
+ [this](
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ ::grpc::CallbackServerContext*
+ #else
+ ::grpc::experimental::CallbackServerContext*
+ #endif
+ context, const::grpc::ByteBuffer* request) { return this->StreamEvents(context, request); }));
+ }
+ ~ExperimentalWithRawCallbackMethod_StreamEvents() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status StreamEvents(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Event>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* StreamEvents(
+ ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)
+ #else
+ virtual ::grpc::experimental::ServerWriteReactor< ::grpc::ByteBuffer>* StreamEvents(
+ ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)
+ #endif
+ { return nullptr; }
+ };
+ template <class BaseClass>
class WithStreamedUnaryMethod_ListEvents : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
@@ -519,8 +691,35 @@
virtual ::grpc::Status StreamedUpdateEventsConfiguration(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::dmi::EventsConfigurationRequest,::dmi::EventsConfigurationResponse>* server_unary_streamer) = 0;
};
typedef WithStreamedUnaryMethod_ListEvents<WithStreamedUnaryMethod_UpdateEventsConfiguration<Service > > StreamedUnaryService;
- typedef Service SplitStreamedService;
- typedef WithStreamedUnaryMethod_ListEvents<WithStreamedUnaryMethod_UpdateEventsConfiguration<Service > > StreamedService;
+ template <class BaseClass>
+ class WithSplitStreamingMethod_StreamEvents : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ WithSplitStreamingMethod_StreamEvents() {
+ ::grpc::Service::MarkMethodStreamed(2,
+ new ::grpc::internal::SplitServerStreamingHandler<
+ ::google::protobuf::Empty, ::dmi::Event>(
+ [this](::grpc_impl::ServerContext* context,
+ ::grpc_impl::ServerSplitStreamer<
+ ::google::protobuf::Empty, ::dmi::Event>* streamer) {
+ return this->StreamedStreamEvents(context,
+ streamer);
+ }));
+ }
+ ~WithSplitStreamingMethod_StreamEvents() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable regular version of this method
+ ::grpc::Status StreamEvents(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Event>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ // replace default version of method with split streamed
+ virtual ::grpc::Status StreamedStreamEvents(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::google::protobuf::Empty,::dmi::Event>* server_split_streamer) = 0;
+ };
+ typedef WithSplitStreamingMethod_StreamEvents<Service > SplitStreamedService;
+ typedef WithStreamedUnaryMethod_ListEvents<WithStreamedUnaryMethod_UpdateEventsConfiguration<WithSplitStreamingMethod_StreamEvents<Service > > > StreamedService;
};
} // namespace dmi
diff --git a/cpp/dmi/hw_events_mgmt_service.pb.cc b/cpp/dmi/hw_events_mgmt_service.pb.cc
index 4f856f0..28a38bc 100644
--- a/cpp/dmi/hw_events_mgmt_service.pb.cc
+++ b/cpp/dmi/hw_events_mgmt_service.pb.cc
@@ -391,112 +391,115 @@
const char descriptor_table_protodef_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[] =
"\n dmi/hw_events_mgmt_service.proto\022\003dmi\032"
"\021dmi/commons.proto\032\014dmi/hw.proto\032\037google"
- "/protobuf/timestamp.proto\"N\n\tValueType\022\021"
- "\n\007int_val\030\001 \001(\003H\000\022\022\n\010uint_val\030\002 \001(\004H\000\022\023\n"
- "\tfloat_val\030\003 \001(\002H\000B\005\n\003val\"G\n\nWaterMarks\022"
- "\034\n\004high\030\001 \001(\0132\016.dmi.ValueType\022\033\n\003low\030\002 \001"
- "(\0132\016.dmi.ValueType\"]\n\nThresholds\022 \n\005uppe"
- "r\030\001 \001(\0132\017.dmi.WaterMarksH\000\022 \n\005lower\030\002 \001("
- "\0132\017.dmi.WaterMarksH\000B\013\n\tthreshold\"c\n\024Thr"
- "esholdInformation\022&\n\016observed_value\030\001 \001("
- "\0132\016.dmi.ValueType\022#\n\nthresholds\030\002 \001(\0132\017."
- "dmi.Thresholds\"g\n\010EventCfg\022\037\n\010event_id\030\001"
- " \001(\0162\r.dmi.EventIds\022\025\n\ris_configured\030\002 \001"
- "(\010\022#\n\nthresholds\030\003 \001(\0132\017.dmi.Thresholds\""
- ")\n\tEventsCfg\022\034\n\005items\030\001 \003(\0132\r.dmi.EventC"
- "fg\"\370\001\n\022ListEventsResponse\022\033\n\006status\030\001 \001("
- "\0162\013.dmi.Status\022.\n\006reason\030\002 \001(\0162\036.dmi.Lis"
- "tEventsResponse.Reason\022\036\n\006events\030\003 \001(\0132\016"
- ".dmi.EventsCfg\022\025\n\rreason_detail\030\004 \001(\t\"^\n"
- "\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016UNKNOWN"
- "_DEVICE\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\026\n\022DEVICE_"
- "UNREACHABLE\020\003\"\210\001\n\032EventsConfigurationReq"
- "uest\022\036\n\013device_uuid\030\001 \001(\0132\t.dmi.Uuid\022!\n\007"
- "changes\030\002 \001(\0132\016.dmi.EventsCfgH\000\022\032\n\020reset"
- "_to_default\030\003 \001(\010H\000B\013\n\toperation\"\376\001\n\033Eve"
- "ntsConfigurationResponse\022\033\n\006status\030\001 \001(\016"
- "2\013.dmi.Status\0227\n\006reason\030\002 \001(\0162\'.dmi.Even"
- "tsConfigurationResponse.Reason\022\025\n\rreason"
- "_detail\030\003 \001(\t\"r\n\006Reason\022\024\n\020UNDEFINED_REA"
- "SON\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\022\n\016INTERNAL_ER"
- "ROR\020\002\022\022\n\016INVALID_CONFIG\020\003\022\026\n\022DEVICE_UNRE"
- "ACHABLE\020\004\"j\n\rEventMetaData\022\036\n\013device_uui"
- "d\030\001 \001(\0132\t.dmi.Uuid\022!\n\016component_uuid\030\002 \001"
- "(\0132\t.dmi.Uuid\022\026\n\016component_name\030\003 \001(\t\"\310\001"
- "\n\005Event\022*\n\016event_metadata\030\001 \001(\0132\022.dmi.Ev"
- "entMetaData\022\037\n\010event_id\030\002 \001(\0162\r.dmi.Even"
- "tIds\022-\n\traised_ts\030\003 \001(\0132\032.google.protobu"
- "f.Timestamp\0221\n\016threshold_info\030\004 \001(\0132\031.dm"
- "i.ThresholdInformation\022\020\n\010add_info\030\005 \001(\t"
- "*\321\016\n\010EventIds\022\030\n\024EVENT_NAME_UNDEFINED\020\000\022"
- "\036\n\032EVENT_TRANSCEIVER_PLUG_OUT\020d\022\035\n\031EVENT"
- "_TRANSCEIVER_PLUG_IN\020e\022-\n)EVENT_TRANSCEI"
- "VER_VOLTAGE_ABOVE_THRESHOLD\020f\022-\n)EVENT_T"
- "RANSCEIVER_VOLTAGE_BELOW_THRESHOLD\020g\0221\n-"
- "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRE"
- "SHOLD\020h\0221\n-EVENT_TRANSCEIVER_TEMPERATURE"
- "_BELOW_THRESHOLD\020i\022-\n)EVENT_TRANSCEIVER_"
- "CURRENT_ABOVE_THRESHOLD\020j\022-\n)EVENT_TRANS"
- "CEIVER_CURRENT_BELOW_THRESHOLD\020k\022.\n*EVEN"
- "T_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD\020l"
- "\022.\n*EVENT_TRANSCEIVER_RX_POWER_BELOW_THR"
- "ESHOLD\020m\022.\n*EVENT_TRANSCEIVER_TX_POWER_A"
- "BOVE_THRESHOLD\020n\022.\n*EVENT_TRANSCEIVER_TX"
- "_POWER_BELOW_THRESHOLD\020o\022\035\n\031EVENT_TRANSC"
- "EIVER_FAILURE\020p\0227\n3EVENT_TRANSCEIVER_VOL"
- "TAGE_ABOVE_THRESHOLD_RECOVERED\020q\0227\n3EVEN"
- "T_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RE"
- "COVERED\020r\022;\n7EVENT_TRANSCEIVER_TEMPERATU"
- "RE_ABOVE_THRESHOLD_RECOVERED\020s\022;\n7EVENT_"
- "TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_"
- "RECOVERED\020t\0227\n3EVENT_TRANSCEIVER_CURRENT"
- "_ABOVE_THRESHOLD_RECOVERED\020u\0227\n3EVENT_TR"
- "ANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVE"
- "RED\020v\0228\n4EVENT_TRANSCEIVER_RX_POWER_ABOV"
- "E_THRESHOLD_RECOVERED\020w\0228\n4EVENT_TRANSCE"
- "IVER_RX_POWER_BELOW_THRESHOLD_RECOVERED\020"
- "x\0228\n4EVENT_TRANSCEIVER_TX_POWER_ABOVE_TH"
- "RESHOLD_RECOVERED\020y\0228\n4EVENT_TRANSCEIVER"
- "_TX_POWER_BELOW_THRESHOLD_RECOVERED\020z\022\'\n"
- "#EVENT_TRANSCEIVER_FAILURE_RECOVERED\020{\022\027"
- "\n\022EVENT_PSU_PLUG_OUT\020\310\001\022\026\n\021EVENT_PSU_PLU"
- "G_IN\020\311\001\022\026\n\021EVENT_PSU_FAILURE\020\312\001\022 \n\033EVENT"
- "_PSU_FAILURE_RECOVERED\020\313\001\022\026\n\021EVENT_FAN_F"
- "AILURE\020\254\002\022\027\n\022EVENT_FAN_PLUG_OUT\020\255\002\022\026\n\021EV"
- "ENT_FAN_PLUG_IN\020\256\002\022 \n\033EVENT_FAN_FAILURE_"
- "RECOVERED\020\257\002\022)\n$EVENT_CPU_TEMPERATURE_AB"
- "OVE_CRITICAL\020\220\003\022&\n!EVENT_CPU_TEMPERATURE"
- "_ABOVE_FATAL\020\221\003\0223\n.EVENT_CPU_TEMPERATURE"
- "_ABOVE_CRITICAL_RECOVERED\020\222\003\0220\n+EVENT_CP"
- "U_TEMPERATURE_ABOVE_FATAL_RECOVERED\020\223\003\022\032"
- "\n\025EVENT_HW_DEVICE_RESET\020\364\003\022/\n*EVENT_HW_D"
- "EVICE_TEMPERATURE_ABOVE_CRITICAL\020\365\003\022,\n\'E"
- "VENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL\020\366"
- "\003\0229\n4EVENT_HW_DEVICE_TEMPERATURE_ABOVE_C"
- "RITICAL_RECOVERED\020\367\003\0226\n1EVENT_HW_DEVICE_"
- "TEMPERATURE_ABOVE_FATAL_RECOVERED\020\370\0032\267\001\n"
- "\035NativeEventsManagementService\0226\n\nListEv"
- "ents\022\017.dmi.HardwareID\032\027.dmi.ListEventsRe"
- "sponse\022^\n\031UpdateEventsConfiguration\022\037.dm"
- "i.EventsConfigurationRequest\032 .dmi.Event"
- "sConfigurationResponseB;Z9github.com/ope"
- "ncord/device-management-interface/v3/go/"
- "dmib\006proto3"
+ "/protobuf/timestamp.proto\032\033google/protob"
+ "uf/empty.proto\"N\n\tValueType\022\021\n\007int_val\030\001"
+ " \001(\003H\000\022\022\n\010uint_val\030\002 \001(\004H\000\022\023\n\tfloat_val\030"
+ "\003 \001(\002H\000B\005\n\003val\"G\n\nWaterMarks\022\034\n\004high\030\001 \001"
+ "(\0132\016.dmi.ValueType\022\033\n\003low\030\002 \001(\0132\016.dmi.Va"
+ "lueType\"]\n\nThresholds\022 \n\005upper\030\001 \001(\0132\017.d"
+ "mi.WaterMarksH\000\022 \n\005lower\030\002 \001(\0132\017.dmi.Wat"
+ "erMarksH\000B\013\n\tthreshold\"c\n\024ThresholdInfor"
+ "mation\022&\n\016observed_value\030\001 \001(\0132\016.dmi.Val"
+ "ueType\022#\n\nthresholds\030\002 \001(\0132\017.dmi.Thresho"
+ "lds\"g\n\010EventCfg\022\037\n\010event_id\030\001 \001(\0162\r.dmi."
+ "EventIds\022\025\n\ris_configured\030\002 \001(\010\022#\n\nthres"
+ "holds\030\003 \001(\0132\017.dmi.Thresholds\")\n\tEventsCf"
+ "g\022\034\n\005items\030\001 \003(\0132\r.dmi.EventCfg\"\370\001\n\022List"
+ "EventsResponse\022\033\n\006status\030\001 \001(\0162\013.dmi.Sta"
+ "tus\022.\n\006reason\030\002 \001(\0162\036.dmi.ListEventsResp"
+ "onse.Reason\022\036\n\006events\030\003 \001(\0132\016.dmi.Events"
+ "Cfg\022\025\n\rreason_detail\030\004 \001(\t\"^\n\006Reason\022\024\n\020"
+ "UNDEFINED_REASON\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\022"
+ "\n\016INTERNAL_ERROR\020\002\022\026\n\022DEVICE_UNREACHABLE"
+ "\020\003\"\210\001\n\032EventsConfigurationRequest\022\036\n\013dev"
+ "ice_uuid\030\001 \001(\0132\t.dmi.Uuid\022!\n\007changes\030\002 \001"
+ "(\0132\016.dmi.EventsCfgH\000\022\032\n\020reset_to_default"
+ "\030\003 \001(\010H\000B\013\n\toperation\"\376\001\n\033EventsConfigur"
+ "ationResponse\022\033\n\006status\030\001 \001(\0162\013.dmi.Stat"
+ "us\0227\n\006reason\030\002 \001(\0162\'.dmi.EventsConfigura"
+ "tionResponse.Reason\022\025\n\rreason_detail\030\003 \001"
+ "(\t\"r\n\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016UN"
+ "KNOWN_DEVICE\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\022\n\016IN"
+ "VALID_CONFIG\020\003\022\026\n\022DEVICE_UNREACHABLE\020\004\"j"
+ "\n\rEventMetaData\022\036\n\013device_uuid\030\001 \001(\0132\t.d"
+ "mi.Uuid\022!\n\016component_uuid\030\002 \001(\0132\t.dmi.Uu"
+ "id\022\026\n\016component_name\030\003 \001(\t\"\310\001\n\005Event\022*\n\016"
+ "event_metadata\030\001 \001(\0132\022.dmi.EventMetaData"
+ "\022\037\n\010event_id\030\002 \001(\0162\r.dmi.EventIds\022-\n\trai"
+ "sed_ts\030\003 \001(\0132\032.google.protobuf.Timestamp"
+ "\0221\n\016threshold_info\030\004 \001(\0132\031.dmi.Threshold"
+ "Information\022\020\n\010add_info\030\005 \001(\t*\321\016\n\010EventI"
+ "ds\022\030\n\024EVENT_NAME_UNDEFINED\020\000\022\036\n\032EVENT_TR"
+ "ANSCEIVER_PLUG_OUT\020d\022\035\n\031EVENT_TRANSCEIVE"
+ "R_PLUG_IN\020e\022-\n)EVENT_TRANSCEIVER_VOLTAGE"
+ "_ABOVE_THRESHOLD\020f\022-\n)EVENT_TRANSCEIVER_"
+ "VOLTAGE_BELOW_THRESHOLD\020g\0221\n-EVENT_TRANS"
+ "CEIVER_TEMPERATURE_ABOVE_THRESHOLD\020h\0221\n-"
+ "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRE"
+ "SHOLD\020i\022-\n)EVENT_TRANSCEIVER_CURRENT_ABO"
+ "VE_THRESHOLD\020j\022-\n)EVENT_TRANSCEIVER_CURR"
+ "ENT_BELOW_THRESHOLD\020k\022.\n*EVENT_TRANSCEIV"
+ "ER_RX_POWER_ABOVE_THRESHOLD\020l\022.\n*EVENT_T"
+ "RANSCEIVER_RX_POWER_BELOW_THRESHOLD\020m\022.\n"
+ "*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESH"
+ "OLD\020n\022.\n*EVENT_TRANSCEIVER_TX_POWER_BELO"
+ "W_THRESHOLD\020o\022\035\n\031EVENT_TRANSCEIVER_FAILU"
+ "RE\020p\0227\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_"
+ "THRESHOLD_RECOVERED\020q\0227\n3EVENT_TRANSCEIV"
+ "ER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\020r\022;"
+ "\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_TH"
+ "RESHOLD_RECOVERED\020s\022;\n7EVENT_TRANSCEIVER"
+ "_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\020t"
+ "\0227\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRE"
+ "SHOLD_RECOVERED\020u\0227\n3EVENT_TRANSCEIVER_C"
+ "URRENT_BELOW_THRESHOLD_RECOVERED\020v\0228\n4EV"
+ "ENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD"
+ "_RECOVERED\020w\0228\n4EVENT_TRANSCEIVER_RX_POW"
+ "ER_BELOW_THRESHOLD_RECOVERED\020x\0228\n4EVENT_"
+ "TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_REC"
+ "OVERED\020y\0228\n4EVENT_TRANSCEIVER_TX_POWER_B"
+ "ELOW_THRESHOLD_RECOVERED\020z\022\'\n#EVENT_TRAN"
+ "SCEIVER_FAILURE_RECOVERED\020{\022\027\n\022EVENT_PSU"
+ "_PLUG_OUT\020\310\001\022\026\n\021EVENT_PSU_PLUG_IN\020\311\001\022\026\n\021"
+ "EVENT_PSU_FAILURE\020\312\001\022 \n\033EVENT_PSU_FAILUR"
+ "E_RECOVERED\020\313\001\022\026\n\021EVENT_FAN_FAILURE\020\254\002\022\027"
+ "\n\022EVENT_FAN_PLUG_OUT\020\255\002\022\026\n\021EVENT_FAN_PLU"
+ "G_IN\020\256\002\022 \n\033EVENT_FAN_FAILURE_RECOVERED\020\257"
+ "\002\022)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICA"
+ "L\020\220\003\022&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATA"
+ "L\020\221\003\0223\n.EVENT_CPU_TEMPERATURE_ABOVE_CRIT"
+ "ICAL_RECOVERED\020\222\003\0220\n+EVENT_CPU_TEMPERATU"
+ "RE_ABOVE_FATAL_RECOVERED\020\223\003\022\032\n\025EVENT_HW_"
+ "DEVICE_RESET\020\364\003\022/\n*EVENT_HW_DEVICE_TEMPE"
+ "RATURE_ABOVE_CRITICAL\020\365\003\022,\n\'EVENT_HW_DEV"
+ "ICE_TEMPERATURE_ABOVE_FATAL\020\366\003\0229\n4EVENT_"
+ "HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_REC"
+ "OVERED\020\367\003\0226\n1EVENT_HW_DEVICE_TEMPERATURE"
+ "_ABOVE_FATAL_RECOVERED\020\370\0032\355\001\n\035NativeEven"
+ "tsManagementService\0226\n\nListEvents\022\017.dmi."
+ "HardwareID\032\027.dmi.ListEventsResponse\022^\n\031U"
+ "pdateEventsConfiguration\022\037.dmi.EventsCon"
+ "figurationRequest\032 .dmi.EventsConfigurat"
+ "ionResponse\0224\n\014StreamEvents\022\026.google.pro"
+ "tobuf.Empty\032\n.dmi.Event0\001B;Z9github.com/"
+ "opencord/device-management-interface/v3/"
+ "go/dmib\006proto3"
;
::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto = {
false, InitDefaults_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto,
descriptor_table_protodef_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto,
- "dmi/hw_events_mgmt_service.proto", &assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 3691,
+ "dmi/hw_events_mgmt_service.proto", &assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 3774,
};
void AddDescriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto() {
- static constexpr ::google::protobuf::internal::InitFunc deps[3] =
+ static constexpr ::google::protobuf::internal::InitFunc deps[4] =
{
::AddDescriptors_dmi_2fcommons_2eproto,
::AddDescriptors_dmi_2fhw_2eproto,
::AddDescriptors_google_2fprotobuf_2ftimestamp_2eproto,
+ ::AddDescriptors_google_2fprotobuf_2fempty_2eproto,
};
- ::google::protobuf::internal::AddDescriptors(&descriptor_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, deps, 3);
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, deps, 4);
}
// Force running AddDescriptors() at dynamic initialization time.
diff --git a/cpp/dmi/hw_events_mgmt_service.pb.h b/cpp/dmi/hw_events_mgmt_service.pb.h
index 472a6a9..4f6cf5a 100644
--- a/cpp/dmi/hw_events_mgmt_service.pb.h
+++ b/cpp/dmi/hw_events_mgmt_service.pb.h
@@ -35,6 +35,7 @@
#include "dmi/commons.pb.h"
#include "dmi/hw.pb.h"
#include <google/protobuf/timestamp.pb.h>
+#include <google/protobuf/empty.pb.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto
diff --git a/cpp/dmi/hw_metrics_mgmt_service.grpc.pb.cc b/cpp/dmi/hw_metrics_mgmt_service.grpc.pb.cc
index 1c674c4..a35f91e 100644
--- a/cpp/dmi/hw_metrics_mgmt_service.grpc.pb.cc
+++ b/cpp/dmi/hw_metrics_mgmt_service.grpc.pb.cc
@@ -25,6 +25,7 @@
"/dmi.NativeMetricsManagementService/ListMetrics",
"/dmi.NativeMetricsManagementService/UpdateMetricsConfiguration",
"/dmi.NativeMetricsManagementService/GetMetric",
+ "/dmi.NativeMetricsManagementService/StreamMetrics",
};
std::unique_ptr< NativeMetricsManagementService::Stub> NativeMetricsManagementService::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) {
@@ -37,6 +38,7 @@
: channel_(channel), rpcmethod_ListMetrics_(NativeMetricsManagementService_method_names[0], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
, rpcmethod_UpdateMetricsConfiguration_(NativeMetricsManagementService_method_names[1], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
, rpcmethod_GetMetric_(NativeMetricsManagementService_method_names[2], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
+ , rpcmethod_StreamMetrics_(NativeMetricsManagementService_method_names[3], ::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
{}
::grpc::Status NativeMetricsManagementService::Stub::ListMetrics(::grpc::ClientContext* context, const ::dmi::HardwareID& request, ::dmi::ListMetricsResponse* response) {
@@ -123,6 +125,22 @@
return ::grpc_impl::internal::ClientAsyncResponseReaderFactory< ::dmi::GetMetricResponse>::Create(channel_.get(), cq, rpcmethod_GetMetric_, context, request, false);
}
+::grpc::ClientReader< ::dmi::Metric>* NativeMetricsManagementService::Stub::StreamMetricsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request) {
+ return ::grpc_impl::internal::ClientReaderFactory< ::dmi::Metric>::Create(channel_.get(), rpcmethod_StreamMetrics_, context, request);
+}
+
+void NativeMetricsManagementService::Stub::experimental_async::StreamMetrics(::grpc::ClientContext* context, ::google::protobuf::Empty* request, ::grpc::experimental::ClientReadReactor< ::dmi::Metric>* reactor) {
+ ::grpc_impl::internal::ClientCallbackReaderFactory< ::dmi::Metric>::Create(stub_->channel_.get(), stub_->rpcmethod_StreamMetrics_, context, request, reactor);
+}
+
+::grpc::ClientAsyncReader< ::dmi::Metric>* NativeMetricsManagementService::Stub::AsyncStreamMetricsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq, void* tag) {
+ return ::grpc_impl::internal::ClientAsyncReaderFactory< ::dmi::Metric>::Create(channel_.get(), cq, rpcmethod_StreamMetrics_, context, request, true, tag);
+}
+
+::grpc::ClientAsyncReader< ::dmi::Metric>* NativeMetricsManagementService::Stub::PrepareAsyncStreamMetricsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) {
+ return ::grpc_impl::internal::ClientAsyncReaderFactory< ::dmi::Metric>::Create(channel_.get(), cq, rpcmethod_StreamMetrics_, context, request, false, nullptr);
+}
+
NativeMetricsManagementService::Service::Service() {
AddMethod(new ::grpc::internal::RpcServiceMethod(
NativeMetricsManagementService_method_names[0],
@@ -154,6 +172,16 @@
::dmi::GetMetricResponse* resp) {
return service->GetMetric(ctx, req, resp);
}, this)));
+ AddMethod(new ::grpc::internal::RpcServiceMethod(
+ NativeMetricsManagementService_method_names[3],
+ ::grpc::internal::RpcMethod::SERVER_STREAMING,
+ new ::grpc::internal::ServerStreamingHandler< NativeMetricsManagementService::Service, ::google::protobuf::Empty, ::dmi::Metric>(
+ [](NativeMetricsManagementService::Service* service,
+ ::grpc_impl::ServerContext* ctx,
+ const ::google::protobuf::Empty* req,
+ ::grpc_impl::ServerWriter<::dmi::Metric>* writer) {
+ return service->StreamMetrics(ctx, req, writer);
+ }, this)));
}
NativeMetricsManagementService::Service::~Service() {
@@ -180,6 +208,13 @@
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}
+::grpc::Status NativeMetricsManagementService::Service::StreamMetrics(::grpc::ServerContext* context, const ::google::protobuf::Empty* request, ::grpc::ServerWriter< ::dmi::Metric>* writer) {
+ (void) context;
+ (void) request;
+ (void) writer;
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+}
+
} // namespace dmi
diff --git a/cpp/dmi/hw_metrics_mgmt_service.grpc.pb.h b/cpp/dmi/hw_metrics_mgmt_service.grpc.pb.h
index 560b350..a96cbd7 100644
--- a/cpp/dmi/hw_metrics_mgmt_service.grpc.pb.h
+++ b/cpp/dmi/hw_metrics_mgmt_service.grpc.pb.h
@@ -66,6 +66,16 @@
std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::GetMetricResponse>> PrepareAsyncGetMetric(::grpc::ClientContext* context, const ::dmi::GetMetricRequest& request, ::grpc::CompletionQueue* cq) {
return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::GetMetricResponse>>(PrepareAsyncGetMetricRaw(context, request, cq));
}
+ // Initiate the server streaming of the metrics
+ std::unique_ptr< ::grpc::ClientReaderInterface< ::dmi::Metric>> StreamMetrics(::grpc::ClientContext* context, const ::google::protobuf::Empty& request) {
+ return std::unique_ptr< ::grpc::ClientReaderInterface< ::dmi::Metric>>(StreamMetricsRaw(context, request));
+ }
+ std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::dmi::Metric>> AsyncStreamMetrics(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq, void* tag) {
+ return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::dmi::Metric>>(AsyncStreamMetricsRaw(context, request, cq, tag));
+ }
+ std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::dmi::Metric>> PrepareAsyncStreamMetrics(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) {
+ return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::dmi::Metric>>(PrepareAsyncStreamMetricsRaw(context, request, cq));
+ }
class experimental_async_interface {
public:
virtual ~experimental_async_interface() {}
@@ -114,6 +124,12 @@
#else
virtual void GetMetric(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::GetMetricResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0;
#endif
+ // Initiate the server streaming of the metrics
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ virtual void StreamMetrics(::grpc::ClientContext* context, ::google::protobuf::Empty* request, ::grpc::ClientReadReactor< ::dmi::Metric>* reactor) = 0;
+ #else
+ virtual void StreamMetrics(::grpc::ClientContext* context, ::google::protobuf::Empty* request, ::grpc::experimental::ClientReadReactor< ::dmi::Metric>* reactor) = 0;
+ #endif
};
#ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
typedef class experimental_async_interface async_interface;
@@ -129,6 +145,9 @@
virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::MetricsConfigurationResponse>* PrepareAsyncUpdateMetricsConfigurationRaw(::grpc::ClientContext* context, const ::dmi::MetricsConfigurationRequest& request, ::grpc::CompletionQueue* cq) = 0;
virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::GetMetricResponse>* AsyncGetMetricRaw(::grpc::ClientContext* context, const ::dmi::GetMetricRequest& request, ::grpc::CompletionQueue* cq) = 0;
virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::GetMetricResponse>* PrepareAsyncGetMetricRaw(::grpc::ClientContext* context, const ::dmi::GetMetricRequest& request, ::grpc::CompletionQueue* cq) = 0;
+ virtual ::grpc::ClientReaderInterface< ::dmi::Metric>* StreamMetricsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request) = 0;
+ virtual ::grpc::ClientAsyncReaderInterface< ::dmi::Metric>* AsyncStreamMetricsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
+ virtual ::grpc::ClientAsyncReaderInterface< ::dmi::Metric>* PrepareAsyncStreamMetricsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) = 0;
};
class Stub final : public StubInterface {
public:
@@ -154,6 +173,15 @@
std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::GetMetricResponse>> PrepareAsyncGetMetric(::grpc::ClientContext* context, const ::dmi::GetMetricRequest& request, ::grpc::CompletionQueue* cq) {
return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::GetMetricResponse>>(PrepareAsyncGetMetricRaw(context, request, cq));
}
+ std::unique_ptr< ::grpc::ClientReader< ::dmi::Metric>> StreamMetrics(::grpc::ClientContext* context, const ::google::protobuf::Empty& request) {
+ return std::unique_ptr< ::grpc::ClientReader< ::dmi::Metric>>(StreamMetricsRaw(context, request));
+ }
+ std::unique_ptr< ::grpc::ClientAsyncReader< ::dmi::Metric>> AsyncStreamMetrics(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq, void* tag) {
+ return std::unique_ptr< ::grpc::ClientAsyncReader< ::dmi::Metric>>(AsyncStreamMetricsRaw(context, request, cq, tag));
+ }
+ std::unique_ptr< ::grpc::ClientAsyncReader< ::dmi::Metric>> PrepareAsyncStreamMetrics(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) {
+ return std::unique_ptr< ::grpc::ClientAsyncReader< ::dmi::Metric>>(PrepareAsyncStreamMetricsRaw(context, request, cq));
+ }
class experimental_async final :
public StubInterface::experimental_async_interface {
public:
@@ -193,6 +221,11 @@
#else
void GetMetric(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::GetMetricResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override;
#endif
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ void StreamMetrics(::grpc::ClientContext* context, ::google::protobuf::Empty* request, ::grpc::ClientReadReactor< ::dmi::Metric>* reactor) override;
+ #else
+ void StreamMetrics(::grpc::ClientContext* context, ::google::protobuf::Empty* request, ::grpc::experimental::ClientReadReactor< ::dmi::Metric>* reactor) override;
+ #endif
private:
friend class Stub;
explicit experimental_async(Stub* stub): stub_(stub) { }
@@ -210,9 +243,13 @@
::grpc::ClientAsyncResponseReader< ::dmi::MetricsConfigurationResponse>* PrepareAsyncUpdateMetricsConfigurationRaw(::grpc::ClientContext* context, const ::dmi::MetricsConfigurationRequest& request, ::grpc::CompletionQueue* cq) override;
::grpc::ClientAsyncResponseReader< ::dmi::GetMetricResponse>* AsyncGetMetricRaw(::grpc::ClientContext* context, const ::dmi::GetMetricRequest& request, ::grpc::CompletionQueue* cq) override;
::grpc::ClientAsyncResponseReader< ::dmi::GetMetricResponse>* PrepareAsyncGetMetricRaw(::grpc::ClientContext* context, const ::dmi::GetMetricRequest& request, ::grpc::CompletionQueue* cq) override;
+ ::grpc::ClientReader< ::dmi::Metric>* StreamMetricsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request) override;
+ ::grpc::ClientAsyncReader< ::dmi::Metric>* AsyncStreamMetricsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq, void* tag) override;
+ ::grpc::ClientAsyncReader< ::dmi::Metric>* PrepareAsyncStreamMetricsRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) override;
const ::grpc::internal::RpcMethod rpcmethod_ListMetrics_;
const ::grpc::internal::RpcMethod rpcmethod_UpdateMetricsConfiguration_;
const ::grpc::internal::RpcMethod rpcmethod_GetMetric_;
+ const ::grpc::internal::RpcMethod rpcmethod_StreamMetrics_;
};
static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
@@ -232,6 +269,8 @@
virtual ::grpc::Status UpdateMetricsConfiguration(::grpc::ServerContext* context, const ::dmi::MetricsConfigurationRequest* request, ::dmi::MetricsConfigurationResponse* response);
// Get the instantenous value of a metric
virtual ::grpc::Status GetMetric(::grpc::ServerContext* context, const ::dmi::GetMetricRequest* request, ::dmi::GetMetricResponse* response);
+ // Initiate the server streaming of the metrics
+ virtual ::grpc::Status StreamMetrics(::grpc::ServerContext* context, const ::google::protobuf::Empty* request, ::grpc::ServerWriter< ::dmi::Metric>* writer);
};
template <class BaseClass>
class WithAsyncMethod_ListMetrics : public BaseClass {
@@ -293,7 +332,27 @@
::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag);
}
};
- typedef WithAsyncMethod_ListMetrics<WithAsyncMethod_UpdateMetricsConfiguration<WithAsyncMethod_GetMetric<Service > > > AsyncService;
+ template <class BaseClass>
+ class WithAsyncMethod_StreamMetrics : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ WithAsyncMethod_StreamMetrics() {
+ ::grpc::Service::MarkMethodAsync(3);
+ }
+ ~WithAsyncMethod_StreamMetrics() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status StreamMetrics(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Metric>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ void RequestStreamMetrics(::grpc::ServerContext* context, ::google::protobuf::Empty* request, ::grpc::ServerAsyncWriter< ::dmi::Metric>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+ ::grpc::Service::RequestAsyncServerStreaming(3, context, request, writer, new_call_cq, notification_cq, tag);
+ }
+ };
+ typedef WithAsyncMethod_ListMetrics<WithAsyncMethod_UpdateMetricsConfiguration<WithAsyncMethod_GetMetric<WithAsyncMethod_StreamMetrics<Service > > > > AsyncService;
template <class BaseClass>
class ExperimentalWithCallbackMethod_ListMetrics : public BaseClass {
private:
@@ -435,11 +494,49 @@
#endif
{ return nullptr; }
};
+ template <class BaseClass>
+ class ExperimentalWithCallbackMethod_StreamMetrics : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ ExperimentalWithCallbackMethod_StreamMetrics() {
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ ::grpc::Service::
+ #else
+ ::grpc::Service::experimental().
+ #endif
+ MarkMethodCallback(3,
+ new ::grpc_impl::internal::CallbackServerStreamingHandler< ::google::protobuf::Empty, ::dmi::Metric>(
+ [this](
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ ::grpc::CallbackServerContext*
+ #else
+ ::grpc::experimental::CallbackServerContext*
+ #endif
+ context, const ::google::protobuf::Empty* request) { return this->StreamMetrics(context, request); }));
+ }
+ ~ExperimentalWithCallbackMethod_StreamMetrics() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status StreamMetrics(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Metric>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ virtual ::grpc::ServerWriteReactor< ::dmi::Metric>* StreamMetrics(
+ ::grpc::CallbackServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/)
+ #else
+ virtual ::grpc::experimental::ServerWriteReactor< ::dmi::Metric>* StreamMetrics(
+ ::grpc::experimental::CallbackServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/)
+ #endif
+ { return nullptr; }
+ };
#ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
- typedef ExperimentalWithCallbackMethod_ListMetrics<ExperimentalWithCallbackMethod_UpdateMetricsConfiguration<ExperimentalWithCallbackMethod_GetMetric<Service > > > CallbackService;
+ typedef ExperimentalWithCallbackMethod_ListMetrics<ExperimentalWithCallbackMethod_UpdateMetricsConfiguration<ExperimentalWithCallbackMethod_GetMetric<ExperimentalWithCallbackMethod_StreamMetrics<Service > > > > CallbackService;
#endif
- typedef ExperimentalWithCallbackMethod_ListMetrics<ExperimentalWithCallbackMethod_UpdateMetricsConfiguration<ExperimentalWithCallbackMethod_GetMetric<Service > > > ExperimentalCallbackService;
+ typedef ExperimentalWithCallbackMethod_ListMetrics<ExperimentalWithCallbackMethod_UpdateMetricsConfiguration<ExperimentalWithCallbackMethod_GetMetric<ExperimentalWithCallbackMethod_StreamMetrics<Service > > > > ExperimentalCallbackService;
template <class BaseClass>
class WithGenericMethod_ListMetrics : public BaseClass {
private:
@@ -492,6 +589,23 @@
}
};
template <class BaseClass>
+ class WithGenericMethod_StreamMetrics : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ WithGenericMethod_StreamMetrics() {
+ ::grpc::Service::MarkMethodGeneric(3);
+ }
+ ~WithGenericMethod_StreamMetrics() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status StreamMetrics(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Metric>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ };
+ template <class BaseClass>
class WithRawMethod_ListMetrics : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
@@ -552,6 +666,26 @@
}
};
template <class BaseClass>
+ class WithRawMethod_StreamMetrics : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ WithRawMethod_StreamMetrics() {
+ ::grpc::Service::MarkMethodRaw(3);
+ }
+ ~WithRawMethod_StreamMetrics() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status StreamMetrics(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Metric>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ void RequestStreamMetrics(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+ ::grpc::Service::RequestAsyncServerStreaming(3, context, request, writer, new_call_cq, notification_cq, tag);
+ }
+ };
+ template <class BaseClass>
class ExperimentalWithRawCallbackMethod_ListMetrics : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
@@ -666,6 +800,44 @@
{ return nullptr; }
};
template <class BaseClass>
+ class ExperimentalWithRawCallbackMethod_StreamMetrics : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ ExperimentalWithRawCallbackMethod_StreamMetrics() {
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ ::grpc::Service::
+ #else
+ ::grpc::Service::experimental().
+ #endif
+ MarkMethodRawCallback(3,
+ new ::grpc_impl::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
+ [this](
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ ::grpc::CallbackServerContext*
+ #else
+ ::grpc::experimental::CallbackServerContext*
+ #endif
+ context, const::grpc::ByteBuffer* request) { return this->StreamMetrics(context, request); }));
+ }
+ ~ExperimentalWithRawCallbackMethod_StreamMetrics() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status StreamMetrics(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Metric>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+ virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* StreamMetrics(
+ ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)
+ #else
+ virtual ::grpc::experimental::ServerWriteReactor< ::grpc::ByteBuffer>* StreamMetrics(
+ ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)
+ #endif
+ { return nullptr; }
+ };
+ template <class BaseClass>
class WithStreamedUnaryMethod_ListMetrics : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
@@ -747,8 +919,35 @@
virtual ::grpc::Status StreamedGetMetric(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::dmi::GetMetricRequest,::dmi::GetMetricResponse>* server_unary_streamer) = 0;
};
typedef WithStreamedUnaryMethod_ListMetrics<WithStreamedUnaryMethod_UpdateMetricsConfiguration<WithStreamedUnaryMethod_GetMetric<Service > > > StreamedUnaryService;
- typedef Service SplitStreamedService;
- typedef WithStreamedUnaryMethod_ListMetrics<WithStreamedUnaryMethod_UpdateMetricsConfiguration<WithStreamedUnaryMethod_GetMetric<Service > > > StreamedService;
+ template <class BaseClass>
+ class WithSplitStreamingMethod_StreamMetrics : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+ public:
+ WithSplitStreamingMethod_StreamMetrics() {
+ ::grpc::Service::MarkMethodStreamed(3,
+ new ::grpc::internal::SplitServerStreamingHandler<
+ ::google::protobuf::Empty, ::dmi::Metric>(
+ [this](::grpc_impl::ServerContext* context,
+ ::grpc_impl::ServerSplitStreamer<
+ ::google::protobuf::Empty, ::dmi::Metric>* streamer) {
+ return this->StreamedStreamMetrics(context,
+ streamer);
+ }));
+ }
+ ~WithSplitStreamingMethod_StreamMetrics() override {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable regular version of this method
+ ::grpc::Status StreamMetrics(::grpc::ServerContext* /*context*/, const ::google::protobuf::Empty* /*request*/, ::grpc::ServerWriter< ::dmi::Metric>* /*writer*/) override {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ // replace default version of method with split streamed
+ virtual ::grpc::Status StreamedStreamMetrics(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::google::protobuf::Empty,::dmi::Metric>* server_split_streamer) = 0;
+ };
+ typedef WithSplitStreamingMethod_StreamMetrics<Service > SplitStreamedService;
+ typedef WithStreamedUnaryMethod_ListMetrics<WithStreamedUnaryMethod_UpdateMetricsConfiguration<WithStreamedUnaryMethod_GetMetric<WithSplitStreamingMethod_StreamMetrics<Service > > > > StreamedService;
};
} // namespace dmi
diff --git a/cpp/dmi/hw_metrics_mgmt_service.pb.cc b/cpp/dmi/hw_metrics_mgmt_service.pb.cc
index 389e53d..14a0306 100644
--- a/cpp/dmi/hw_metrics_mgmt_service.pb.cc
+++ b/cpp/dmi/hw_metrics_mgmt_service.pb.cc
@@ -319,85 +319,88 @@
const char descriptor_table_protodef_dmi_2fhw_5fmetrics_5fmgmt_5fservice_2eproto[] =
"\n!dmi/hw_metrics_mgmt_service.proto\022\003dmi"
- "\032\021dmi/commons.proto\032\014dmi/hw.proto\"a\n\014Met"
- "ricConfig\022#\n\tmetric_id\030\001 \001(\0162\020.dmi.Metri"
- "cNames\022\025\n\ris_configured\030\002 \001(\010\022\025\n\rpoll_in"
- "terval\030\003 \001(\r\"3\n\rMetricsConfig\022\"\n\007metrics"
- "\030\001 \003(\0132\021.dmi.MetricConfig\"\377\001\n\023ListMetric"
- "sResponse\022\033\n\006status\030\001 \001(\0162\013.dmi.Status\022/"
- "\n\006reason\030\002 \001(\0162\037.dmi.ListMetricsResponse"
- ".Reason\022#\n\007metrics\030\003 \001(\0132\022.dmi.MetricsCo"
- "nfig\022\025\n\rreason_detail\030\004 \001(\t\"^\n\006Reason\022\024\n"
- "\020UNDEFINED_REASON\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022"
- "\022\n\016INTERNAL_ERROR\020\002\022\026\n\022DEVICE_UNREACHABL"
- "E\020\003\"\215\001\n\033MetricsConfigurationRequest\022\036\n\013d"
- "evice_uuid\030\001 \001(\0132\t.dmi.Uuid\022%\n\007changes\030\002"
- " \001(\0132\022.dmi.MetricsConfigH\000\022\032\n\020reset_to_d"
- "efault\030\003 \001(\010H\000B\013\n\toperation\"\240\002\n\034MetricsC"
- "onfigurationResponse\022\033\n\006status\030\001 \001(\0162\013.d"
- "mi.Status\0228\n\006reason\030\002 \001(\0162(.dmi.MetricsC"
- "onfigurationResponse.Reason\022\025\n\rreason_de"
- "tail\030\003 \001(\t\"\221\001\n\006Reason\022\024\n\020UNDEFINED_REASO"
- "N\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\022\n\016INTERNAL_ERRO"
- "R\020\002\022\035\n\031POLL_INTERVAL_UNSUPPORTED\020\003\022\022\n\016IN"
- "VALID_METRIC\020\004\022\026\n\022DEVICE_UNREACHABLE\020\005\"k"
- "\n\016MetricMetaData\022\036\n\013device_uuid\030\001 \001(\0132\t."
- "dmi.Uuid\022!\n\016component_uuid\030\002 \001(\0132\t.dmi.U"
- "uid\022\026\n\016component_name\030\003 \001(\t\"\204\001\n\006Metric\022#"
- "\n\tmetric_id\030\001 \001(\0162\020.dmi.MetricNames\022,\n\017m"
- "etric_metadata\030\002 \001(\0132\023.dmi.MetricMetaDat"
- "a\022\'\n\005value\030\003 \001(\0132\030.dmi.ComponentSensorDa"
- "ta\"_\n\020GetMetricRequest\022&\n\tmeta_data\030\001 \001("
- "\0132\023.dmi.MetricMetaData\022#\n\tmetric_id\030\002 \001("
- "\0162\020.dmi.MetricNames\"\237\002\n\021GetMetricRespons"
- "e\022\033\n\006status\030\001 \001(\0162\013.dmi.Status\022-\n\006reason"
- "\030\002 \001(\0162\035.dmi.GetMetricResponse.Reason\022\033\n"
- "\006metric\030\003 \001(\0132\013.dmi.Metric\022\025\n\rreason_det"
- "ail\030\004 \001(\t\"\211\001\n\006Reason\022\024\n\020UNDEFINED_REASON"
- "\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\025\n\021UNKNOWN_COMPON"
- "ENT\020\002\022\022\n\016INTERNAL_ERROR\020\003\022\022\n\016INVALID_MET"
- "RIC\020\004\022\026\n\022DEVICE_UNREACHABLE\020\005*\331\005\n\013Metric"
- "Names\022\031\n\025METRIC_NAME_UNDEFINED\020\000\022\024\n\020METR"
- "IC_FAN_SPEED\020\001\022\023\n\017METRIC_CPU_TEMP\020d\022\037\n\033M"
- "ETRIC_CPU_USAGE_PERCENTAGE\020e\022\034\n\027METRIC_T"
- "RANSCEIVER_TEMP\020\310\001\022\037\n\032METRIC_TRANSCEIVER"
- "_VOLTAGE\020\311\001\022\034\n\027METRIC_TRANSCEIVER_BIAS\020\312"
- "\001\022 \n\033METRIC_TRANSCEIVER_RX_POWER\020\313\001\022 \n\033M"
- "ETRIC_TRANSCEIVER_TX_POWER\020\314\001\022\"\n\035METRIC_"
- "TRANSCEIVER_WAVELENGTH\020\315\001\022\025\n\020METRIC_DISK"
- "_TEMP\020\254\002\022\031\n\024METRIC_DISK_CAPACITY\020\255\002\022\026\n\021M"
- "ETRIC_DISK_USAGE\020\256\002\022!\n\034METRIC_DISK_USAGE"
- "_PERCENTAGE\020\257\002\022&\n!METRIC_DISK_READ_WRITE"
- "_PERCENTAGE\020\260\002\022(\n#METRIC_DISK_FAULTY_CEL"
- "LS_PERCENTAGE\020\261\002\022\024\n\017METRIC_RAM_TEMP\020\220\003\022\030"
- "\n\023METRIC_RAM_CAPACITY\020\221\003\022\025\n\020METRIC_RAM_U"
- "SAGE\020\222\003\022 \n\033METRIC_RAM_USAGE_PERCENTAGE\020\223"
- "\003\022\025\n\020METRIC_POWER_MAX\020\364\003\022\027\n\022METRIC_POWER"
- "_USAGE\020\365\003\022\"\n\035METRIC_POWER_USAGE_PERCENTA"
- "GE\020\366\003\022\"\n\035METRIC_INNER_SURROUNDING_TEMP\020\330"
- "\0042\371\001\n\036NativeMetricsManagementService\0228\n\013"
- "ListMetrics\022\017.dmi.HardwareID\032\030.dmi.ListM"
- "etricsResponse\022a\n\032UpdateMetricsConfigura"
- "tion\022 .dmi.MetricsConfigurationRequest\032!"
- ".dmi.MetricsConfigurationResponse\022:\n\tGet"
- "Metric\022\025.dmi.GetMetricRequest\032\026.dmi.GetM"
- "etricResponseB;Z9github.com/opencord/dev"
- "ice-management-interface/v3/go/dmib\006prot"
- "o3"
+ "\032\021dmi/commons.proto\032\014dmi/hw.proto\032\033googl"
+ "e/protobuf/empty.proto\"a\n\014MetricConfig\022#"
+ "\n\tmetric_id\030\001 \001(\0162\020.dmi.MetricNames\022\025\n\ri"
+ "s_configured\030\002 \001(\010\022\025\n\rpoll_interval\030\003 \001("
+ "\r\"3\n\rMetricsConfig\022\"\n\007metrics\030\001 \003(\0132\021.dm"
+ "i.MetricConfig\"\377\001\n\023ListMetricsResponse\022\033"
+ "\n\006status\030\001 \001(\0162\013.dmi.Status\022/\n\006reason\030\002 "
+ "\001(\0162\037.dmi.ListMetricsResponse.Reason\022#\n\007"
+ "metrics\030\003 \001(\0132\022.dmi.MetricsConfig\022\025\n\rrea"
+ "son_detail\030\004 \001(\t\"^\n\006Reason\022\024\n\020UNDEFINED_"
+ "REASON\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\022\n\016INTERNAL"
+ "_ERROR\020\002\022\026\n\022DEVICE_UNREACHABLE\020\003\"\215\001\n\033Met"
+ "ricsConfigurationRequest\022\036\n\013device_uuid\030"
+ "\001 \001(\0132\t.dmi.Uuid\022%\n\007changes\030\002 \001(\0132\022.dmi."
+ "MetricsConfigH\000\022\032\n\020reset_to_default\030\003 \001("
+ "\010H\000B\013\n\toperation\"\240\002\n\034MetricsConfiguratio"
+ "nResponse\022\033\n\006status\030\001 \001(\0162\013.dmi.Status\0228"
+ "\n\006reason\030\002 \001(\0162(.dmi.MetricsConfiguratio"
+ "nResponse.Reason\022\025\n\rreason_detail\030\003 \001(\t\""
+ "\221\001\n\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016UNKN"
+ "OWN_DEVICE\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\035\n\031POLL"
+ "_INTERVAL_UNSUPPORTED\020\003\022\022\n\016INVALID_METRI"
+ "C\020\004\022\026\n\022DEVICE_UNREACHABLE\020\005\"k\n\016MetricMet"
+ "aData\022\036\n\013device_uuid\030\001 \001(\0132\t.dmi.Uuid\022!\n"
+ "\016component_uuid\030\002 \001(\0132\t.dmi.Uuid\022\026\n\016comp"
+ "onent_name\030\003 \001(\t\"\204\001\n\006Metric\022#\n\tmetric_id"
+ "\030\001 \001(\0162\020.dmi.MetricNames\022,\n\017metric_metad"
+ "ata\030\002 \001(\0132\023.dmi.MetricMetaData\022\'\n\005value\030"
+ "\003 \001(\0132\030.dmi.ComponentSensorData\"_\n\020GetMe"
+ "tricRequest\022&\n\tmeta_data\030\001 \001(\0132\023.dmi.Met"
+ "ricMetaData\022#\n\tmetric_id\030\002 \001(\0162\020.dmi.Met"
+ "ricNames\"\237\002\n\021GetMetricResponse\022\033\n\006status"
+ "\030\001 \001(\0162\013.dmi.Status\022-\n\006reason\030\002 \001(\0162\035.dm"
+ "i.GetMetricResponse.Reason\022\033\n\006metric\030\003 \001"
+ "(\0132\013.dmi.Metric\022\025\n\rreason_detail\030\004 \001(\t\"\211"
+ "\001\n\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016UNKNO"
+ "WN_DEVICE\020\001\022\025\n\021UNKNOWN_COMPONENT\020\002\022\022\n\016IN"
+ "TERNAL_ERROR\020\003\022\022\n\016INVALID_METRIC\020\004\022\026\n\022DE"
+ "VICE_UNREACHABLE\020\005*\331\005\n\013MetricNames\022\031\n\025ME"
+ "TRIC_NAME_UNDEFINED\020\000\022\024\n\020METRIC_FAN_SPEE"
+ "D\020\001\022\023\n\017METRIC_CPU_TEMP\020d\022\037\n\033METRIC_CPU_U"
+ "SAGE_PERCENTAGE\020e\022\034\n\027METRIC_TRANSCEIVER_"
+ "TEMP\020\310\001\022\037\n\032METRIC_TRANSCEIVER_VOLTAGE\020\311\001"
+ "\022\034\n\027METRIC_TRANSCEIVER_BIAS\020\312\001\022 \n\033METRIC"
+ "_TRANSCEIVER_RX_POWER\020\313\001\022 \n\033METRIC_TRANS"
+ "CEIVER_TX_POWER\020\314\001\022\"\n\035METRIC_TRANSCEIVER"
+ "_WAVELENGTH\020\315\001\022\025\n\020METRIC_DISK_TEMP\020\254\002\022\031\n"
+ "\024METRIC_DISK_CAPACITY\020\255\002\022\026\n\021METRIC_DISK_"
+ "USAGE\020\256\002\022!\n\034METRIC_DISK_USAGE_PERCENTAGE"
+ "\020\257\002\022&\n!METRIC_DISK_READ_WRITE_PERCENTAGE"
+ "\020\260\002\022(\n#METRIC_DISK_FAULTY_CELLS_PERCENTA"
+ "GE\020\261\002\022\024\n\017METRIC_RAM_TEMP\020\220\003\022\030\n\023METRIC_RA"
+ "M_CAPACITY\020\221\003\022\025\n\020METRIC_RAM_USAGE\020\222\003\022 \n\033"
+ "METRIC_RAM_USAGE_PERCENTAGE\020\223\003\022\025\n\020METRIC"
+ "_POWER_MAX\020\364\003\022\027\n\022METRIC_POWER_USAGE\020\365\003\022\""
+ "\n\035METRIC_POWER_USAGE_PERCENTAGE\020\366\003\022\"\n\035ME"
+ "TRIC_INNER_SURROUNDING_TEMP\020\330\0042\261\002\n\036Nativ"
+ "eMetricsManagementService\0228\n\013ListMetrics"
+ "\022\017.dmi.HardwareID\032\030.dmi.ListMetricsRespo"
+ "nse\022a\n\032UpdateMetricsConfiguration\022 .dmi."
+ "MetricsConfigurationRequest\032!.dmi.Metric"
+ "sConfigurationResponse\022:\n\tGetMetric\022\025.dm"
+ "i.GetMetricRequest\032\026.dmi.GetMetricRespon"
+ "se\0226\n\rStreamMetrics\022\026.google.protobuf.Em"
+ "pty\032\013.dmi.Metric0\001B;Z9github.com/opencor"
+ "d/device-management-interface/v3/go/dmib"
+ "\006proto3"
;
::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fhw_5fmetrics_5fmgmt_5fservice_2eproto = {
false, InitDefaults_dmi_2fhw_5fmetrics_5fmgmt_5fservice_2eproto,
descriptor_table_protodef_dmi_2fhw_5fmetrics_5fmgmt_5fservice_2eproto,
- "dmi/hw_metrics_mgmt_service.proto", &assign_descriptors_table_dmi_2fhw_5fmetrics_5fmgmt_5fservice_2eproto, 2602,
+ "dmi/hw_metrics_mgmt_service.proto", &assign_descriptors_table_dmi_2fhw_5fmetrics_5fmgmt_5fservice_2eproto, 2687,
};
void AddDescriptors_dmi_2fhw_5fmetrics_5fmgmt_5fservice_2eproto() {
- static constexpr ::google::protobuf::internal::InitFunc deps[2] =
+ static constexpr ::google::protobuf::internal::InitFunc deps[3] =
{
::AddDescriptors_dmi_2fcommons_2eproto,
::AddDescriptors_dmi_2fhw_2eproto,
+ ::AddDescriptors_google_2fprotobuf_2fempty_2eproto,
};
- ::google::protobuf::internal::AddDescriptors(&descriptor_table_dmi_2fhw_5fmetrics_5fmgmt_5fservice_2eproto, deps, 2);
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_dmi_2fhw_5fmetrics_5fmgmt_5fservice_2eproto, deps, 3);
}
// Force running AddDescriptors() at dynamic initialization time.
diff --git a/cpp/dmi/hw_metrics_mgmt_service.pb.h b/cpp/dmi/hw_metrics_mgmt_service.pb.h
index 5967faa..ab393ae 100644
--- a/cpp/dmi/hw_metrics_mgmt_service.pb.h
+++ b/cpp/dmi/hw_metrics_mgmt_service.pb.h
@@ -34,6 +34,7 @@
#include <google/protobuf/unknown_field_set.h>
#include "dmi/commons.pb.h"
#include "dmi/hw.pb.h"
+#include <google/protobuf/empty.pb.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fmetrics_5fmgmt_5fservice_2eproto
diff --git a/dmi.pb b/dmi.pb
index e61d910..147fe01 100644
--- a/dmi.pb
+++ b/dmi.pb
Binary files differ
diff --git a/go/dmi/hw_events_mgmt_service.pb.go b/go/dmi/hw_events_mgmt_service.pb.go
index ba213a6..6110b97 100644
--- a/go/dmi/hw_events_mgmt_service.pb.go
+++ b/go/dmi/hw_events_mgmt_service.pb.go
@@ -7,6 +7,7 @@
context "context"
fmt "fmt"
proto "github.com/golang/protobuf/proto"
+ empty "github.com/golang/protobuf/ptypes/empty"
timestamp "github.com/golang/protobuf/ptypes/timestamp"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
@@ -959,98 +960,100 @@
func init() { proto.RegisterFile("dmi/hw_events_mgmt_service.proto", fileDescriptor_8962d785556e9979) }
var fileDescriptor_8962d785556e9979 = []byte{
- // 1448 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4b, 0x73, 0xdb, 0xd4,
- 0x17, 0x8f, 0xad, 0x3c, 0x9c, 0x93, 0xc6, 0x7f, 0xf5, 0x4e, 0xff, 0x6d, 0xe2, 0x4e, 0x5b, 0xe3,
- 0x40, 0x93, 0x06, 0x62, 0xb7, 0x09, 0xb4, 0x74, 0xba, 0x00, 0xc5, 0x56, 0x6a, 0x0d, 0x8e, 0x9c,
- 0xb9, 0x91, 0x1d, 0x86, 0x45, 0x35, 0x37, 0xd6, 0xb5, 0x2d, 0x6a, 0x49, 0xae, 0x74, 0x95, 0x50,
- 0x98, 0x61, 0xc1, 0x92, 0x15, 0xaf, 0x25, 0xc3, 0x27, 0xa0, 0xb0, 0xe4, 0x2b, 0xf0, 0x58, 0xf1,
- 0x5d, 0x78, 0x2d, 0x19, 0x5d, 0xc9, 0xb6, 0xe2, 0x47, 0x9c, 0xce, 0xb0, 0xb3, 0xce, 0xf9, 0xfd,
- 0xce, 0xf9, 0x5d, 0x9d, 0x73, 0x8f, 0x8e, 0x21, 0x6b, 0x58, 0x66, 0xa1, 0x7d, 0xaa, 0xd3, 0x13,
- 0x6a, 0x33, 0x4f, 0xb7, 0x5a, 0x16, 0xd3, 0x3d, 0xea, 0x9e, 0x98, 0x0d, 0x9a, 0xef, 0xba, 0x0e,
- 0x73, 0x90, 0x60, 0x58, 0x66, 0xe6, 0x72, 0x00, 0x6b, 0x38, 0x96, 0xe5, 0xd8, 0x5e, 0x68, 0xcf,
- 0x5c, 0x0a, 0x99, 0xd1, 0xd3, 0xad, 0x96, 0xe3, 0xb4, 0x3a, 0xb4, 0xc0, 0x9f, 0x8e, 0xfd, 0x66,
- 0x81, 0x99, 0x16, 0xf5, 0x18, 0xb1, 0xba, 0x21, 0x20, 0x67, 0xc2, 0x62, 0x9d, 0x74, 0x7c, 0xaa,
- 0x3d, 0xef, 0x52, 0xb4, 0x0a, 0x0b, 0xa6, 0xcd, 0xf4, 0x13, 0xd2, 0x59, 0x49, 0x64, 0x13, 0x1b,
- 0x42, 0x79, 0x06, 0xcf, 0x9b, 0x36, 0xab, 0x93, 0x0e, 0xba, 0x0e, 0x29, 0xbf, 0xe7, 0x4b, 0x66,
- 0x13, 0x1b, 0xb3, 0xe5, 0x19, 0xbc, 0xe0, 0x47, 0xce, 0x1b, 0xb0, 0xd8, 0xec, 0x38, 0x24, 0xf4,
- 0x0a, 0xd9, 0xc4, 0x46, 0xb2, 0x3c, 0x83, 0x53, 0xdc, 0x54, 0x27, 0x9d, 0xdd, 0x39, 0x10, 0x4e,
- 0x48, 0x27, 0x87, 0x01, 0x8e, 0x08, 0xa3, 0xee, 0x3e, 0x71, 0x9f, 0x7a, 0x28, 0x07, 0xb3, 0x6d,
- 0xb3, 0xd5, 0xe6, 0x89, 0x96, 0xb6, 0xd3, 0x79, 0xc3, 0x32, 0xf3, 0x7d, 0x25, 0x98, 0xfb, 0x50,
- 0x16, 0x84, 0x8e, 0x73, 0xca, 0xf3, 0x8d, 0x42, 0x02, 0x57, 0xee, 0x29, 0x80, 0xd6, 0x76, 0xa9,
- 0xd7, 0x76, 0x3a, 0x86, 0x87, 0xd6, 0x61, 0xce, 0xef, 0x76, 0xa9, 0x1b, 0x05, 0xfd, 0x1f, 0x67,
- 0x0c, 0x72, 0x96, 0x67, 0x70, 0xe8, 0x0f, 0x80, 0x1d, 0xe7, 0x94, 0xba, 0x51, 0xe8, 0x71, 0x40,
- 0xee, 0xdf, 0x5d, 0x82, 0x45, 0xd6, 0x8b, 0x9f, 0xfb, 0x14, 0xae, 0xf4, 0x93, 0x29, 0x76, 0xd3,
- 0x71, 0x2d, 0xc2, 0x4c, 0xc7, 0x46, 0x6f, 0x41, 0xda, 0x39, 0x0e, 0xaa, 0x43, 0x8d, 0xe0, 0x0d,
- 0xf8, 0x74, 0xc2, 0xa1, 0x96, 0x7b, 0x28, 0x6e, 0x42, 0x05, 0x80, 0x7e, 0x6c, 0xef, 0x8c, 0x92,
- 0xc1, 0x91, 0x70, 0x0c, 0x92, 0xfb, 0x3c, 0x01, 0x29, 0x39, 0x68, 0x88, 0x62, 0xb3, 0x85, 0x36,
- 0x20, 0xc5, 0x9b, 0x43, 0x37, 0x0d, 0x9e, 0x2e, 0xbd, 0xbd, 0xcc, 0xb9, 0x1c, 0xa0, 0x18, 0x1e,
- 0x5e, 0xa0, 0xe1, 0x2f, 0xb4, 0x06, 0xcb, 0xa6, 0xa7, 0x37, 0x1c, 0xbb, 0x69, 0xb6, 0x7c, 0x97,
- 0x1a, 0x3c, 0x55, 0x0a, 0x5f, 0x32, 0xbd, 0x62, 0xdf, 0x36, 0x24, 0x46, 0x98, 0x2e, 0xe6, 0x2e,
- 0x2c, 0xf2, 0x54, 0x5e, 0x20, 0x66, 0x0d, 0xe6, 0x4c, 0x46, 0x2d, 0x6f, 0x25, 0x91, 0x15, 0x36,
- 0x96, 0xe2, 0x4a, 0x8a, 0xcd, 0x16, 0x0e, 0x7d, 0xb9, 0xef, 0x92, 0x80, 0x2a, 0xa6, 0xc7, 0x42,
- 0x1a, 0xa6, 0x5e, 0xd7, 0xb1, 0x3d, 0x8a, 0xd6, 0x60, 0xde, 0x63, 0x84, 0xf9, 0x5e, 0x74, 0x8c,
- 0x25, 0x4e, 0x3e, 0xe4, 0x26, 0x1c, 0xb9, 0xd0, 0x7d, 0x98, 0x77, 0x29, 0xf1, 0x1c, 0x9b, 0x8b,
- 0x4f, 0x6f, 0xdf, 0xe4, 0xa0, 0xd1, 0x68, 0x79, 0xcc, 0x51, 0x38, 0x42, 0xa3, 0xdb, 0x30, 0x1f,
- 0x5e, 0xa1, 0xe8, 0x48, 0xe9, 0x81, 0xb2, 0x40, 0x38, 0x8e, 0xbc, 0xc1, 0x3b, 0x0a, 0x19, 0xba,
- 0x41, 0x19, 0x31, 0x3b, 0x2b, 0xb3, 0xd9, 0xc4, 0xc6, 0x22, 0xbe, 0x14, 0x1a, 0x4b, 0xdc, 0x96,
- 0x7b, 0x02, 0xf3, 0x61, 0x78, 0x74, 0x05, 0xc4, 0x9a, 0x5a, 0x92, 0xf7, 0x14, 0x55, 0x2e, 0xe9,
- 0x58, 0x96, 0x0e, 0xab, 0xaa, 0x38, 0x83, 0x10, 0xa4, 0x6b, 0xea, 0x7b, 0x6a, 0xf5, 0x48, 0xd5,
- 0x4b, 0x72, 0x5d, 0x29, 0xca, 0x62, 0x22, 0xb0, 0x29, 0xaa, 0x26, 0x63, 0x55, 0xaa, 0xe8, 0x32,
- 0xc6, 0x55, 0x2c, 0x26, 0xd1, 0x55, 0x40, 0xa1, 0x5f, 0xaf, 0xa9, 0x58, 0x96, 0x8a, 0x65, 0x69,
- 0xb7, 0x22, 0x8b, 0x42, 0xee, 0x45, 0x02, 0x32, 0x91, 0xb4, 0xa8, 0x30, 0xbc, 0xbf, 0x30, 0x7d,
- 0xe6, 0x53, 0x8f, 0xa1, 0x4d, 0x58, 0x32, 0x68, 0x30, 0x01, 0x74, 0xdf, 0x8f, 0x8a, 0xbe, 0xb4,
- 0xbd, 0xc8, 0x0f, 0x54, 0xf3, 0x4d, 0x03, 0x43, 0xe8, 0x0d, 0x7e, 0xa3, 0x4d, 0x58, 0x68, 0xb4,
- 0x89, 0xdd, 0xa2, 0xde, 0x99, 0xdb, 0xd3, 0x3f, 0x78, 0x70, 0x7b, 0x23, 0x00, 0xda, 0x04, 0xd1,
- 0xa5, 0x1e, 0x65, 0x3a, 0x73, 0x74, 0x83, 0x36, 0x89, 0xdf, 0x61, 0xfc, 0x6d, 0xa5, 0xca, 0x33,
- 0x38, 0xcd, 0x3d, 0x9a, 0x53, 0x0a, 0xed, 0xc1, 0x7d, 0x70, 0xba, 0x34, 0xd4, 0x95, 0xfb, 0x36,
- 0x09, 0xd7, 0xc7, 0xea, 0x7d, 0x99, 0xca, 0xbe, 0x33, 0x54, 0xd9, 0xf5, 0xb8, 0xd0, 0x71, 0x61,
- 0x87, 0x4b, 0x3c, 0x52, 0x3a, 0x61, 0x4c, 0xe9, 0xdc, 0xff, 0xa8, 0x74, 0xdc, 0x56, 0x97, 0x2a,
- 0x4a, 0x49, 0x2f, 0x56, 0xd5, 0x3d, 0xe5, 0xb1, 0x28, 0x4c, 0x28, 0xe7, 0x6c, 0xee, 0x9b, 0x04,
- 0x2c, 0xf3, 0x73, 0xec, 0x53, 0x46, 0x4a, 0x84, 0x91, 0x97, 0xaa, 0xe0, 0x5d, 0x48, 0x37, 0x1c,
- 0xab, 0xeb, 0xd8, 0xc1, 0x1d, 0xe7, 0xf0, 0xe4, 0x30, 0x7c, 0xb9, 0x0f, 0xe0, 0x8c, 0xd7, 0xe2,
- 0x0c, 0x9b, 0x58, 0x34, 0x7a, 0x13, 0x03, 0x98, 0x4a, 0x2c, 0x9a, 0xfb, 0x2c, 0x09, 0x73, 0x5c,
- 0x16, 0x7a, 0x08, 0xe9, 0x70, 0x84, 0x58, 0x94, 0x11, 0x83, 0x30, 0x12, 0x29, 0x42, 0x83, 0x12,
- 0xf4, 0xa4, 0xe3, 0x65, 0xda, 0x7b, 0x0c, 0x80, 0x67, 0xa6, 0x4f, 0xf2, 0xdc, 0xe9, 0xf3, 0x00,
- 0x16, 0x5d, 0x62, 0x7a, 0xd4, 0xd0, 0xfb, 0x97, 0x30, 0x93, 0x0f, 0xbf, 0x4a, 0xf9, 0xde, 0x57,
- 0x29, 0xaf, 0xf5, 0xbe, 0x4a, 0x38, 0x15, 0x82, 0x35, 0x0f, 0xbd, 0x0b, 0xe9, 0xfe, 0xb8, 0xd1,
- 0x4d, 0xbb, 0xe9, 0xf0, 0x3b, 0xb9, 0xb4, 0xbd, 0x7a, 0x76, 0x2a, 0xc5, 0x06, 0x31, 0x5e, 0x66,
- 0x71, 0x2b, 0x5a, 0x85, 0x14, 0x31, 0x22, 0xee, 0x1c, 0x7f, 0x15, 0x0b, 0xc4, 0xe0, 0xae, 0xcd,
- 0xdf, 0xd3, 0xd1, 0x28, 0x55, 0x0c, 0x0f, 0xad, 0xc0, 0x15, 0xb9, 0x2e, 0xab, 0x9a, 0xae, 0x4a,
- 0xfb, 0x41, 0x11, 0xa3, 0xee, 0x10, 0x67, 0xd0, 0x4d, 0xc8, 0x84, 0x1e, 0x0d, 0x4b, 0xea, 0x61,
- 0x51, 0x56, 0xea, 0x32, 0xd6, 0x0f, 0x2a, 0xb5, 0xc7, 0x7a, 0xb5, 0xa6, 0x89, 0x06, 0xba, 0x01,
- 0xab, 0x13, 0xfc, 0x8a, 0x2a, 0x52, 0xb4, 0x05, 0x77, 0x46, 0xdd, 0xf5, 0x6a, 0x45, 0x93, 0x1e,
- 0xcb, 0xba, 0xb4, 0x5b, 0xad, 0xcb, 0xba, 0x56, 0xc6, 0xf2, 0x61, 0xb9, 0x5a, 0x29, 0x89, 0xcd,
- 0xf3, 0xe1, 0xbb, 0x72, 0xa5, 0x7a, 0x14, 0x83, 0xb7, 0xd0, 0x3d, 0xd8, 0x1a, 0x85, 0x6b, 0xf2,
- 0xfe, 0x81, 0x8c, 0x25, 0xad, 0x86, 0x47, 0x33, 0xb4, 0xa7, 0x53, 0x86, 0xb3, 0x98, 0xe3, 0x45,
- 0x15, 0x6b, 0x18, 0x07, 0xb6, 0xe1, 0x0c, 0x1f, 0x9e, 0x0f, 0x1f, 0x8e, 0xfe, 0x14, 0xe5, 0x61,
- 0x73, 0x14, 0x8e, 0xdf, 0xd7, 0x0f, 0xaa, 0x47, 0x32, 0x1e, 0x09, 0xdf, 0x99, 0x82, 0x1f, 0x8e,
- 0x6f, 0x8d, 0xc7, 0x6b, 0x93, 0xe2, 0xdb, 0x53, 0xf0, 0xc3, 0xf1, 0x9d, 0xf1, 0x0d, 0xb0, 0x27,
- 0x29, 0x95, 0x1a, 0x96, 0xc5, 0x2e, 0x7a, 0x00, 0x3b, 0x17, 0x6e, 0x00, 0x1d, 0xcb, 0xc5, 0x6a,
- 0x5d, 0xc6, 0x72, 0x49, 0x7c, 0x76, 0x3e, 0x71, 0x48, 0x46, 0x8c, 0xe8, 0xa2, 0x47, 0xf0, 0xe0,
- 0xa5, 0x9a, 0x22, 0x46, 0xf6, 0xa6, 0x93, 0x27, 0x67, 0x66, 0xe3, 0x25, 0x4f, 0x68, 0x94, 0x18,
- 0xd1, 0x3f, 0x9f, 0x38, 0x39, 0xe3, 0x09, 0x7a, 0x1b, 0xde, 0xbc, 0x78, 0xf3, 0xc4, 0x98, 0xa7,
- 0x53, 0x98, 0x93, 0x73, 0x7e, 0x34, 0x9e, 0xa9, 0x4d, 0xcf, 0xf9, 0x7c, 0x0a, 0x73, 0x72, 0xce,
- 0x8f, 0xd1, 0x3a, 0xac, 0x4d, 0x6c, 0xb2, 0x18, 0xf0, 0x13, 0x74, 0x0d, 0x50, 0x08, 0x3c, 0x38,
- 0xac, 0x0d, 0xc6, 0xd4, 0xcf, 0x09, 0x74, 0x15, 0x2e, 0x0f, 0x39, 0x14, 0x55, 0xfc, 0x65, 0xc8,
- 0xde, 0x6b, 0xdb, 0x5f, 0x13, 0x28, 0x0b, 0xd7, 0x47, 0xec, 0xb1, 0x4c, 0xbf, 0xc5, 0x98, 0x7b,
- 0x92, 0xda, 0x67, 0x7e, 0x9f, 0x1c, 0x48, 0x08, 0xec, 0x7d, 0x09, 0x2f, 0x92, 0x67, 0x09, 0x3d,
- 0x09, 0x3f, 0x24, 0x07, 0xa9, 0x62, 0x81, 0x62, 0xa9, 0x7e, 0x4c, 0xa2, 0x3b, 0xf0, 0x6a, 0x88,
- 0x28, 0x1e, 0xd4, 0xc6, 0xb4, 0x72, 0x11, 0x2b, 0x9a, 0x52, 0x94, 0x2a, 0xe2, 0x17, 0x02, 0xba,
- 0x0d, 0xaf, 0x9c, 0x07, 0xdd, 0x93, 0x34, 0xa9, 0x22, 0x7e, 0x29, 0xa0, 0x1d, 0xc8, 0x5f, 0x24,
- 0x64, 0x4c, 0xc7, 0x57, 0x02, 0xba, 0x0b, 0xaf, 0x4f, 0x0d, 0x1e, 0x63, 0x7c, 0x2d, 0xa0, 0x0c,
- 0xfc, 0x3f, 0x64, 0x94, 0x8f, 0xa2, 0xb5, 0x42, 0xc7, 0xf2, 0xa1, 0xac, 0x89, 0x7f, 0x08, 0xa8,
- 0xd0, 0x9b, 0x34, 0x03, 0xdf, 0x39, 0x67, 0xfb, 0x53, 0x40, 0x6f, 0xc0, 0xfa, 0x74, 0x42, 0x78,
- 0xc2, 0xbf, 0x04, 0xf4, 0xb0, 0xd7, 0x6d, 0x17, 0x09, 0x1f, 0x53, 0xfd, 0xb7, 0x80, 0xee, 0xc3,
- 0xbd, 0x0b, 0x26, 0x8a, 0xf1, 0xfe, 0x11, 0xb6, 0x7f, 0x4a, 0xc0, 0x0d, 0x95, 0x30, 0xf3, 0x84,
- 0x86, 0xdb, 0xdb, 0x3e, 0xb1, 0x49, 0x8b, 0x5a, 0xd4, 0x66, 0x87, 0xe1, 0x3f, 0x57, 0x74, 0x1f,
- 0x60, 0xb0, 0xb2, 0xa3, 0xf0, 0xef, 0x45, 0x99, 0xb8, 0xc6, 0x29, 0x71, 0xa9, 0x52, 0xca, 0x5c,
- 0x9b, 0xb0, 0xd4, 0xa3, 0x27, 0xb0, 0x5a, 0xeb, 0x1a, 0x84, 0xd1, 0x31, 0x6b, 0x21, 0xba, 0x35,
- 0x79, 0x61, 0xe4, 0x7b, 0x73, 0x26, 0x3b, 0x6d, 0xa3, 0xdc, 0x7d, 0xf4, 0xc1, 0xc3, 0x96, 0xc9,
- 0xda, 0xfe, 0x71, 0xbe, 0xe1, 0x58, 0x05, 0xa7, 0x4b, 0xed, 0x86, 0xe3, 0x1a, 0x85, 0x70, 0x1b,
- 0xdb, 0xb2, 0xfa, 0xe7, 0xd8, 0x32, 0x6d, 0x46, 0xdd, 0x26, 0x69, 0xd0, 0xc2, 0xc9, 0x4e, 0xa1,
- 0xe5, 0x14, 0x0c, 0xcb, 0x3c, 0x9e, 0xe7, 0x5b, 0xcc, 0xce, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff,
- 0x36, 0x83, 0x3b, 0x4c, 0xb3, 0x0f, 0x00, 0x00,
+ // 1480 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xcb, 0x72, 0xdb, 0x46,
+ 0x16, 0x15, 0x09, 0x3d, 0xa8, 0x2b, 0x89, 0x03, 0x77, 0x79, 0x6c, 0x89, 0x2a, 0xdb, 0x1c, 0x6a,
+ 0xc6, 0x92, 0x35, 0x23, 0x52, 0x96, 0x3c, 0x76, 0x5c, 0x5e, 0x24, 0x14, 0x09, 0x99, 0xa8, 0x50,
+ 0xa0, 0xaa, 0x09, 0x52, 0xa9, 0x2c, 0x8c, 0x6a, 0x11, 0x4d, 0x12, 0x31, 0x01, 0xd0, 0x40, 0x43,
+ 0x8a, 0x93, 0xaa, 0x2c, 0xb2, 0xcc, 0x2a, 0xaf, 0x65, 0x2a, 0x5f, 0x10, 0x27, 0xbf, 0x91, 0xc7,
+ 0x2a, 0x1f, 0x92, 0x5d, 0x5e, 0xcb, 0x14, 0x1a, 0x20, 0x09, 0xf1, 0x21, 0xca, 0x55, 0xd9, 0x91,
+ 0xf7, 0x9c, 0x73, 0xef, 0x69, 0xdc, 0xdb, 0x8d, 0x06, 0xa4, 0x75, 0xd3, 0xc8, 0xb5, 0xcf, 0x35,
+ 0x7a, 0x46, 0x2d, 0xe6, 0x6a, 0x66, 0xcb, 0x64, 0x9a, 0x4b, 0x9d, 0x33, 0xa3, 0x41, 0xb3, 0x5d,
+ 0xc7, 0x66, 0x36, 0x12, 0x74, 0xd3, 0x48, 0x5d, 0xf3, 0x69, 0x0d, 0xdb, 0x34, 0x6d, 0xcb, 0x0d,
+ 0xe2, 0xa9, 0xe5, 0x40, 0x19, 0xfe, 0xbb, 0xd3, 0xb2, 0xed, 0x56, 0x87, 0xe6, 0xf8, 0xbf, 0x53,
+ 0xaf, 0x99, 0x63, 0x86, 0x49, 0x5d, 0x46, 0xcc, 0x6e, 0x48, 0x58, 0x1f, 0x26, 0x50, 0xb3, 0xcb,
+ 0x5e, 0x06, 0x60, 0xc6, 0x80, 0xc5, 0x3a, 0xe9, 0x78, 0x54, 0x7d, 0xd9, 0xa5, 0x68, 0x0d, 0x16,
+ 0x0c, 0x8b, 0x69, 0x67, 0xa4, 0xb3, 0x1a, 0x4b, 0xc7, 0xb6, 0x84, 0xd2, 0x0c, 0x9e, 0x37, 0x2c,
+ 0x56, 0x27, 0x1d, 0xb4, 0x0e, 0x09, 0xaf, 0x87, 0xc5, 0xd3, 0xb1, 0xad, 0xd9, 0xd2, 0x0c, 0x5e,
+ 0xf0, 0x42, 0xf0, 0x16, 0x2c, 0x36, 0x3b, 0x36, 0x09, 0x50, 0x21, 0x1d, 0xdb, 0x8a, 0x97, 0x66,
+ 0x70, 0x82, 0x87, 0xea, 0xa4, 0x73, 0x30, 0x07, 0xc2, 0x19, 0xe9, 0x64, 0x30, 0xc0, 0x09, 0x61,
+ 0xd4, 0x39, 0x22, 0xce, 0x73, 0x17, 0x65, 0x60, 0xb6, 0x6d, 0xb4, 0xda, 0xbc, 0xd0, 0xd2, 0x5e,
+ 0x32, 0xab, 0x9b, 0x46, 0xb6, 0xef, 0x04, 0x73, 0x0c, 0xa5, 0x41, 0xe8, 0xd8, 0xe7, 0xbc, 0xde,
+ 0x28, 0xc5, 0x87, 0x32, 0xcf, 0x01, 0xd4, 0xb6, 0x43, 0xdd, 0xb6, 0xdd, 0xd1, 0x5d, 0xb4, 0x09,
+ 0x73, 0x5e, 0xb7, 0x4b, 0x9d, 0x30, 0xe9, 0x3f, 0xb8, 0x62, 0x50, 0xb3, 0x34, 0x83, 0x03, 0xdc,
+ 0x27, 0x76, 0xec, 0x73, 0xea, 0x84, 0xa9, 0xc7, 0x11, 0x39, 0x7e, 0xb0, 0x04, 0x8b, 0xac, 0x97,
+ 0x3f, 0xf3, 0x11, 0x5c, 0xef, 0x17, 0x93, 0xad, 0xa6, 0xed, 0x98, 0x84, 0x19, 0xb6, 0x85, 0xfe,
+ 0x0f, 0x49, 0xfb, 0xd4, 0x6f, 0x1d, 0xd5, 0xfd, 0x27, 0xe0, 0xd1, 0x09, 0x8b, 0x5a, 0xe9, 0xb1,
+ 0x78, 0x08, 0xe5, 0x00, 0xfa, 0xb9, 0xdd, 0x0b, 0x4e, 0x06, 0x4b, 0xc2, 0x11, 0x4a, 0xe6, 0x93,
+ 0x18, 0x24, 0x24, 0x7f, 0x5a, 0x0a, 0xcd, 0x16, 0xda, 0x82, 0x04, 0x9f, 0x1c, 0xcd, 0xd0, 0x79,
+ 0xb9, 0xe4, 0xde, 0x0a, 0xd7, 0x72, 0x82, 0xac, 0xbb, 0x78, 0x81, 0x06, 0xbf, 0xd0, 0x06, 0xac,
+ 0x18, 0xae, 0xd6, 0xb0, 0xad, 0xa6, 0xd1, 0xf2, 0x1c, 0xaa, 0xf3, 0x52, 0x09, 0xbc, 0x6c, 0xb8,
+ 0x85, 0x7e, 0x6c, 0xc8, 0x8c, 0x30, 0xdd, 0xcc, 0x2e, 0x2c, 0xf2, 0x52, 0xae, 0x6f, 0x66, 0x03,
+ 0xe6, 0x0c, 0x46, 0x4d, 0x77, 0x35, 0x96, 0x16, 0xb6, 0x96, 0xa2, 0x4e, 0x0a, 0xcd, 0x16, 0x0e,
+ 0xb0, 0xcc, 0xd7, 0x71, 0x40, 0x65, 0xc3, 0x65, 0x81, 0x0c, 0x53, 0xb7, 0x6b, 0x5b, 0x2e, 0x45,
+ 0x1b, 0x30, 0xef, 0x32, 0xc2, 0x3c, 0x37, 0x5c, 0xc6, 0x12, 0x17, 0x57, 0x79, 0x08, 0x87, 0x10,
+ 0x7a, 0x08, 0xf3, 0x0e, 0x25, 0xae, 0x6d, 0x71, 0xf3, 0xc9, 0xbd, 0xdb, 0x9c, 0x34, 0x9a, 0x2d,
+ 0x8b, 0x39, 0x0b, 0x87, 0x6c, 0x74, 0x17, 0xe6, 0x83, 0xfd, 0x15, 0x2e, 0x29, 0x39, 0x70, 0xe6,
+ 0x1b, 0xc7, 0x21, 0xea, 0x3f, 0xa3, 0x40, 0xa1, 0xe9, 0x94, 0x11, 0xa3, 0xb3, 0x3a, 0x9b, 0x8e,
+ 0x6d, 0x2d, 0xe2, 0xe5, 0x20, 0x58, 0xe4, 0xb1, 0xcc, 0x33, 0x98, 0x0f, 0xd2, 0xa3, 0xeb, 0x20,
+ 0xd6, 0x94, 0xa2, 0x74, 0x28, 0x2b, 0x52, 0x51, 0xc3, 0x52, 0xbe, 0x5a, 0x51, 0xc4, 0x19, 0x84,
+ 0x20, 0x59, 0x53, 0xde, 0x56, 0x2a, 0x27, 0x8a, 0x56, 0x94, 0xea, 0x72, 0x41, 0x12, 0x63, 0x7e,
+ 0x4c, 0x56, 0x54, 0x09, 0x2b, 0xf9, 0xb2, 0x26, 0x61, 0x5c, 0xc1, 0x62, 0x1c, 0xdd, 0x00, 0x14,
+ 0xe0, 0x5a, 0x4d, 0xc1, 0x52, 0xbe, 0x50, 0xca, 0x1f, 0x94, 0x25, 0x51, 0xc8, 0xbc, 0x8a, 0x41,
+ 0x2a, 0xb4, 0x16, 0x36, 0x86, 0xcf, 0x17, 0xa6, 0x2f, 0x3c, 0xea, 0x32, 0xb4, 0x0d, 0x4b, 0x3a,
+ 0xf5, 0x8f, 0x07, 0xcd, 0xf3, 0xc2, 0xa6, 0x2f, 0xed, 0x2d, 0xf2, 0x05, 0xd5, 0x3c, 0x43, 0xc7,
+ 0x10, 0xa0, 0xfe, 0x6f, 0xb4, 0x0d, 0x0b, 0x8d, 0x36, 0xb1, 0x5a, 0xd4, 0xbd, 0xb0, 0x7b, 0xfa,
+ 0x0b, 0xf7, 0x77, 0x6f, 0x48, 0x40, 0xdb, 0x20, 0x3a, 0xd4, 0xa5, 0x4c, 0x63, 0xb6, 0xa6, 0xd3,
+ 0x26, 0xf1, 0x3a, 0x8c, 0x3f, 0xad, 0x44, 0x69, 0x06, 0x27, 0x39, 0xa2, 0xda, 0xc5, 0x20, 0xee,
+ 0xef, 0x07, 0xbb, 0x4b, 0x03, 0x5f, 0x99, 0xaf, 0xe2, 0xb0, 0x3e, 0xd6, 0xef, 0xeb, 0x74, 0xf6,
+ 0xcd, 0xa1, 0xce, 0x6e, 0x46, 0x8d, 0x8e, 0x4b, 0x3b, 0xdc, 0xe2, 0x91, 0xd6, 0x09, 0x63, 0x5a,
+ 0xe7, 0xfc, 0x4d, 0xad, 0xe3, 0xb1, 0x7a, 0xbe, 0x2c, 0x17, 0xb5, 0x42, 0x45, 0x39, 0x94, 0x9f,
+ 0x8a, 0xc2, 0x84, 0x76, 0xce, 0x66, 0xbe, 0x8c, 0xc1, 0x0a, 0x5f, 0xc7, 0x11, 0x65, 0xa4, 0x48,
+ 0x18, 0x79, 0xad, 0x0e, 0xee, 0x42, 0xb2, 0x61, 0x9b, 0x5d, 0xdb, 0xf2, 0xf7, 0x38, 0xa7, 0xc7,
+ 0x87, 0xe9, 0x2b, 0x7d, 0x02, 0x57, 0xfc, 0x27, 0xaa, 0xb0, 0x88, 0x49, 0xc3, 0x27, 0x31, 0xa0,
+ 0x29, 0xc4, 0xa4, 0x99, 0x8f, 0xe3, 0x30, 0xc7, 0x6d, 0xa1, 0xc7, 0x90, 0x0c, 0x8e, 0x10, 0x93,
+ 0x32, 0xa2, 0x13, 0x46, 0x42, 0x47, 0x68, 0xd0, 0x82, 0x9e, 0x75, 0xbc, 0x42, 0x7b, 0x7f, 0x7d,
+ 0xe2, 0x85, 0xd3, 0x27, 0x7e, 0xe9, 0xe9, 0xf3, 0x08, 0x16, 0x1d, 0x62, 0xb8, 0x54, 0xd7, 0xfa,
+ 0x9b, 0x30, 0x95, 0x0d, 0xde, 0x48, 0xd9, 0xde, 0x1b, 0x29, 0xab, 0xf6, 0x5e, 0x59, 0x38, 0x11,
+ 0x90, 0x55, 0x17, 0xbd, 0x05, 0xc9, 0xfe, 0x71, 0xa3, 0x19, 0x56, 0xd3, 0xe6, 0x7b, 0x72, 0x69,
+ 0x6f, 0xed, 0xe2, 0xa9, 0x14, 0x39, 0x88, 0xf1, 0x0a, 0x8b, 0x46, 0xd1, 0x1a, 0x24, 0x88, 0x1e,
+ 0x6a, 0xe7, 0xf8, 0xa3, 0x58, 0x20, 0x3a, 0x87, 0xb6, 0x7f, 0x4e, 0x86, 0x47, 0xa9, 0xac, 0xbb,
+ 0x68, 0x15, 0xae, 0x4b, 0x75, 0x49, 0x51, 0x35, 0x25, 0x7f, 0xe4, 0x37, 0x31, 0x9c, 0x0e, 0x71,
+ 0x06, 0xdd, 0x86, 0x54, 0x80, 0xa8, 0x38, 0xaf, 0x54, 0x0b, 0x92, 0x5c, 0x97, 0xb0, 0x76, 0x5c,
+ 0xae, 0x3d, 0xd5, 0x2a, 0x35, 0x55, 0xd4, 0xd1, 0x2d, 0x58, 0x9b, 0x80, 0xcb, 0x8a, 0x48, 0xd1,
+ 0x0e, 0xdc, 0x1b, 0x85, 0xeb, 0x95, 0xb2, 0x9a, 0x7f, 0x2a, 0x69, 0xf9, 0x83, 0x4a, 0x5d, 0xd2,
+ 0xd4, 0x12, 0x96, 0xaa, 0xa5, 0x4a, 0xb9, 0x28, 0x36, 0x2f, 0xa7, 0x1f, 0x48, 0xe5, 0xca, 0x49,
+ 0x84, 0xde, 0x42, 0xf7, 0x61, 0x67, 0x94, 0xae, 0x4a, 0x47, 0xc7, 0x12, 0xce, 0xab, 0x35, 0x3c,
+ 0x5a, 0xa1, 0x3d, 0x5d, 0x32, 0x5c, 0xc5, 0x18, 0x6f, 0xaa, 0x50, 0xc3, 0xd8, 0x8f, 0x0d, 0x57,
+ 0x78, 0xef, 0x72, 0xfa, 0x70, 0xf6, 0xe7, 0x28, 0x0b, 0xdb, 0xa3, 0x74, 0xfc, 0x8e, 0x76, 0x5c,
+ 0x39, 0x91, 0xf0, 0x48, 0xfa, 0xce, 0x14, 0xfe, 0x70, 0x7e, 0x73, 0x3c, 0x5f, 0x9d, 0x94, 0xdf,
+ 0x9a, 0xc2, 0x1f, 0xce, 0x6f, 0x8f, 0x1f, 0x80, 0xc3, 0xbc, 0x5c, 0xae, 0x61, 0x49, 0xec, 0xa2,
+ 0x47, 0xb0, 0x7f, 0xe5, 0x01, 0xd0, 0xb0, 0x54, 0xa8, 0xd4, 0x25, 0x2c, 0x15, 0xc5, 0x17, 0x97,
+ 0x0b, 0x87, 0x6c, 0x44, 0x84, 0x0e, 0x7a, 0x02, 0x8f, 0x5e, 0x6b, 0x28, 0x22, 0x62, 0x77, 0xba,
+ 0x78, 0x72, 0x65, 0x36, 0xde, 0xf2, 0x84, 0x41, 0x89, 0x08, 0xbd, 0xcb, 0x85, 0x93, 0x2b, 0x9e,
+ 0xa1, 0x37, 0xe0, 0xc1, 0xd5, 0x87, 0x27, 0xa2, 0x3c, 0x9f, 0xa2, 0x9c, 0x5c, 0xf3, 0xfd, 0xf1,
+ 0x4a, 0x75, 0x7a, 0xcd, 0x97, 0x53, 0x94, 0x93, 0x6b, 0x7e, 0x80, 0x36, 0x61, 0x63, 0xe2, 0x90,
+ 0x45, 0x88, 0x1f, 0xa2, 0x9b, 0x80, 0x02, 0xe2, 0x71, 0xb5, 0x36, 0x38, 0xa6, 0xbe, 0x8f, 0xa1,
+ 0x1b, 0x70, 0x6d, 0x08, 0x90, 0x15, 0xf1, 0x87, 0xa1, 0x78, 0x6f, 0x6c, 0x7f, 0x8c, 0xa1, 0x34,
+ 0xac, 0x8f, 0xc4, 0x23, 0x95, 0x7e, 0x8a, 0x28, 0x0f, 0xf3, 0x4a, 0x5f, 0xf9, 0x4d, 0x7c, 0x60,
+ 0xc1, 0x8f, 0xf7, 0x2d, 0xbc, 0x8a, 0x5f, 0x14, 0xf4, 0x2c, 0x7c, 0x1b, 0x1f, 0x94, 0x8a, 0x24,
+ 0x8a, 0x94, 0xfa, 0x2e, 0x8e, 0xee, 0xc1, 0xbf, 0x03, 0x46, 0xe1, 0xb8, 0x36, 0x66, 0x94, 0x0b,
+ 0x58, 0x56, 0xe5, 0x42, 0xbe, 0x2c, 0x7e, 0x2a, 0xa0, 0xbb, 0xf0, 0xaf, 0xcb, 0xa8, 0x87, 0x79,
+ 0x35, 0x5f, 0x16, 0x3f, 0x13, 0xd0, 0x3e, 0x64, 0xaf, 0x92, 0x32, 0xe2, 0xe3, 0x73, 0x01, 0xed,
+ 0xc2, 0x7f, 0xa7, 0x26, 0x8f, 0x28, 0xbe, 0x10, 0x50, 0x0a, 0xfe, 0x19, 0x28, 0x4a, 0x27, 0xe1,
+ 0xb5, 0x42, 0xc3, 0x52, 0x55, 0x52, 0xc5, 0x5f, 0x05, 0x94, 0xeb, 0x9d, 0x34, 0x03, 0xec, 0x92,
+ 0xb5, 0xfd, 0x26, 0xa0, 0xff, 0xc1, 0xe6, 0x74, 0x41, 0xb0, 0xc2, 0xdf, 0x05, 0xf4, 0xb8, 0x37,
+ 0x6d, 0x57, 0x49, 0x1f, 0x71, 0xfd, 0x87, 0x80, 0x1e, 0xc2, 0xfd, 0x2b, 0x16, 0x8a, 0xe8, 0xfe,
+ 0x14, 0xf6, 0x7e, 0x89, 0xc1, 0x2d, 0x85, 0x30, 0xe3, 0x8c, 0x06, 0xb7, 0xb7, 0x23, 0x62, 0x91,
+ 0x16, 0x35, 0xa9, 0xc5, 0xaa, 0xc1, 0x67, 0x2d, 0x7a, 0x08, 0x30, 0xb8, 0xb2, 0xa3, 0xe0, 0xf3,
+ 0xa2, 0x44, 0x1c, 0xfd, 0x9c, 0x38, 0x54, 0x2e, 0xa6, 0x6e, 0x4e, 0xb8, 0xd4, 0xa3, 0x67, 0xb0,
+ 0x56, 0xeb, 0xea, 0x84, 0xd1, 0x31, 0xd7, 0x42, 0x74, 0x67, 0xf2, 0x85, 0x91, 0xdf, 0x9b, 0x53,
+ 0xe9, 0x69, 0x37, 0x4a, 0xf4, 0x00, 0x96, 0xab, 0xcc, 0xa1, 0xc4, 0x0c, 0x9d, 0xdd, 0x18, 0xb9,
+ 0xa0, 0x48, 0xfe, 0x27, 0x73, 0x0a, 0x06, 0x99, 0x76, 0x63, 0x07, 0x4f, 0xde, 0x7d, 0xdc, 0x32,
+ 0x58, 0xdb, 0x3b, 0xcd, 0x36, 0x6c, 0x33, 0x67, 0x77, 0xa9, 0xd5, 0xb0, 0x1d, 0x3d, 0x17, 0xdc,
+ 0xe1, 0x76, 0xcc, 0xfe, 0xea, 0x77, 0x0c, 0x8b, 0x51, 0xa7, 0x49, 0x1a, 0x34, 0x77, 0xb6, 0x9f,
+ 0x6b, 0xd9, 0x39, 0xdd, 0x34, 0x4e, 0xe7, 0x79, 0xea, 0xfd, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff,
+ 0x6c, 0x0c, 0x39, 0xe6, 0x06, 0x10, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -1071,6 +1074,8 @@
// The default behavior of the device is to report all the supported events
// This configuration is persisted across reboots of the device or the device manager
UpdateEventsConfiguration(ctx context.Context, in *EventsConfigurationRequest, opts ...grpc.CallOption) (*EventsConfigurationResponse, error)
+ // Initiate the server streaming of the events
+ StreamEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (NativeEventsManagementService_StreamEventsClient, error)
}
type nativeEventsManagementServiceClient struct {
@@ -1099,6 +1104,38 @@
return out, nil
}
+func (c *nativeEventsManagementServiceClient) StreamEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (NativeEventsManagementService_StreamEventsClient, error) {
+ stream, err := c.cc.NewStream(ctx, &_NativeEventsManagementService_serviceDesc.Streams[0], "/dmi.NativeEventsManagementService/StreamEvents", opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &nativeEventsManagementServiceStreamEventsClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
+}
+
+type NativeEventsManagementService_StreamEventsClient interface {
+ Recv() (*Event, error)
+ grpc.ClientStream
+}
+
+type nativeEventsManagementServiceStreamEventsClient struct {
+ grpc.ClientStream
+}
+
+func (x *nativeEventsManagementServiceStreamEventsClient) Recv() (*Event, error) {
+ m := new(Event)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
// NativeEventsManagementServiceServer is the server API for NativeEventsManagementService service.
type NativeEventsManagementServiceServer interface {
// List the supported events for the passed device
@@ -1107,6 +1144,8 @@
// The default behavior of the device is to report all the supported events
// This configuration is persisted across reboots of the device or the device manager
UpdateEventsConfiguration(context.Context, *EventsConfigurationRequest) (*EventsConfigurationResponse, error)
+ // Initiate the server streaming of the events
+ StreamEvents(*empty.Empty, NativeEventsManagementService_StreamEventsServer) error
}
// UnimplementedNativeEventsManagementServiceServer can be embedded to have forward compatible implementations.
@@ -1119,6 +1158,9 @@
func (*UnimplementedNativeEventsManagementServiceServer) UpdateEventsConfiguration(ctx context.Context, req *EventsConfigurationRequest) (*EventsConfigurationResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateEventsConfiguration not implemented")
}
+func (*UnimplementedNativeEventsManagementServiceServer) StreamEvents(req *empty.Empty, srv NativeEventsManagementService_StreamEventsServer) error {
+ return status.Errorf(codes.Unimplemented, "method StreamEvents not implemented")
+}
func RegisterNativeEventsManagementServiceServer(s *grpc.Server, srv NativeEventsManagementServiceServer) {
s.RegisterService(&_NativeEventsManagementService_serviceDesc, srv)
@@ -1160,6 +1202,27 @@
return interceptor(ctx, in, info, handler)
}
+func _NativeEventsManagementService_StreamEvents_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(empty.Empty)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(NativeEventsManagementServiceServer).StreamEvents(m, &nativeEventsManagementServiceStreamEventsServer{stream})
+}
+
+type NativeEventsManagementService_StreamEventsServer interface {
+ Send(*Event) error
+ grpc.ServerStream
+}
+
+type nativeEventsManagementServiceStreamEventsServer struct {
+ grpc.ServerStream
+}
+
+func (x *nativeEventsManagementServiceStreamEventsServer) Send(m *Event) error {
+ return x.ServerStream.SendMsg(m)
+}
+
var _NativeEventsManagementService_serviceDesc = grpc.ServiceDesc{
ServiceName: "dmi.NativeEventsManagementService",
HandlerType: (*NativeEventsManagementServiceServer)(nil),
@@ -1173,6 +1236,12 @@
Handler: _NativeEventsManagementService_UpdateEventsConfiguration_Handler,
},
},
- Streams: []grpc.StreamDesc{},
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "StreamEvents",
+ Handler: _NativeEventsManagementService_StreamEvents_Handler,
+ ServerStreams: true,
+ },
+ },
Metadata: "dmi/hw_events_mgmt_service.proto",
}
diff --git a/go/dmi/hw_metrics_mgmt_service.pb.go b/go/dmi/hw_metrics_mgmt_service.pb.go
index e3d211f..93426b0 100644
--- a/go/dmi/hw_metrics_mgmt_service.pb.go
+++ b/go/dmi/hw_metrics_mgmt_service.pb.go
@@ -7,6 +7,7 @@
context "context"
fmt "fmt"
proto "github.com/golang/protobuf/proto"
+ empty "github.com/golang/protobuf/ptypes/empty"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
@@ -587,7 +588,7 @@
return ""
}
-// The Metrics are conveyed to external systems by submitting them on a kafka bus.
+// The Metrics are conveyed to external systems either by submitting them on a message bus or using gRPC server streaming.
// The topic to which are Metrics are submitted would be configured as startup
// configuration of the components
type Metric struct {
@@ -774,82 +775,85 @@
func init() { proto.RegisterFile("dmi/hw_metrics_mgmt_service.proto", fileDescriptor_6b6c2f1384c11ff5) }
var fileDescriptor_6b6c2f1384c11ff5 = []byte{
- // 1198 bytes of a gzipped FileDescriptorProto
+ // 1242 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4d, 0x6f, 0xdb, 0x46,
- 0x13, 0x36, 0xa9, 0xc4, 0x89, 0x57, 0xb6, 0x42, 0xaf, 0xf3, 0xa1, 0x38, 0xc9, 0x1b, 0x59, 0xc1,
- 0x5b, 0x08, 0x69, 0x23, 0x07, 0x0e, 0x8a, 0x7e, 0xe5, 0x50, 0x9a, 0xdc, 0xd8, 0x44, 0x28, 0x4a,
- 0x58, 0x91, 0x72, 0xd2, 0x43, 0x17, 0x1b, 0x71, 0x23, 0x13, 0x10, 0x49, 0x95, 0xa4, 0x9c, 0x9f,
- 0x50, 0xf4, 0xd6, 0xb4, 0xe8, 0x4f, 0x68, 0x4f, 0xfd, 0xfe, 0x01, 0xbd, 0x15, 0xe8, 0xe7, 0xbd,
- 0xfd, 0x1f, 0x6d, 0x81, 0xde, 0x0a, 0xee, 0x52, 0xca, 0x5a, 0x96, 0x9b, 0xba, 0xe8, 0x4d, 0x7a,
- 0xe6, 0x99, 0x99, 0x67, 0x66, 0x96, 0xb3, 0x0b, 0x36, 0xfc, 0x30, 0xd8, 0xdc, 0x7f, 0x42, 0x42,
- 0x96, 0x25, 0x41, 0x3f, 0x25, 0xe1, 0x20, 0xcc, 0x48, 0xca, 0x92, 0x83, 0xa0, 0xcf, 0x9a, 0xa3,
- 0x24, 0xce, 0x62, 0x58, 0xf2, 0xc3, 0x60, 0x7d, 0x35, 0xe7, 0xf5, 0xe3, 0x30, 0x8c, 0xa3, 0x54,
- 0xe0, 0xeb, 0xcb, 0xc2, 0x55, 0xfc, 0xab, 0xbf, 0xab, 0x80, 0xe5, 0x16, 0x0f, 0x62, 0xc4, 0xd1,
- 0xe3, 0x60, 0x00, 0x6f, 0x81, 0x25, 0x11, 0x94, 0x04, 0x7e, 0x55, 0xa9, 0x29, 0x8d, 0xca, 0x96,
- 0xd6, 0xf4, 0xc3, 0xa0, 0x29, 0x58, 0x0e, 0x0d, 0x59, 0x8a, 0xcf, 0x0a, 0x8a, 0xe5, 0xc3, 0x1b,
- 0x60, 0x25, 0x48, 0x49, 0x9f, 0xfb, 0x8e, 0x13, 0xe6, 0x57, 0xd5, 0x9a, 0xd2, 0x38, 0x8b, 0x97,
- 0x83, 0xd4, 0x98, 0x62, 0x39, 0x69, 0x14, 0x0f, 0x87, 0x24, 0x88, 0x32, 0x96, 0x1c, 0xd0, 0x61,
- 0xb5, 0x54, 0x53, 0x1a, 0x2b, 0x78, 0x39, 0x07, 0xad, 0x02, 0xab, 0xdf, 0x05, 0x2b, 0x22, 0x45,
- 0xe1, 0x09, 0x5f, 0x04, 0x67, 0x8a, 0xf2, 0xaa, 0x4a, 0xad, 0xd4, 0x28, 0x6f, 0xad, 0x4a, 0x3a,
- 0x04, 0x07, 0x4f, 0x18, 0xf5, 0x4f, 0x54, 0xb0, 0x66, 0x07, 0x69, 0x56, 0x84, 0xc0, 0x2c, 0x1d,
- 0xc5, 0x51, 0xca, 0xe0, 0x0d, 0xb0, 0x98, 0x66, 0x34, 0x1b, 0xa7, 0x45, 0x2d, 0x65, 0x1e, 0xa3,
- 0xcb, 0x21, 0x5c, 0x98, 0xe0, 0x2b, 0x60, 0x31, 0x61, 0x34, 0x8d, 0x23, 0xae, 0xbe, 0xb2, 0x75,
- 0x9d, 0x93, 0xe6, 0x84, 0x6b, 0x62, 0x4e, 0xc3, 0x05, 0x1d, 0xbe, 0xf4, 0x4c, 0x62, 0x5e, 0x52,
- 0x79, 0x0b, 0x4a, 0x12, 0xd3, 0x19, 0x8d, 0x79, 0x1b, 0x84, 0x1f, 0xf1, 0x59, 0x46, 0x83, 0x61,
- 0xf5, 0x54, 0x4d, 0x69, 0x2c, 0xe1, 0x65, 0x01, 0x9a, 0x1c, 0xab, 0xbf, 0x0d, 0x16, 0x45, 0x12,
- 0x78, 0x1e, 0x68, 0x9e, 0x63, 0xa2, 0x7b, 0x96, 0x83, 0x4c, 0x82, 0x91, 0xde, 0x6d, 0x3b, 0xda,
- 0x02, 0x84, 0xa0, 0xe2, 0x39, 0xf7, 0x9d, 0xf6, 0x9e, 0x43, 0x4c, 0xd4, 0xb3, 0x0c, 0xa4, 0x29,
- 0x39, 0x66, 0x39, 0x2e, 0xc2, 0x8e, 0x6e, 0x13, 0x84, 0x71, 0x1b, 0x6b, 0x2a, 0xbc, 0x08, 0xa0,
- 0xb0, 0x13, 0xcf, 0xc1, 0x48, 0x37, 0x76, 0xf5, 0x6d, 0x1b, 0x69, 0xa5, 0xfa, 0xd7, 0x0a, 0xb8,
- 0x72, 0x48, 0xdf, 0x38, 0xa1, 0x59, 0x10, 0x47, 0x98, 0xbd, 0x33, 0x66, 0x69, 0x06, 0x6f, 0x82,
- 0xb2, 0xcf, 0xf2, 0x63, 0x44, 0xc6, 0xe3, 0xe2, 0x04, 0x94, 0xb7, 0x96, 0x78, 0x59, 0xde, 0x38,
- 0xf0, 0x31, 0x10, 0xd6, 0xfc, 0x37, 0x6c, 0x82, 0x33, 0xfd, 0x7d, 0x1a, 0x0d, 0x58, 0xca, 0x1b,
- 0x37, 0xb7, 0xfc, 0xdd, 0x05, 0x3c, 0x21, 0xc1, 0x9b, 0x40, 0x4b, 0x58, 0xca, 0x32, 0x92, 0xc5,
- 0xc4, 0x67, 0x8f, 0xe9, 0x78, 0x98, 0xf1, 0xbe, 0x9d, 0xdd, 0x5d, 0xc0, 0x15, 0x6e, 0x71, 0x63,
- 0x53, 0xe0, 0xdb, 0x65, 0xb0, 0x14, 0x8f, 0x98, 0xd0, 0x56, 0xff, 0x46, 0x05, 0x57, 0xe7, 0x8b,
- 0x3e, 0xc9, 0x98, 0xdf, 0x9c, 0x19, 0x73, 0xe3, 0xa8, 0xda, 0x99, 0xb8, 0xb3, 0xf3, 0x3e, 0x32,
- 0xc1, 0xd2, 0x9c, 0x09, 0x3e, 0x55, 0xfe, 0xa3, 0x11, 0x5e, 0x03, 0x97, 0x3b, 0x6d, 0xdb, 0x26,
- 0xdc, 0xd0, 0xd3, 0x6d, 0xe2, 0x39, 0x5d, 0xaf, 0xd3, 0x69, 0x63, 0x17, 0x99, 0x5a, 0x49, 0xb8,
- 0xf4, 0x74, 0xdb, 0x32, 0x49, 0x0b, 0xb9, 0xd8, 0x32, 0xb4, 0x53, 0xc7, 0x4c, 0xfd, 0x74, 0xfd,
- 0x23, 0x05, 0x54, 0x44, 0xa1, 0x2d, 0x96, 0x51, 0x93, 0x66, 0xf4, 0x44, 0x83, 0xbe, 0x0d, 0x2a,
- 0xfd, 0x38, 0x1c, 0xc5, 0x11, 0x8b, 0x32, 0x41, 0x57, 0x67, 0xe9, 0x2b, 0x53, 0x02, 0xf7, 0xf8,
- 0xbf, 0xec, 0x11, 0xd1, 0x90, 0x15, 0xad, 0x7a, 0x46, 0xcb, 0x37, 0x49, 0xfd, 0x63, 0x05, 0x2c,
- 0x0a, 0x5d, 0x27, 0x5d, 0x3c, 0x77, 0xc1, 0xb9, 0x82, 0x1e, 0xb2, 0x8c, 0xfa, 0x34, 0xa3, 0x85,
- 0xa6, 0x35, 0xc9, 0x69, 0x52, 0x2c, 0xae, 0x84, 0xd3, 0xff, 0x39, 0x15, 0x36, 0xc1, 0xe9, 0x03,
- 0x3a, 0x1c, 0xb3, 0xe2, 0xb3, 0xad, 0x72, 0x1f, 0x63, 0x22, 0xad, 0xcb, 0xa2, 0x34, 0x4e, 0xb8,
- 0xa3, 0xa0, 0xd5, 0x53, 0xa0, 0xed, 0xb0, 0x62, 0x1b, 0x4c, 0xbe, 0x94, 0xdb, 0x5c, 0x30, 0x25,
- 0x3c, 0xb7, 0x72, 0x7c, 0xee, 0x5c, 0xb3, 0x68, 0xf9, 0xa1, 0x12, 0xd5, 0xe7, 0x95, 0x58, 0xff,
- 0x56, 0x05, 0xab, 0x52, 0xd6, 0x93, 0x1c, 0xf5, 0x97, 0x67, 0x8e, 0xfa, 0x35, 0x4e, 0x3a, 0x12,
- 0xec, 0xe8, 0xf9, 0x5e, 0x14, 0xd9, 0x8b, 0xbe, 0x94, 0x25, 0x75, 0xb8, 0x30, 0xfd, 0xb3, 0x35,
- 0xf6, 0xde, 0xbf, 0xf9, 0x08, 0x2e, 0x80, 0xd5, 0x09, 0x66, 0xb4, 0x5b, 0x9d, 0xb6, 0x83, 0x1c,
- 0x57, 0x53, 0xe7, 0x7c, 0x1b, 0x27, 0x3a, 0xfc, 0x37, 0x7f, 0x3d, 0x0d, 0xca, 0x52, 0x87, 0xe1,
- 0x65, 0x70, 0x41, 0xf8, 0x10, 0x47, 0x6f, 0xe5, 0xe4, 0x42, 0x9c, 0xb6, 0x90, 0x6b, 0x2d, 0x4c,
- 0xf7, 0x74, 0x87, 0x74, 0x3b, 0x08, 0x99, 0x9a, 0x02, 0xd7, 0xc0, 0xb9, 0x02, 0x35, 0x3a, 0x1e,
- 0x71, 0x51, 0xab, 0xa3, 0xf9, 0xf0, 0x3a, 0xb8, 0x22, 0x81, 0x5e, 0x57, 0xdf, 0x41, 0xa4, 0x83,
- 0xb0, 0x81, 0x1c, 0x57, 0xdf, 0x41, 0x1a, 0x83, 0x57, 0xc1, 0xa5, 0x82, 0xe0, 0x62, 0xdd, 0xe9,
- 0x1a, 0xc8, 0xea, 0x21, 0x2c, 0xbc, 0xbf, 0x53, 0xe0, 0x75, 0xb0, 0x3e, 0xc7, 0xda, 0x6b, 0xdb,
- 0xdc, 0xfb, 0x7b, 0xe5, 0x18, 0xf7, 0x6d, 0x4b, 0xef, 0x6a, 0x3f, 0x28, 0xb0, 0x36, 0xcd, 0x2e,
- 0x5b, 0xf1, 0x03, 0xd2, 0x69, 0xef, 0x21, 0xac, 0xfd, 0x78, 0x1c, 0xc3, 0x9d, 0x30, 0x7e, 0x52,
- 0x60, 0x1d, 0x5c, 0x9b, 0xc3, 0xd8, 0xd3, 0x7b, 0xc8, 0x46, 0xce, 0x8e, 0xbb, 0xab, 0xfd, 0x9c,
- 0x8f, 0x64, 0xd2, 0x10, 0xd3, 0xea, 0xde, 0x17, 0xea, 0x3f, 0x55, 0xe1, 0x65, 0x70, 0x5e, 0x86,
- 0x0d, 0xbd, 0xa3, 0x1b, 0x96, 0xfb, 0x50, 0xfb, 0x2c, 0xbf, 0x78, 0x56, 0x65, 0x13, 0x6f, 0x8c,
- 0xf6, 0xb9, 0x0a, 0x37, 0xc0, 0xd5, 0x23, 0xb8, 0xdc, 0xb0, 0x2f, 0x54, 0xf8, 0x02, 0xd8, 0x90,
- 0x29, 0x18, 0xe9, 0x26, 0xd9, 0xc3, 0x96, 0x7b, 0x88, 0xf7, 0xa5, 0x0a, 0x1b, 0xe0, 0x86, 0xcc,
- 0xbb, 0xa7, 0x7b, 0xb6, 0xfb, 0x90, 0x18, 0xc8, 0xb6, 0xbb, 0x32, 0xf3, 0x2b, 0x15, 0x9e, 0x9f,
- 0x4e, 0x0e, 0xeb, 0x2d, 0xa1, 0xfe, 0xfd, 0x12, 0xac, 0x82, 0x35, 0x09, 0x9d, 0x8a, 0x7f, 0x5a,
- 0x92, 0xca, 0xcd, 0x2d, 0x42, 0xfb, 0x07, 0x25, 0xa9, 0x97, 0x53, 0x58, 0x4e, 0xf4, 0xa1, 0xec,
- 0xc8, 0xdb, 0x4b, 0x5a, 0xfa, 0x03, 0xed, 0xb7, 0x12, 0xbc, 0x04, 0xe0, 0x21, 0x58, 0x44, 0xfc,
- 0xbd, 0x24, 0xf5, 0x5e, 0x32, 0xc8, 0x31, 0xff, 0x90, 0x39, 0x96, 0xe3, 0x20, 0x4c, 0xba, 0x1e,
- 0xc6, 0x6d, 0xcf, 0x31, 0x2d, 0x67, 0x47, 0x94, 0xf2, 0xcb, 0xa9, 0xad, 0x3f, 0x15, 0xf0, 0x3f,
- 0x87, 0x66, 0xc1, 0x01, 0x2b, 0xee, 0xb1, 0x16, 0x8d, 0xe8, 0x80, 0x85, 0x7c, 0x8b, 0xf1, 0xe7,
- 0x20, 0x7c, 0x15, 0x94, 0xa5, 0xa7, 0x0c, 0x3c, 0xc7, 0xbf, 0xe9, 0x5d, 0x9a, 0xf8, 0x4f, 0x68,
- 0xc2, 0x2c, 0x73, 0xbd, 0x7a, 0xdc, 0x6b, 0x07, 0x52, 0xb0, 0xee, 0x8d, 0x7c, 0x9a, 0xb1, 0x79,
- 0x77, 0x24, 0xac, 0xfd, 0xcd, 0xf5, 0xc9, 0x37, 0xe4, 0xfa, 0xc6, 0x73, 0x2f, 0x58, 0xf8, 0x3a,
- 0x58, 0x9a, 0x6e, 0x25, 0x78, 0x61, 0x76, 0x4b, 0x89, 0x30, 0x17, 0xe7, 0x2f, 0xaf, 0xed, 0x37,
- 0xde, 0x7a, 0x6d, 0x10, 0x64, 0xfb, 0xe3, 0x47, 0xcd, 0x7e, 0x1c, 0x6e, 0xc6, 0x23, 0x16, 0xf5,
- 0xe3, 0xc4, 0xdf, 0x14, 0xf7, 0xd6, 0xad, 0x70, 0xda, 0x88, 0x5b, 0xfc, 0xdd, 0xf9, 0x98, 0xf6,
- 0xd9, 0xe6, 0xc1, 0x9d, 0xcd, 0x41, 0xbc, 0xe9, 0x87, 0xc1, 0xa3, 0x45, 0xfe, 0xfe, 0xbd, 0xf3,
- 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa4, 0xee, 0x26, 0xad, 0x4a, 0x0b, 0x00, 0x00,
+ 0x13, 0x36, 0xa9, 0xc4, 0x89, 0x57, 0xb6, 0x42, 0xaf, 0xf3, 0xa1, 0x28, 0xc9, 0x1b, 0x59, 0xc1,
+ 0x5b, 0x08, 0x69, 0x23, 0x05, 0x0e, 0xfa, 0x9d, 0x43, 0x69, 0x72, 0x63, 0x13, 0x91, 0x28, 0x61,
+ 0x45, 0xda, 0x49, 0x0f, 0x5d, 0x6c, 0xc4, 0xb5, 0x4c, 0x40, 0x24, 0x55, 0x92, 0x72, 0xd0, 0x5f,
+ 0x50, 0xf4, 0xd6, 0xb4, 0xe8, 0x4f, 0x68, 0x4f, 0xfd, 0x4a, 0x7f, 0x40, 0x6f, 0x05, 0xfa, 0x79,
+ 0x6f, 0xff, 0x47, 0xdb, 0x73, 0xc1, 0x5d, 0x4a, 0x59, 0xcb, 0x72, 0x53, 0x17, 0xbd, 0x49, 0xcf,
+ 0x3c, 0x33, 0xf3, 0xcc, 0xcc, 0x72, 0x76, 0xc1, 0xba, 0x17, 0xf8, 0xcd, 0xfd, 0xc7, 0x24, 0x60,
+ 0x69, 0xec, 0xf7, 0x13, 0x12, 0x0c, 0x82, 0x94, 0x24, 0x2c, 0x3e, 0xf0, 0xfb, 0xac, 0x31, 0x8a,
+ 0xa3, 0x34, 0x82, 0x05, 0x2f, 0xf0, 0x2b, 0xab, 0x19, 0xaf, 0x1f, 0x05, 0x41, 0x14, 0x26, 0x02,
+ 0xaf, 0x2c, 0x0b, 0xd7, 0xfc, 0xdf, 0x95, 0x41, 0x14, 0x0d, 0x86, 0xac, 0xc9, 0xff, 0x3d, 0x1a,
+ 0xef, 0x35, 0x59, 0x30, 0x4a, 0xdf, 0x13, 0xc6, 0xda, 0xfb, 0x0a, 0x58, 0x6e, 0xf3, 0x0c, 0x46,
+ 0x14, 0xee, 0xf9, 0x03, 0x78, 0x0b, 0x2c, 0x89, 0x8c, 0xc4, 0xf7, 0xca, 0x4a, 0x55, 0xa9, 0x97,
+ 0x36, 0xb4, 0x86, 0x17, 0xf8, 0x0d, 0xc1, 0xb2, 0x69, 0xc0, 0x12, 0x7c, 0x56, 0x50, 0x2c, 0x0f,
+ 0xde, 0x00, 0x2b, 0x7e, 0x42, 0xfa, 0xdc, 0x77, 0x1c, 0x33, 0xaf, 0xac, 0x56, 0x95, 0xfa, 0x59,
+ 0xbc, 0xec, 0x27, 0xc6, 0x14, 0xcb, 0x48, 0xa3, 0x68, 0x38, 0x24, 0x7e, 0x98, 0xb2, 0xf8, 0x80,
+ 0x0e, 0xcb, 0x85, 0xaa, 0x52, 0x5f, 0xc1, 0xcb, 0x19, 0x68, 0xe5, 0x58, 0xed, 0x2e, 0x58, 0x11,
+ 0x29, 0x72, 0x4f, 0xf8, 0x22, 0x38, 0x93, 0xd7, 0x5e, 0x56, 0xaa, 0x85, 0x7a, 0x71, 0x63, 0x55,
+ 0xd2, 0x21, 0x38, 0x78, 0xc2, 0xa8, 0x7d, 0xa6, 0x82, 0xb5, 0x96, 0x9f, 0xa4, 0x79, 0x08, 0xcc,
+ 0x92, 0x51, 0x14, 0x26, 0x0c, 0xde, 0x00, 0x8b, 0x49, 0x4a, 0xd3, 0x71, 0x92, 0xd7, 0x52, 0xe4,
+ 0x31, 0x7a, 0x1c, 0xc2, 0xb9, 0x09, 0xbe, 0x0a, 0x16, 0x63, 0x46, 0x93, 0x28, 0xe4, 0xea, 0x4b,
+ 0x1b, 0xd7, 0x39, 0x69, 0x4e, 0xb8, 0x06, 0xe6, 0x34, 0x9c, 0xd3, 0xe1, 0x4b, 0xcf, 0x24, 0x66,
+ 0x25, 0x15, 0x37, 0xa0, 0x24, 0x31, 0x99, 0xd1, 0x98, 0xb5, 0x41, 0xf8, 0x11, 0x8f, 0xa5, 0xd4,
+ 0x1f, 0x96, 0x4f, 0x55, 0x95, 0xfa, 0x12, 0x5e, 0x16, 0xa0, 0xc9, 0xb1, 0xda, 0x3b, 0x60, 0x51,
+ 0x24, 0x81, 0xe7, 0x81, 0xe6, 0xda, 0x26, 0xba, 0x67, 0xd9, 0xc8, 0x24, 0x18, 0xe9, 0xbd, 0x8e,
+ 0xad, 0x2d, 0x40, 0x08, 0x4a, 0xae, 0x7d, 0xdf, 0xee, 0xec, 0xda, 0xc4, 0x44, 0x3b, 0x96, 0x81,
+ 0x34, 0x25, 0xc3, 0x2c, 0xdb, 0x41, 0xd8, 0xd6, 0x5b, 0x04, 0x61, 0xdc, 0xc1, 0x9a, 0x0a, 0x2f,
+ 0x02, 0x28, 0xec, 0xc4, 0xb5, 0x31, 0xd2, 0x8d, 0x6d, 0x7d, 0xb3, 0x85, 0xb4, 0x42, 0xed, 0x1b,
+ 0x05, 0x5c, 0x39, 0xa4, 0x6f, 0x1c, 0xd3, 0xd4, 0x8f, 0x42, 0xcc, 0xde, 0x1d, 0xb3, 0x24, 0x85,
+ 0x37, 0x41, 0xd1, 0x63, 0xd9, 0x19, 0x23, 0xe3, 0x71, 0x7e, 0x02, 0x8a, 0x1b, 0x4b, 0xbc, 0x2c,
+ 0x77, 0xec, 0x7b, 0x18, 0x08, 0x6b, 0xf6, 0x1b, 0x36, 0xc0, 0x99, 0xfe, 0x3e, 0x0d, 0x07, 0x2c,
+ 0xe1, 0x8d, 0x9b, 0x5b, 0xfe, 0xf6, 0x02, 0x9e, 0x90, 0xe0, 0x4d, 0xa0, 0xc5, 0x2c, 0x61, 0x29,
+ 0x49, 0x23, 0xe2, 0xb1, 0x3d, 0x3a, 0x1e, 0xa6, 0xbc, 0x6f, 0x67, 0xb7, 0x17, 0x70, 0x89, 0x5b,
+ 0x9c, 0xc8, 0x14, 0xf8, 0x66, 0x11, 0x2c, 0x45, 0x23, 0x26, 0xb4, 0xd5, 0xbe, 0x55, 0xc1, 0xd5,
+ 0xf9, 0xa2, 0x4f, 0x32, 0xe6, 0xb7, 0x66, 0xc6, 0x5c, 0x3f, 0xaa, 0x76, 0x26, 0xee, 0xec, 0xbc,
+ 0x8f, 0x4c, 0xb0, 0x30, 0x67, 0x82, 0x4f, 0x94, 0xff, 0x68, 0x84, 0xd7, 0xc0, 0xe5, 0x6e, 0xa7,
+ 0xd5, 0x22, 0xdc, 0xb0, 0xa3, 0xb7, 0x88, 0x6b, 0xf7, 0xdc, 0x6e, 0xb7, 0x83, 0x1d, 0x64, 0x6a,
+ 0x05, 0xe1, 0xb2, 0xa3, 0xb7, 0x2c, 0x93, 0xb4, 0x91, 0x83, 0x2d, 0x43, 0x3b, 0x75, 0xcc, 0xd4,
+ 0x4f, 0xd7, 0x3e, 0x51, 0x40, 0x49, 0x14, 0xda, 0x66, 0x29, 0x35, 0x69, 0x4a, 0x4f, 0x34, 0xe8,
+ 0xdb, 0xa0, 0xd4, 0x8f, 0x82, 0x51, 0x14, 0xb2, 0x30, 0x15, 0x74, 0x75, 0x96, 0xbe, 0x32, 0x25,
+ 0x70, 0x8f, 0xff, 0xcb, 0x1e, 0x21, 0x0d, 0x58, 0xde, 0xaa, 0x67, 0xb4, 0x6c, 0x93, 0xd4, 0x3e,
+ 0x55, 0xc0, 0xa2, 0xd0, 0x75, 0xd2, 0xc5, 0x73, 0x17, 0x9c, 0xcb, 0xe9, 0x01, 0x4b, 0xa9, 0x47,
+ 0x53, 0x9a, 0x6b, 0x5a, 0x93, 0x9c, 0x26, 0xc5, 0xe2, 0x52, 0x30, 0xfd, 0x9f, 0x51, 0x61, 0x03,
+ 0x9c, 0x3e, 0xa0, 0xc3, 0x31, 0xcb, 0x3f, 0xdb, 0x32, 0xf7, 0x31, 0x26, 0xd2, 0x7a, 0x2c, 0x4c,
+ 0xa2, 0x98, 0x3b, 0x0a, 0x5a, 0x2d, 0x01, 0xda, 0x16, 0xcb, 0xb7, 0xc1, 0xe4, 0x4b, 0xb9, 0xcd,
+ 0x05, 0x53, 0xc2, 0x73, 0x2b, 0xc7, 0xe7, 0xce, 0x34, 0x8b, 0x96, 0x1f, 0x2a, 0x51, 0x7d, 0x5e,
+ 0x89, 0xb5, 0xef, 0x54, 0xb0, 0x2a, 0x65, 0x3d, 0xc9, 0x51, 0x7f, 0x79, 0xe6, 0xa8, 0x5f, 0xe3,
+ 0xa4, 0x23, 0xc1, 0x8e, 0x9e, 0xef, 0x45, 0x91, 0x3d, 0xef, 0x4b, 0x51, 0x52, 0x87, 0x73, 0xd3,
+ 0x3f, 0x5b, 0x63, 0x1f, 0xfc, 0x9b, 0x8f, 0xe0, 0x02, 0x58, 0x9d, 0x60, 0x46, 0xa7, 0xdd, 0xed,
+ 0xd8, 0xc8, 0x76, 0x34, 0x75, 0xce, 0xb7, 0x71, 0xa2, 0xc3, 0x7f, 0xf3, 0xb7, 0xd3, 0xa0, 0x28,
+ 0x75, 0x18, 0x5e, 0x06, 0x17, 0x84, 0x0f, 0xb1, 0xf5, 0x76, 0x46, 0xce, 0xc5, 0x69, 0x0b, 0x99,
+ 0xd6, 0xdc, 0x74, 0x4f, 0xb7, 0x49, 0xaf, 0x8b, 0x90, 0xa9, 0x29, 0x70, 0x0d, 0x9c, 0xcb, 0x51,
+ 0xa3, 0xeb, 0x12, 0x07, 0xb5, 0xbb, 0x9a, 0x07, 0xaf, 0x83, 0x2b, 0x12, 0xe8, 0xf6, 0xf4, 0x2d,
+ 0x44, 0xba, 0x08, 0x1b, 0xc8, 0x76, 0xf4, 0x2d, 0xa4, 0x31, 0x78, 0x15, 0x5c, 0xca, 0x09, 0x0e,
+ 0xd6, 0xed, 0x9e, 0x81, 0xac, 0x1d, 0x84, 0x85, 0xf7, 0xf7, 0x0a, 0xbc, 0x0e, 0x2a, 0x73, 0xac,
+ 0x3b, 0x9d, 0x16, 0xf7, 0xfe, 0x41, 0x39, 0xc6, 0x7d, 0xd3, 0xd2, 0x7b, 0xda, 0x8f, 0x0a, 0xac,
+ 0x4e, 0xb3, 0xcb, 0x56, 0xfc, 0x80, 0x74, 0x3b, 0xbb, 0x08, 0x6b, 0x3f, 0x1d, 0xc7, 0x70, 0x26,
+ 0x8c, 0x9f, 0x15, 0x58, 0x03, 0xd7, 0xe6, 0x30, 0x76, 0xf5, 0x1d, 0xd4, 0x42, 0xf6, 0x96, 0xb3,
+ 0xad, 0xfd, 0x92, 0x8d, 0x64, 0xd2, 0x10, 0xd3, 0xea, 0xdd, 0x17, 0xea, 0x3f, 0x57, 0xe1, 0x65,
+ 0x70, 0x5e, 0x86, 0x0d, 0xbd, 0xab, 0x1b, 0x96, 0xf3, 0x50, 0xfb, 0x22, 0xbb, 0x78, 0x56, 0x65,
+ 0x13, 0x6f, 0x8c, 0xf6, 0xa5, 0x0a, 0xd7, 0xc1, 0xd5, 0x23, 0xb8, 0xdc, 0xb0, 0xaf, 0x54, 0xf8,
+ 0x02, 0x58, 0x97, 0x29, 0x18, 0xe9, 0x26, 0xd9, 0xc5, 0x96, 0x73, 0x88, 0xf7, 0xb5, 0x0a, 0xeb,
+ 0xe0, 0x86, 0xcc, 0xbb, 0xa7, 0xbb, 0x2d, 0xe7, 0x21, 0x31, 0x50, 0xab, 0xd5, 0x93, 0x99, 0x4f,
+ 0x55, 0x78, 0x7e, 0x3a, 0x39, 0xac, 0xb7, 0x85, 0xfa, 0x0f, 0x0b, 0xb0, 0x0c, 0xd6, 0x24, 0x74,
+ 0x2a, 0xfe, 0x49, 0x41, 0x2a, 0x37, 0xb3, 0x08, 0xed, 0x1f, 0x15, 0xa4, 0x5e, 0x4e, 0x61, 0x39,
+ 0xd1, 0xc7, 0xb2, 0x23, 0x6f, 0x2f, 0x69, 0xeb, 0x0f, 0xb4, 0xdf, 0x0b, 0xf0, 0x12, 0x80, 0x87,
+ 0x60, 0x11, 0xf1, 0x8f, 0x82, 0xd4, 0x7b, 0xc9, 0x20, 0xc7, 0xfc, 0x53, 0xe6, 0x58, 0xb6, 0x8d,
+ 0x30, 0xe9, 0xb9, 0x18, 0x77, 0x5c, 0xdb, 0xb4, 0xec, 0x2d, 0x51, 0xca, 0xaf, 0xa7, 0x36, 0x9e,
+ 0xaa, 0xe0, 0x7f, 0x36, 0x4d, 0xfd, 0x03, 0x96, 0xdf, 0x63, 0x6d, 0x1a, 0xd2, 0x01, 0x0b, 0xf8,
+ 0x16, 0xe3, 0x6f, 0x45, 0xf8, 0x1a, 0x28, 0x4a, 0x4f, 0x19, 0x78, 0x8e, 0x7f, 0xd3, 0xdb, 0x34,
+ 0xf6, 0x1e, 0xd3, 0x98, 0x59, 0x66, 0xa5, 0x7c, 0xdc, 0x6b, 0x07, 0x52, 0x50, 0x71, 0x47, 0x1e,
+ 0x4d, 0xd9, 0xbc, 0x3b, 0x12, 0x56, 0xff, 0xe6, 0xfa, 0xe4, 0x1b, 0xb2, 0xb2, 0xfe, 0xdc, 0x0b,
+ 0x16, 0xbe, 0x01, 0x96, 0xa6, 0x5b, 0x09, 0x5e, 0x98, 0xdd, 0x52, 0x22, 0xcc, 0xc5, 0xf9, 0xcb,
+ 0x0b, 0xbe, 0x02, 0x56, 0x7a, 0x69, 0xcc, 0x68, 0x30, 0x29, 0xed, 0x62, 0x43, 0x3c, 0x75, 0x1b,
+ 0x93, 0xa7, 0x6e, 0x03, 0x65, 0x4f, 0xdd, 0x8a, 0xbc, 0xc6, 0x6e, 0x2b, 0x9b, 0x6f, 0xbe, 0xfd,
+ 0xfa, 0xc0, 0x4f, 0xf7, 0xc7, 0x8f, 0x1a, 0xfd, 0x28, 0x68, 0x46, 0x23, 0x16, 0xf6, 0xa3, 0xd8,
+ 0x6b, 0x8a, 0xfb, 0xee, 0x56, 0x30, 0x6d, 0xe0, 0x2d, 0xfe, 0x5e, 0xdd, 0xa3, 0x7d, 0xd6, 0x3c,
+ 0xb8, 0xd3, 0x1c, 0x44, 0x4d, 0x2f, 0xf0, 0x1f, 0x2d, 0xf2, 0xd8, 0x77, 0xfe, 0x0a, 0x00, 0x00,
+ 0xff, 0xff, 0x04, 0xda, 0xd9, 0x9e, 0x9f, 0x0b, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -876,6 +880,8 @@
UpdateMetricsConfiguration(ctx context.Context, in *MetricsConfigurationRequest, opts ...grpc.CallOption) (*MetricsConfigurationResponse, error)
// Get the instantenous value of a metric
GetMetric(ctx context.Context, in *GetMetricRequest, opts ...grpc.CallOption) (*GetMetricResponse, error)
+ // Initiate the server streaming of the metrics
+ StreamMetrics(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (NativeMetricsManagementService_StreamMetricsClient, error)
}
type nativeMetricsManagementServiceClient struct {
@@ -913,6 +919,38 @@
return out, nil
}
+func (c *nativeMetricsManagementServiceClient) StreamMetrics(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (NativeMetricsManagementService_StreamMetricsClient, error) {
+ stream, err := c.cc.NewStream(ctx, &_NativeMetricsManagementService_serviceDesc.Streams[0], "/dmi.NativeMetricsManagementService/StreamMetrics", opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &nativeMetricsManagementServiceStreamMetricsClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
+}
+
+type NativeMetricsManagementService_StreamMetricsClient interface {
+ Recv() (*Metric, error)
+ grpc.ClientStream
+}
+
+type nativeMetricsManagementServiceStreamMetricsClient struct {
+ grpc.ClientStream
+}
+
+func (x *nativeMetricsManagementServiceStreamMetricsClient) Recv() (*Metric, error) {
+ m := new(Metric)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
// NativeMetricsManagementServiceServer is the server API for NativeMetricsManagementService service.
type NativeMetricsManagementServiceServer interface {
// List the supported metrics for the passed device.
@@ -927,6 +965,8 @@
UpdateMetricsConfiguration(context.Context, *MetricsConfigurationRequest) (*MetricsConfigurationResponse, error)
// Get the instantenous value of a metric
GetMetric(context.Context, *GetMetricRequest) (*GetMetricResponse, error)
+ // Initiate the server streaming of the metrics
+ StreamMetrics(*empty.Empty, NativeMetricsManagementService_StreamMetricsServer) error
}
// UnimplementedNativeMetricsManagementServiceServer can be embedded to have forward compatible implementations.
@@ -942,6 +982,9 @@
func (*UnimplementedNativeMetricsManagementServiceServer) GetMetric(ctx context.Context, req *GetMetricRequest) (*GetMetricResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetMetric not implemented")
}
+func (*UnimplementedNativeMetricsManagementServiceServer) StreamMetrics(req *empty.Empty, srv NativeMetricsManagementService_StreamMetricsServer) error {
+ return status.Errorf(codes.Unimplemented, "method StreamMetrics not implemented")
+}
func RegisterNativeMetricsManagementServiceServer(s *grpc.Server, srv NativeMetricsManagementServiceServer) {
s.RegisterService(&_NativeMetricsManagementService_serviceDesc, srv)
@@ -1001,6 +1044,27 @@
return interceptor(ctx, in, info, handler)
}
+func _NativeMetricsManagementService_StreamMetrics_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(empty.Empty)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(NativeMetricsManagementServiceServer).StreamMetrics(m, &nativeMetricsManagementServiceStreamMetricsServer{stream})
+}
+
+type NativeMetricsManagementService_StreamMetricsServer interface {
+ Send(*Metric) error
+ grpc.ServerStream
+}
+
+type nativeMetricsManagementServiceStreamMetricsServer struct {
+ grpc.ServerStream
+}
+
+func (x *nativeMetricsManagementServiceStreamMetricsServer) Send(m *Metric) error {
+ return x.ServerStream.SendMsg(m)
+}
+
var _NativeMetricsManagementService_serviceDesc = grpc.ServiceDesc{
ServiceName: "dmi.NativeMetricsManagementService",
HandlerType: (*NativeMetricsManagementServiceServer)(nil),
@@ -1018,6 +1082,12 @@
Handler: _NativeMetricsManagementService_GetMetric_Handler,
},
},
- Streams: []grpc.StreamDesc{},
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "StreamMetrics",
+ Handler: _NativeMetricsManagementService_StreamMetrics_Handler,
+ ServerStreams: true,
+ },
+ },
Metadata: "dmi/hw_metrics_mgmt_service.proto",
}
diff --git a/protos/dmi/hw_events_mgmt_service.proto b/protos/dmi/hw_events_mgmt_service.proto
index 641adbe..db04006 100644
--- a/protos/dmi/hw_events_mgmt_service.proto
+++ b/protos/dmi/hw_events_mgmt_service.proto
@@ -6,6 +6,7 @@
import "dmi/commons.proto";
import "dmi/hw.proto";
import "google/protobuf/timestamp.proto";
+import "google/protobuf/empty.proto";
// Management of Events and protos for encoding of Events
@@ -143,8 +144,8 @@
string component_name = 3;
}
-// The Events are conveyed to external systems by submitting them on a kafka bus.
-// The topic to which are Events are submitted would be configured as startup
+// The Events are conveyed to external systems either by submitting them on a message bus or using gRPC server streaming.
+// The message bus topic to which are Events are submitted would be configured as startup
// configuration of the components
message Event {
@@ -166,4 +167,7 @@
// The default behavior of the device is to report all the supported events
// This configuration is persisted across reboots of the device or the device manager
rpc UpdateEventsConfiguration(EventsConfigurationRequest) returns(EventsConfigurationResponse);
+
+ // Initiate the server streaming of the events
+ rpc StreamEvents(google.protobuf.Empty) returns(stream Event);
}
diff --git a/protos/dmi/hw_metrics_mgmt_service.proto b/protos/dmi/hw_metrics_mgmt_service.proto
index 72a8414..2f1a23d 100644
--- a/protos/dmi/hw_metrics_mgmt_service.proto
+++ b/protos/dmi/hw_metrics_mgmt_service.proto
@@ -5,6 +5,7 @@
import "dmi/commons.proto";
import "dmi/hw.proto";
+import "google/protobuf/empty.proto";
// The model used to represent the event data on the SensorData of a component as described
// in RFC8348 (https://tools.ietf.org/html/rfc8348)
@@ -108,7 +109,7 @@
string component_name = 3;
}
-// The Metrics are conveyed to external systems by submitting them on a kafka bus.
+// The Metrics are conveyed to external systems either by submitting them on a message bus or using gRPC server streaming.
// The topic to which are Metrics are submitted would be configured as startup
// configuration of the components
message Metric {
@@ -153,4 +154,7 @@
// Get the instantenous value of a metric
rpc GetMetric(GetMetricRequest) returns(GetMetricResponse);
+
+ // Initiate the server streaming of the metrics
+ rpc StreamMetrics(google.protobuf.Empty) returns(stream Metric);
}
diff --git a/python/dmi/hw_events_mgmt_service_pb2.py b/python/dmi/hw_events_mgmt_service_pb2.py
index cd65493..18e1946 100644
--- a/python/dmi/hw_events_mgmt_service_pb2.py
+++ b/python/dmi/hw_events_mgmt_service_pb2.py
@@ -15,6 +15,7 @@
from dmi import commons_pb2 as dmi_dot_commons__pb2
from dmi import hw_pb2 as dmi_dot_hw__pb2
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
+from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
DESCRIPTOR = _descriptor.FileDescriptor(
@@ -23,9 +24,9 @@
syntax='proto3',
serialized_options=b'Z9github.com/opencord/device-management-interface/v3/go/dmi',
create_key=_descriptor._internal_create_key,
- serialized_pb=b'\n dmi/hw_events_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"N\n\tValueType\x12\x11\n\x07int_val\x18\x01 \x01(\x03H\x00\x12\x12\n\x08uint_val\x18\x02 \x01(\x04H\x00\x12\x13\n\tfloat_val\x18\x03 \x01(\x02H\x00\x42\x05\n\x03val\"G\n\nWaterMarks\x12\x1c\n\x04high\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12\x1b\n\x03low\x18\x02 \x01(\x0b\x32\x0e.dmi.ValueType\"]\n\nThresholds\x12 \n\x05upper\x18\x01 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x12 \n\x05lower\x18\x02 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x42\x0b\n\tthreshold\"c\n\x14ThresholdInformation\x12&\n\x0eobserved_value\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12#\n\nthresholds\x18\x02 \x01(\x0b\x32\x0f.dmi.Thresholds\"g\n\x08\x45ventCfg\x12\x1f\n\x08\x65vent_id\x18\x01 \x01(\x0e\x32\r.dmi.EventIds\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12#\n\nthresholds\x18\x03 \x01(\x0b\x32\x0f.dmi.Thresholds\")\n\tEventsCfg\x12\x1c\n\x05items\x18\x01 \x03(\x0b\x32\r.dmi.EventCfg\"\xf8\x01\n\x12ListEventsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12.\n\x06reason\x18\x02 \x01(\x0e\x32\x1e.dmi.ListEventsResponse.Reason\x12\x1e\n\x06\x65vents\x18\x03 \x01(\x0b\x32\x0e.dmi.EventsCfg\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"\x88\x01\n\x1a\x45ventsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x0e.dmi.EventsCfgH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"\xfe\x01\n\x1b\x45ventsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x37\n\x06reason\x18\x02 \x01(\x0e\x32\'.dmi.EventsConfigurationResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"r\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x12\n\x0eINVALID_CONFIG\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"j\n\rEventMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"\xc8\x01\n\x05\x45vent\x12*\n\x0e\x65vent_metadata\x18\x01 \x01(\x0b\x32\x12.dmi.EventMetaData\x12\x1f\n\x08\x65vent_id\x18\x02 \x01(\x0e\x32\r.dmi.EventIds\x12-\n\traised_ts\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\x0ethreshold_info\x18\x04 \x01(\x0b\x32\x19.dmi.ThresholdInformation\x12\x10\n\x08\x61\x64\x64_info\x18\x05 \x01(\t*\xd1\x0e\n\x08\x45ventIds\x12\x18\n\x14\x45VENT_NAME_UNDEFINED\x10\x00\x12\x1e\n\x1a\x45VENT_TRANSCEIVER_PLUG_OUT\x10\x64\x12\x1d\n\x19\x45VENT_TRANSCEIVER_PLUG_IN\x10\x65\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD\x10\x66\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD\x10g\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD\x10h\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD\x10i\x12-\n)EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD\x10j\x12-\n)EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD\x10k\x12.\n*EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD\x10l\x12.\n*EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD\x10m\x12.\n*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD\x10n\x12.\n*EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD\x10o\x12\x1d\n\x19\x45VENT_TRANSCEIVER_FAILURE\x10p\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED\x10q\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\x10r\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED\x10s\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\x10t\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED\x10u\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED\x10v\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED\x10w\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED\x10x\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED\x10y\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED\x10z\x12\'\n#EVENT_TRANSCEIVER_FAILURE_RECOVERED\x10{\x12\x17\n\x12\x45VENT_PSU_PLUG_OUT\x10\xc8\x01\x12\x16\n\x11\x45VENT_PSU_PLUG_IN\x10\xc9\x01\x12\x16\n\x11\x45VENT_PSU_FAILURE\x10\xca\x01\x12 \n\x1b\x45VENT_PSU_FAILURE_RECOVERED\x10\xcb\x01\x12\x16\n\x11\x45VENT_FAN_FAILURE\x10\xac\x02\x12\x17\n\x12\x45VENT_FAN_PLUG_OUT\x10\xad\x02\x12\x16\n\x11\x45VENT_FAN_PLUG_IN\x10\xae\x02\x12 \n\x1b\x45VENT_FAN_FAILURE_RECOVERED\x10\xaf\x02\x12)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL\x10\x90\x03\x12&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATAL\x10\x91\x03\x12\x33\n.EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\x92\x03\x12\x30\n+EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\x93\x03\x12\x1a\n\x15\x45VENT_HW_DEVICE_RESET\x10\xf4\x03\x12/\n*EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL\x10\xf5\x03\x12,\n\'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL\x10\xf6\x03\x12\x39\n4EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\xf7\x03\x12\x36\n1EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\xf8\x03\x32\xb7\x01\n\x1dNativeEventsManagementService\x12\x36\n\nListEvents\x12\x0f.dmi.HardwareID\x1a\x17.dmi.ListEventsResponse\x12^\n\x19UpdateEventsConfiguration\x12\x1f.dmi.EventsConfigurationRequest\x1a .dmi.EventsConfigurationResponseB;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
+ serialized_pb=b'\n dmi/hw_events_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"N\n\tValueType\x12\x11\n\x07int_val\x18\x01 \x01(\x03H\x00\x12\x12\n\x08uint_val\x18\x02 \x01(\x04H\x00\x12\x13\n\tfloat_val\x18\x03 \x01(\x02H\x00\x42\x05\n\x03val\"G\n\nWaterMarks\x12\x1c\n\x04high\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12\x1b\n\x03low\x18\x02 \x01(\x0b\x32\x0e.dmi.ValueType\"]\n\nThresholds\x12 \n\x05upper\x18\x01 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x12 \n\x05lower\x18\x02 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x42\x0b\n\tthreshold\"c\n\x14ThresholdInformation\x12&\n\x0eobserved_value\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12#\n\nthresholds\x18\x02 \x01(\x0b\x32\x0f.dmi.Thresholds\"g\n\x08\x45ventCfg\x12\x1f\n\x08\x65vent_id\x18\x01 \x01(\x0e\x32\r.dmi.EventIds\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12#\n\nthresholds\x18\x03 \x01(\x0b\x32\x0f.dmi.Thresholds\")\n\tEventsCfg\x12\x1c\n\x05items\x18\x01 \x03(\x0b\x32\r.dmi.EventCfg\"\xf8\x01\n\x12ListEventsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12.\n\x06reason\x18\x02 \x01(\x0e\x32\x1e.dmi.ListEventsResponse.Reason\x12\x1e\n\x06\x65vents\x18\x03 \x01(\x0b\x32\x0e.dmi.EventsCfg\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"\x88\x01\n\x1a\x45ventsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x0e.dmi.EventsCfgH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"\xfe\x01\n\x1b\x45ventsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x37\n\x06reason\x18\x02 \x01(\x0e\x32\'.dmi.EventsConfigurationResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"r\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x12\n\x0eINVALID_CONFIG\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"j\n\rEventMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"\xc8\x01\n\x05\x45vent\x12*\n\x0e\x65vent_metadata\x18\x01 \x01(\x0b\x32\x12.dmi.EventMetaData\x12\x1f\n\x08\x65vent_id\x18\x02 \x01(\x0e\x32\r.dmi.EventIds\x12-\n\traised_ts\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\x0ethreshold_info\x18\x04 \x01(\x0b\x32\x19.dmi.ThresholdInformation\x12\x10\n\x08\x61\x64\x64_info\x18\x05 \x01(\t*\xd1\x0e\n\x08\x45ventIds\x12\x18\n\x14\x45VENT_NAME_UNDEFINED\x10\x00\x12\x1e\n\x1a\x45VENT_TRANSCEIVER_PLUG_OUT\x10\x64\x12\x1d\n\x19\x45VENT_TRANSCEIVER_PLUG_IN\x10\x65\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD\x10\x66\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD\x10g\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD\x10h\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD\x10i\x12-\n)EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD\x10j\x12-\n)EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD\x10k\x12.\n*EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD\x10l\x12.\n*EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD\x10m\x12.\n*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD\x10n\x12.\n*EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD\x10o\x12\x1d\n\x19\x45VENT_TRANSCEIVER_FAILURE\x10p\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED\x10q\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\x10r\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED\x10s\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\x10t\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED\x10u\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED\x10v\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED\x10w\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED\x10x\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED\x10y\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED\x10z\x12\'\n#EVENT_TRANSCEIVER_FAILURE_RECOVERED\x10{\x12\x17\n\x12\x45VENT_PSU_PLUG_OUT\x10\xc8\x01\x12\x16\n\x11\x45VENT_PSU_PLUG_IN\x10\xc9\x01\x12\x16\n\x11\x45VENT_PSU_FAILURE\x10\xca\x01\x12 \n\x1b\x45VENT_PSU_FAILURE_RECOVERED\x10\xcb\x01\x12\x16\n\x11\x45VENT_FAN_FAILURE\x10\xac\x02\x12\x17\n\x12\x45VENT_FAN_PLUG_OUT\x10\xad\x02\x12\x16\n\x11\x45VENT_FAN_PLUG_IN\x10\xae\x02\x12 \n\x1b\x45VENT_FAN_FAILURE_RECOVERED\x10\xaf\x02\x12)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL\x10\x90\x03\x12&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATAL\x10\x91\x03\x12\x33\n.EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\x92\x03\x12\x30\n+EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\x93\x03\x12\x1a\n\x15\x45VENT_HW_DEVICE_RESET\x10\xf4\x03\x12/\n*EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL\x10\xf5\x03\x12,\n\'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL\x10\xf6\x03\x12\x39\n4EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\xf7\x03\x12\x36\n1EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\xf8\x03\x32\xed\x01\n\x1dNativeEventsManagementService\x12\x36\n\nListEvents\x12\x0f.dmi.HardwareID\x1a\x17.dmi.ListEventsResponse\x12^\n\x19UpdateEventsConfiguration\x12\x1f.dmi.EventsConfigurationRequest\x1a .dmi.EventsConfigurationResponse\x12\x34\n\x0cStreamEvents\x12\x16.google.protobuf.Empty\x1a\n.dmi.Event0\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
,
- dependencies=[dmi_dot_commons__pb2.DESCRIPTOR,dmi_dot_hw__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,])
+ dependencies=[dmi_dot_commons__pb2.DESCRIPTOR,dmi_dot_hw__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
_EVENTIDS = _descriptor.EnumDescriptor(
name='EventIds',
@@ -247,8 +248,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=1563,
- serialized_end=3436,
+ serialized_start=1592,
+ serialized_end=3465,
)
_sym_db.RegisterEnumDescriptor(_EVENTIDS)
@@ -327,8 +328,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=759,
- serialized_end=853,
+ serialized_start=788,
+ serialized_end=882,
)
_sym_db.RegisterEnumDescriptor(_LISTEVENTSRESPONSE_REASON)
@@ -367,8 +368,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=1135,
- serialized_end=1249,
+ serialized_start=1164,
+ serialized_end=1278,
)
_sym_db.RegisterEnumDescriptor(_EVENTSCONFIGURATIONRESPONSE_REASON)
@@ -419,8 +420,8 @@
create_key=_descriptor._internal_create_key,
fields=[]),
],
- serialized_start=107,
- serialized_end=185,
+ serialized_start=136,
+ serialized_end=214,
)
@@ -458,8 +459,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=187,
- serialized_end=258,
+ serialized_start=216,
+ serialized_end=287,
)
@@ -502,8 +503,8 @@
create_key=_descriptor._internal_create_key,
fields=[]),
],
- serialized_start=260,
- serialized_end=353,
+ serialized_start=289,
+ serialized_end=382,
)
@@ -541,8 +542,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=355,
- serialized_end=454,
+ serialized_start=384,
+ serialized_end=483,
)
@@ -587,8 +588,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=456,
- serialized_end=559,
+ serialized_start=485,
+ serialized_end=588,
)
@@ -619,8 +620,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=561,
- serialized_end=602,
+ serialized_start=590,
+ serialized_end=631,
)
@@ -673,8 +674,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=605,
- serialized_end=853,
+ serialized_start=634,
+ serialized_end=882,
)
@@ -724,8 +725,8 @@
create_key=_descriptor._internal_create_key,
fields=[]),
],
- serialized_start=856,
- serialized_end=992,
+ serialized_start=885,
+ serialized_end=1021,
)
@@ -771,8 +772,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=995,
- serialized_end=1249,
+ serialized_start=1024,
+ serialized_end=1278,
)
@@ -817,8 +818,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=1251,
- serialized_end=1357,
+ serialized_start=1280,
+ serialized_end=1386,
)
@@ -877,8 +878,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=1360,
- serialized_end=1560,
+ serialized_start=1389,
+ serialized_end=1589,
)
_VALUETYPE.oneofs_by_name['val'].fields.append(
@@ -1027,8 +1028,8 @@
index=0,
serialized_options=None,
create_key=_descriptor._internal_create_key,
- serialized_start=3439,
- serialized_end=3622,
+ serialized_start=3468,
+ serialized_end=3705,
methods=[
_descriptor.MethodDescriptor(
name='ListEvents',
@@ -1050,6 +1051,16 @@
serialized_options=None,
create_key=_descriptor._internal_create_key,
),
+ _descriptor.MethodDescriptor(
+ name='StreamEvents',
+ full_name='dmi.NativeEventsManagementService.StreamEvents',
+ index=2,
+ containing_service=None,
+ input_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
+ output_type=_EVENT,
+ serialized_options=None,
+ create_key=_descriptor._internal_create_key,
+ ),
])
_sym_db.RegisterServiceDescriptor(_NATIVEEVENTSMANAGEMENTSERVICE)
diff --git a/python/dmi/hw_events_mgmt_service_pb2_grpc.py b/python/dmi/hw_events_mgmt_service_pb2_grpc.py
index 213d4f5..8212023 100644
--- a/python/dmi/hw_events_mgmt_service_pb2_grpc.py
+++ b/python/dmi/hw_events_mgmt_service_pb2_grpc.py
@@ -4,6 +4,7 @@
from dmi import hw_events_mgmt_service_pb2 as dmi_dot_hw__events__mgmt__service__pb2
from dmi import hw_pb2 as dmi_dot_hw__pb2
+from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class NativeEventsManagementServiceStub(object):
@@ -25,6 +26,11 @@
request_serializer=dmi_dot_hw__events__mgmt__service__pb2.EventsConfigurationRequest.SerializeToString,
response_deserializer=dmi_dot_hw__events__mgmt__service__pb2.EventsConfigurationResponse.FromString,
)
+ self.StreamEvents = channel.unary_stream(
+ '/dmi.NativeEventsManagementService/StreamEvents',
+ request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+ response_deserializer=dmi_dot_hw__events__mgmt__service__pb2.Event.FromString,
+ )
class NativeEventsManagementServiceServicer(object):
@@ -46,6 +52,13 @@
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
+ def StreamEvents(self, request, context):
+ """Initiate the server streaming of the events
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
def add_NativeEventsManagementServiceServicer_to_server(servicer, server):
rpc_method_handlers = {
@@ -59,6 +72,11 @@
request_deserializer=dmi_dot_hw__events__mgmt__service__pb2.EventsConfigurationRequest.FromString,
response_serializer=dmi_dot_hw__events__mgmt__service__pb2.EventsConfigurationResponse.SerializeToString,
),
+ 'StreamEvents': grpc.unary_stream_rpc_method_handler(
+ servicer.StreamEvents,
+ request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+ response_serializer=dmi_dot_hw__events__mgmt__service__pb2.Event.SerializeToString,
+ ),
}
generic_handler = grpc.method_handlers_generic_handler(
'dmi.NativeEventsManagementService', rpc_method_handlers)
@@ -102,3 +120,20 @@
dmi_dot_hw__events__mgmt__service__pb2.EventsConfigurationResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+ @staticmethod
+ def StreamEvents(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ insecure=False,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_stream(request, target, '/dmi.NativeEventsManagementService/StreamEvents',
+ google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+ dmi_dot_hw__events__mgmt__service__pb2.Event.FromString,
+ options, channel_credentials,
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/python/dmi/hw_metrics_mgmt_service_pb2.py b/python/dmi/hw_metrics_mgmt_service_pb2.py
index 663ef75..e4dfac7 100644
--- a/python/dmi/hw_metrics_mgmt_service_pb2.py
+++ b/python/dmi/hw_metrics_mgmt_service_pb2.py
@@ -14,6 +14,7 @@
from dmi import commons_pb2 as dmi_dot_commons__pb2
from dmi import hw_pb2 as dmi_dot_hw__pb2
+from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
DESCRIPTOR = _descriptor.FileDescriptor(
@@ -22,9 +23,9 @@
syntax='proto3',
serialized_options=b'Z9github.com/opencord/device-management-interface/v3/go/dmi',
create_key=_descriptor._internal_create_key,
- serialized_pb=b'\n!dmi/hw_metrics_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\"a\n\x0cMetricConfig\x12#\n\tmetric_id\x18\x01 \x01(\x0e\x32\x10.dmi.MetricNames\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12\x15\n\rpoll_interval\x18\x03 \x01(\r\"3\n\rMetricsConfig\x12\"\n\x07metrics\x18\x01 \x03(\x0b\x32\x11.dmi.MetricConfig\"\xff\x01\n\x13ListMetricsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12/\n\x06reason\x18\x02 \x01(\x0e\x32\x1f.dmi.ListMetricsResponse.Reason\x12#\n\x07metrics\x18\x03 \x01(\x0b\x32\x12.dmi.MetricsConfig\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"\x8d\x01\n\x1bMetricsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12%\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x12.dmi.MetricsConfigH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"\xa0\x02\n\x1cMetricsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x38\n\x06reason\x18\x02 \x01(\x0e\x32(.dmi.MetricsConfigurationResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"\x91\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x1d\n\x19POLL_INTERVAL_UNSUPPORTED\x10\x03\x12\x12\n\x0eINVALID_METRIC\x10\x04\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x05\"k\n\x0eMetricMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"\x84\x01\n\x06Metric\x12#\n\tmetric_id\x18\x01 \x01(\x0e\x32\x10.dmi.MetricNames\x12,\n\x0fmetric_metadata\x18\x02 \x01(\x0b\x32\x13.dmi.MetricMetaData\x12\'\n\x05value\x18\x03 \x01(\x0b\x32\x18.dmi.ComponentSensorData\"_\n\x10GetMetricRequest\x12&\n\tmeta_data\x18\x01 \x01(\x0b\x32\x13.dmi.MetricMetaData\x12#\n\tmetric_id\x18\x02 \x01(\x0e\x32\x10.dmi.MetricNames\"\x9f\x02\n\x11GetMetricResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12-\n\x06reason\x18\x02 \x01(\x0e\x32\x1d.dmi.GetMetricResponse.Reason\x12\x1b\n\x06metric\x18\x03 \x01(\x0b\x32\x0b.dmi.Metric\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"\x89\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x15\n\x11UNKNOWN_COMPONENT\x10\x02\x12\x12\n\x0eINTERNAL_ERROR\x10\x03\x12\x12\n\x0eINVALID_METRIC\x10\x04\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x05*\xd9\x05\n\x0bMetricNames\x12\x19\n\x15METRIC_NAME_UNDEFINED\x10\x00\x12\x14\n\x10METRIC_FAN_SPEED\x10\x01\x12\x13\n\x0fMETRIC_CPU_TEMP\x10\x64\x12\x1f\n\x1bMETRIC_CPU_USAGE_PERCENTAGE\x10\x65\x12\x1c\n\x17METRIC_TRANSCEIVER_TEMP\x10\xc8\x01\x12\x1f\n\x1aMETRIC_TRANSCEIVER_VOLTAGE\x10\xc9\x01\x12\x1c\n\x17METRIC_TRANSCEIVER_BIAS\x10\xca\x01\x12 \n\x1bMETRIC_TRANSCEIVER_RX_POWER\x10\xcb\x01\x12 \n\x1bMETRIC_TRANSCEIVER_TX_POWER\x10\xcc\x01\x12\"\n\x1dMETRIC_TRANSCEIVER_WAVELENGTH\x10\xcd\x01\x12\x15\n\x10METRIC_DISK_TEMP\x10\xac\x02\x12\x19\n\x14METRIC_DISK_CAPACITY\x10\xad\x02\x12\x16\n\x11METRIC_DISK_USAGE\x10\xae\x02\x12!\n\x1cMETRIC_DISK_USAGE_PERCENTAGE\x10\xaf\x02\x12&\n!METRIC_DISK_READ_WRITE_PERCENTAGE\x10\xb0\x02\x12(\n#METRIC_DISK_FAULTY_CELLS_PERCENTAGE\x10\xb1\x02\x12\x14\n\x0fMETRIC_RAM_TEMP\x10\x90\x03\x12\x18\n\x13METRIC_RAM_CAPACITY\x10\x91\x03\x12\x15\n\x10METRIC_RAM_USAGE\x10\x92\x03\x12 \n\x1bMETRIC_RAM_USAGE_PERCENTAGE\x10\x93\x03\x12\x15\n\x10METRIC_POWER_MAX\x10\xf4\x03\x12\x17\n\x12METRIC_POWER_USAGE\x10\xf5\x03\x12\"\n\x1dMETRIC_POWER_USAGE_PERCENTAGE\x10\xf6\x03\x12\"\n\x1dMETRIC_INNER_SURROUNDING_TEMP\x10\xd8\x04\x32\xf9\x01\n\x1eNativeMetricsManagementService\x12\x38\n\x0bListMetrics\x12\x0f.dmi.HardwareID\x1a\x18.dmi.ListMetricsResponse\x12\x61\n\x1aUpdateMetricsConfiguration\x12 .dmi.MetricsConfigurationRequest\x1a!.dmi.MetricsConfigurationResponse\x12:\n\tGetMetric\x12\x15.dmi.GetMetricRequest\x1a\x16.dmi.GetMetricResponseB;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
+ serialized_pb=b'\n!dmi/hw_metrics_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x1bgoogle/protobuf/empty.proto\"a\n\x0cMetricConfig\x12#\n\tmetric_id\x18\x01 \x01(\x0e\x32\x10.dmi.MetricNames\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12\x15\n\rpoll_interval\x18\x03 \x01(\r\"3\n\rMetricsConfig\x12\"\n\x07metrics\x18\x01 \x03(\x0b\x32\x11.dmi.MetricConfig\"\xff\x01\n\x13ListMetricsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12/\n\x06reason\x18\x02 \x01(\x0e\x32\x1f.dmi.ListMetricsResponse.Reason\x12#\n\x07metrics\x18\x03 \x01(\x0b\x32\x12.dmi.MetricsConfig\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"\x8d\x01\n\x1bMetricsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12%\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x12.dmi.MetricsConfigH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"\xa0\x02\n\x1cMetricsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x38\n\x06reason\x18\x02 \x01(\x0e\x32(.dmi.MetricsConfigurationResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"\x91\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x1d\n\x19POLL_INTERVAL_UNSUPPORTED\x10\x03\x12\x12\n\x0eINVALID_METRIC\x10\x04\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x05\"k\n\x0eMetricMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"\x84\x01\n\x06Metric\x12#\n\tmetric_id\x18\x01 \x01(\x0e\x32\x10.dmi.MetricNames\x12,\n\x0fmetric_metadata\x18\x02 \x01(\x0b\x32\x13.dmi.MetricMetaData\x12\'\n\x05value\x18\x03 \x01(\x0b\x32\x18.dmi.ComponentSensorData\"_\n\x10GetMetricRequest\x12&\n\tmeta_data\x18\x01 \x01(\x0b\x32\x13.dmi.MetricMetaData\x12#\n\tmetric_id\x18\x02 \x01(\x0e\x32\x10.dmi.MetricNames\"\x9f\x02\n\x11GetMetricResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12-\n\x06reason\x18\x02 \x01(\x0e\x32\x1d.dmi.GetMetricResponse.Reason\x12\x1b\n\x06metric\x18\x03 \x01(\x0b\x32\x0b.dmi.Metric\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"\x89\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x15\n\x11UNKNOWN_COMPONENT\x10\x02\x12\x12\n\x0eINTERNAL_ERROR\x10\x03\x12\x12\n\x0eINVALID_METRIC\x10\x04\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x05*\xd9\x05\n\x0bMetricNames\x12\x19\n\x15METRIC_NAME_UNDEFINED\x10\x00\x12\x14\n\x10METRIC_FAN_SPEED\x10\x01\x12\x13\n\x0fMETRIC_CPU_TEMP\x10\x64\x12\x1f\n\x1bMETRIC_CPU_USAGE_PERCENTAGE\x10\x65\x12\x1c\n\x17METRIC_TRANSCEIVER_TEMP\x10\xc8\x01\x12\x1f\n\x1aMETRIC_TRANSCEIVER_VOLTAGE\x10\xc9\x01\x12\x1c\n\x17METRIC_TRANSCEIVER_BIAS\x10\xca\x01\x12 \n\x1bMETRIC_TRANSCEIVER_RX_POWER\x10\xcb\x01\x12 \n\x1bMETRIC_TRANSCEIVER_TX_POWER\x10\xcc\x01\x12\"\n\x1dMETRIC_TRANSCEIVER_WAVELENGTH\x10\xcd\x01\x12\x15\n\x10METRIC_DISK_TEMP\x10\xac\x02\x12\x19\n\x14METRIC_DISK_CAPACITY\x10\xad\x02\x12\x16\n\x11METRIC_DISK_USAGE\x10\xae\x02\x12!\n\x1cMETRIC_DISK_USAGE_PERCENTAGE\x10\xaf\x02\x12&\n!METRIC_DISK_READ_WRITE_PERCENTAGE\x10\xb0\x02\x12(\n#METRIC_DISK_FAULTY_CELLS_PERCENTAGE\x10\xb1\x02\x12\x14\n\x0fMETRIC_RAM_TEMP\x10\x90\x03\x12\x18\n\x13METRIC_RAM_CAPACITY\x10\x91\x03\x12\x15\n\x10METRIC_RAM_USAGE\x10\x92\x03\x12 \n\x1bMETRIC_RAM_USAGE_PERCENTAGE\x10\x93\x03\x12\x15\n\x10METRIC_POWER_MAX\x10\xf4\x03\x12\x17\n\x12METRIC_POWER_USAGE\x10\xf5\x03\x12\"\n\x1dMETRIC_POWER_USAGE_PERCENTAGE\x10\xf6\x03\x12\"\n\x1dMETRIC_INNER_SURROUNDING_TEMP\x10\xd8\x04\x32\xb1\x02\n\x1eNativeMetricsManagementService\x12\x38\n\x0bListMetrics\x12\x0f.dmi.HardwareID\x1a\x18.dmi.ListMetricsResponse\x12\x61\n\x1aUpdateMetricsConfiguration\x12 .dmi.MetricsConfigurationRequest\x1a!.dmi.MetricsConfigurationResponse\x12:\n\tGetMetric\x12\x15.dmi.GetMetricRequest\x1a\x16.dmi.GetMetricResponse\x12\x36\n\rStreamMetrics\x12\x16.google.protobuf.Empty\x1a\x0b.dmi.Metric0\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
,
- dependencies=[dmi_dot_commons__pb2.DESCRIPTOR,dmi_dot_hw__pb2.DESCRIPTOR,])
+ dependencies=[dmi_dot_commons__pb2.DESCRIPTOR,dmi_dot_hw__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
_METRICNAMES = _descriptor.EnumDescriptor(
name='MetricNames',
@@ -156,8 +157,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=1552,
- serialized_end=2281,
+ serialized_start=1581,
+ serialized_end=2310,
)
_sym_db.RegisterEnumDescriptor(_METRICNAMES)
@@ -218,8 +219,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=389,
- serialized_end=483,
+ serialized_start=418,
+ serialized_end=512,
)
_sym_db.RegisterEnumDescriptor(_LISTMETRICSRESPONSE_REASON)
@@ -263,8 +264,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=773,
- serialized_end=918,
+ serialized_start=802,
+ serialized_end=947,
)
_sym_db.RegisterEnumDescriptor(_METRICSCONFIGURATIONRESPONSE_REASON)
@@ -308,8 +309,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=1412,
- serialized_end=1549,
+ serialized_start=1441,
+ serialized_end=1578,
)
_sym_db.RegisterEnumDescriptor(_GETMETRICRESPONSE_REASON)
@@ -355,8 +356,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=75,
- serialized_end=172,
+ serialized_start=104,
+ serialized_end=201,
)
@@ -387,8 +388,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=174,
- serialized_end=225,
+ serialized_start=203,
+ serialized_end=254,
)
@@ -441,8 +442,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=228,
- serialized_end=483,
+ serialized_start=257,
+ serialized_end=512,
)
@@ -492,8 +493,8 @@
create_key=_descriptor._internal_create_key,
fields=[]),
],
- serialized_start=486,
- serialized_end=627,
+ serialized_start=515,
+ serialized_end=656,
)
@@ -539,8 +540,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=630,
- serialized_end=918,
+ serialized_start=659,
+ serialized_end=947,
)
@@ -585,8 +586,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=920,
- serialized_end=1027,
+ serialized_start=949,
+ serialized_end=1056,
)
@@ -631,8 +632,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=1030,
- serialized_end=1162,
+ serialized_start=1059,
+ serialized_end=1191,
)
@@ -670,8 +671,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=1164,
- serialized_end=1259,
+ serialized_start=1193,
+ serialized_end=1288,
)
@@ -724,8 +725,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=1262,
- serialized_end=1549,
+ serialized_start=1291,
+ serialized_end=1578,
)
_METRICCONFIG.fields_by_name['metric_id'].enum_type = _METRICNAMES
@@ -841,8 +842,8 @@
index=0,
serialized_options=None,
create_key=_descriptor._internal_create_key,
- serialized_start=2284,
- serialized_end=2533,
+ serialized_start=2313,
+ serialized_end=2618,
methods=[
_descriptor.MethodDescriptor(
name='ListMetrics',
@@ -874,6 +875,16 @@
serialized_options=None,
create_key=_descriptor._internal_create_key,
),
+ _descriptor.MethodDescriptor(
+ name='StreamMetrics',
+ full_name='dmi.NativeMetricsManagementService.StreamMetrics',
+ index=3,
+ containing_service=None,
+ input_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
+ output_type=_METRIC,
+ serialized_options=None,
+ create_key=_descriptor._internal_create_key,
+ ),
])
_sym_db.RegisterServiceDescriptor(_NATIVEMETRICSMANAGEMENTSERVICE)
diff --git a/python/dmi/hw_metrics_mgmt_service_pb2_grpc.py b/python/dmi/hw_metrics_mgmt_service_pb2_grpc.py
index 7a2affa..0202897 100644
--- a/python/dmi/hw_metrics_mgmt_service_pb2_grpc.py
+++ b/python/dmi/hw_metrics_mgmt_service_pb2_grpc.py
@@ -4,6 +4,7 @@
from dmi import hw_metrics_mgmt_service_pb2 as dmi_dot_hw__metrics__mgmt__service__pb2
from dmi import hw_pb2 as dmi_dot_hw__pb2
+from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class NativeMetricsManagementServiceStub(object):
@@ -30,6 +31,11 @@
request_serializer=dmi_dot_hw__metrics__mgmt__service__pb2.GetMetricRequest.SerializeToString,
response_deserializer=dmi_dot_hw__metrics__mgmt__service__pb2.GetMetricResponse.FromString,
)
+ self.StreamMetrics = channel.unary_stream(
+ '/dmi.NativeMetricsManagementService/StreamMetrics',
+ request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+ response_deserializer=dmi_dot_hw__metrics__mgmt__service__pb2.Metric.FromString,
+ )
class NativeMetricsManagementServiceServicer(object):
@@ -62,6 +68,13 @@
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
+ def StreamMetrics(self, request, context):
+ """Initiate the server streaming of the metrics
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
def add_NativeMetricsManagementServiceServicer_to_server(servicer, server):
rpc_method_handlers = {
@@ -80,6 +93,11 @@
request_deserializer=dmi_dot_hw__metrics__mgmt__service__pb2.GetMetricRequest.FromString,
response_serializer=dmi_dot_hw__metrics__mgmt__service__pb2.GetMetricResponse.SerializeToString,
),
+ 'StreamMetrics': grpc.unary_stream_rpc_method_handler(
+ servicer.StreamMetrics,
+ request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+ response_serializer=dmi_dot_hw__metrics__mgmt__service__pb2.Metric.SerializeToString,
+ ),
}
generic_handler = grpc.method_handlers_generic_handler(
'dmi.NativeMetricsManagementService', rpc_method_handlers)
@@ -140,3 +158,20 @@
dmi_dot_hw__metrics__mgmt__service__pb2.GetMetricResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+ @staticmethod
+ def StreamMetrics(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ insecure=False,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_stream(request, target, '/dmi.NativeMetricsManagementService/StreamMetrics',
+ google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+ dmi_dot_hw__metrics__mgmt__service__pb2.Metric.FromString,
+ options, channel_credentials,
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)