X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fgrpc.cc;h=ae3dab25d6445249831d76291a0316c5aa1c7b3e;hb=5b4053d27b6a24e2f18e678f0d8c3343b7dfad7c;hp=7517bb720bd72c553c0a250801a5599f49917ba7;hpb=9f19d00282cf8623e0233ef539649358a5b5803e;p=collectd.git diff --git a/src/grpc.cc b/src/grpc.cc index 7517bb72..ae3dab25 100644 --- a/src/grpc.cc +++ b/src/grpc.cc @@ -36,7 +36,6 @@ extern "C" { #include #include -#include #include "collectd.h" #include "common.h" @@ -288,35 +287,44 @@ static grpc::Status Process(grpc::ServerContext *ctx, grpc::string("failed to query values: cannot create iterator")); } + status = grpc::Status::OK; while (uc_iterator_next(iter, &name) == 0) { value_list_t res; - if (parse_identifier_vl(name, &res) != 0) - return grpc::Status(grpc::StatusCode::INTERNAL, + if (parse_identifier_vl(name, &res) != 0) { + status = grpc::Status(grpc::StatusCode::INTERNAL, grpc::string("failed to parse identifier")); + break; + } if (!ident_matches(&res, &matcher)) continue; - if (uc_iterator_get_time(iter, &res.time) < 0) - return grpc::Status(grpc::StatusCode::INTERNAL, + if (uc_iterator_get_time(iter, &res.time) < 0) { + status = grpc::Status(grpc::StatusCode::INTERNAL, grpc::string("failed to retrieve value timestamp")); - if (uc_iterator_get_interval(iter, &res.interval) < 0) - return grpc::Status(grpc::StatusCode::INTERNAL, + break; + } + if (uc_iterator_get_interval(iter, &res.interval) < 0) { + status = grpc::Status(grpc::StatusCode::INTERNAL, grpc::string("failed to retrieve value interval")); - if (uc_iterator_get_values(iter, &res.values, &res.values_len) < 0) - return grpc::Status(grpc::StatusCode::INTERNAL, + break; + } + if (uc_iterator_get_values(iter, &res.values, &res.values_len) < 0) { + status = grpc::Status(grpc::StatusCode::INTERNAL, grpc::string("failed to retrieve values")); + break; + } auto vl = reply->add_values(); status = marshal_value_list(&res, vl); free(res.values); if (!status.ok()) - return status; + break; } uc_iterator_destroy(iter); - return grpc::Status::OK; + return status; } /* Process(): QueryValues */ class Call