Merge pull request #1873 from rubenk/fix-duplicate-label_t
[collectd.git] / src / grpc.cc
index 5a5899d..a38abc1 100644 (file)
@@ -40,14 +40,12 @@ extern "C" {
 
 #include "collectd.h"
 #include "common.h"
-#include "configfile.h"
 #include "plugin.h"
 
 #include "daemon/utils_cache.h"
 }
 
 using collectd::Collectd;
-using collectd::Dispatch;
 
 using collectd::DispatchValuesRequest;
 using collectd::DispatchValuesResponse;
@@ -265,15 +263,15 @@ class CollectdImpl : public collectd::Collectd::Service {
 public:
        grpc::Status QueryValues(grpc::ServerContext *ctx, QueryValuesRequest const *req, grpc::ServerWriter<QueryValuesResponse> *writer) override {
                value_list_t match;
-               auto err = unmarshal_ident(req->identifier(), &match, false);
-               if (!err.ok()) {
-                       return err;
+               auto status = unmarshal_ident(req->identifier(), &match, false);
+               if (!status.ok()) {
+                       return status;
                }
 
                std::queue<value_list_t> value_lists;
-               err = this->read(&match, &value_lists);
-               if (err.ok()) {
-                       err = this->write(ctx, writer, &value_lists);
+               status = this->queryValuesRead(&match, &value_lists);
+               if (status.ok()) {
+                       status = this->queryValuesWrite(ctx, writer, &value_lists);
                }
 
                while (!value_lists.empty()) {
@@ -282,11 +280,31 @@ public:
                        sfree(vl.values);
                }
 
-               return err;
+               return status;
+       }
+
+       grpc::Status DispatchValues(grpc::ServerContext *ctx,
+                                                               grpc::ServerReader<DispatchValuesRequest> *reader,
+                                                               DispatchValuesResponse *res) override {
+               DispatchValuesRequest req;
+
+               while (reader->Read(&req)) {
+                       value_list_t vl = VALUE_LIST_INIT;
+                       auto status = unmarshal_value_list(req.value_list(), &vl);
+                       if (!status.ok())
+                               return status;
+
+                       if (plugin_dispatch_values(&vl))
+                               return grpc::Status(grpc::StatusCode::INTERNAL,
+                                                                       grpc::string("failed to enqueue values for writing"));
+               }
+
+               res->Clear();
+               return grpc::Status::OK;
        }
 
 private:
-       grpc::Status read(value_list_t const *match, std::queue<value_list_t> *value_lists) {
+       grpc::Status queryValuesRead(value_list_t const *match, std::queue<value_list_t> *value_lists) {
                uc_iter_t *iter;
                if ((iter = uc_get_iterator()) == NULL) {
                        return grpc::Status(grpc::StatusCode::INTERNAL,
@@ -329,7 +347,7 @@ private:
                return status;
        }
 
-       grpc::Status write(grpc::ServerContext *ctx,
+       grpc::Status queryValuesWrite(grpc::ServerContext *ctx,
                                           grpc::ServerWriter<QueryValuesResponse> *writer,
                                           std::queue<value_list_t> *value_lists) {
                while (!value_lists->empty()) {
@@ -337,9 +355,9 @@ private:
                        QueryValuesResponse res;
                        res.Clear();
 
-                       auto err = marshal_value_list(&vl, res.mutable_value_list());
-                       if (!err.ok()) {
-                               return err;
+                       auto status = marshal_value_list(&vl, res.mutable_value_list());
+                       if (!status.ok()) {
+                               return status;
                        }
 
                        if (!writer->Write(res)) {
@@ -355,32 +373,6 @@ private:
 };
 
 /*
- * Dispatch service
- */
-class DispatchImpl : public collectd::Dispatch::Service {
-public:
-       grpc::Status DispatchValues(grpc::ServerContext *ctx,
-                                                               grpc::ServerReader<DispatchValuesRequest> *reader,
-                                                               DispatchValuesResponse *res) override {
-               DispatchValuesRequest req;
-
-               while (reader->Read(&req)) {
-                       value_list_t vl = VALUE_LIST_INIT;
-                       auto status = unmarshal_value_list(req.value_list(), &vl);
-                       if (!status.ok())
-                               return status;
-
-                       if (plugin_dispatch_values(&vl))
-                               return grpc::Status(grpc::StatusCode::INTERNAL,
-                                                                       grpc::string("failed to enqueue values for writing"));
-               }
-
-               res->Clear();
-               return grpc::Status::OK;
-       }
-};
-
-/*
  * gRPC server implementation
  */
 class CollectdServer final
@@ -413,7 +405,6 @@ public:
                }
 
                builder.RegisterService(&collectd_service_);
-               builder.RegisterService(&dispatch_service_);
 
                server_ = builder.BuildAndStart();
        } /* Start() */
@@ -425,7 +416,6 @@ public:
 
 private:
        CollectdImpl collectd_service_;
-       DispatchImpl dispatch_service_;
 
        std::unique_ptr<grpc::Server> server_;
 }; /* class CollectdServer */