From 677a95a9e4d0adf7ebd2beb3820e5ef1116c32cf Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Sat, 7 May 2016 00:09:45 +0200 Subject: [PATCH] grpc plugin: Split out identifier into it's own message type. --- proto/types.proto | 14 +++++++++----- src/grpc.cc | 19 ++++++++++++++----- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/proto/types.proto b/proto/types.proto index 7f3d329d..6e6714b6 100644 --- a/proto/types.proto +++ b/proto/types.proto @@ -29,6 +29,14 @@ package collectd.types; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; +message Identifier { + string host = 1; + string plugin = 2; + string plugin_instance = 3; + string type = 4; + string type_instance = 5; +} + message Value { oneof value { uint64 counter = 1; @@ -44,9 +52,5 @@ message ValueList { google.protobuf.Timestamp time = 2; google.protobuf.Duration interval = 3; - string host = 4; - string plugin = 5; - string plugin_instance = 6; - string type = 7; - string type_instance = 8; + Identifier identifier = 4; } diff --git a/src/grpc.cc b/src/grpc.cc index a82c1ec4..45fb0290 100644 --- a/src/grpc.cc +++ b/src/grpc.cc @@ -62,11 +62,8 @@ using google::protobuf::util::TimeUtil; * proto conversion */ -static grpc::Status unmarshal_value_list(const collectd::types::ValueList &msg, value_list_t *vl) +static grpc::Status unmarshal_ident(const collectd::types::Identifier &msg, value_list_t *vl) { - vl->time = NS_TO_CDTIME_T(TimeUtil::TimestampToNanoseconds(msg.time())); - vl->interval = NS_TO_CDTIME_T(TimeUtil::DurationToNanoseconds(msg.interval())); - std::string s; s = msg.host(); @@ -93,9 +90,21 @@ static grpc::Status unmarshal_value_list(const collectd::types::ValueList &msg, s = msg.type_instance(); sstrncpy(vl->type_instance, s.c_str(), sizeof(vl->type_instance)); + return grpc::Status::OK; +} /* unmarshal_ident() */ + +static grpc::Status unmarshal_value_list(const collectd::types::ValueList &msg, value_list_t *vl) +{ + vl->time = NS_TO_CDTIME_T(TimeUtil::TimestampToNanoseconds(msg.time())); + vl->interval = NS_TO_CDTIME_T(TimeUtil::DurationToNanoseconds(msg.interval())); + + auto status = unmarshal_ident(msg.identifier(), vl); + if (!status.ok()) + return status; + value_t *values = NULL; size_t values_len = 0; - auto status = grpc::Status::OK; + status = grpc::Status::OK; for (auto v : msg.value()) { value_t *val = (value_t *)realloc(values, (values_len + 1) * sizeof(*values)); -- 2.30.2