lordgamez commented on code in PR #2020:
URL: https://github.com/apache/nifi-minifi-cpp/pull/2020#discussion_r2439003726


##########
libminifi/include/core/ProcessorMetrics.h:
##########
@@ -35,42 +34,42 @@ concept Summable = requires(T x) { x + x; };  // 
NOLINT(readability/braces)
 template<typename T>
 concept DividableByInteger = requires(T x, uint32_t divisor) { x / divisor; }; 
 // NOLINT(readability/braces)
 
-class ProcessorImpl;
+class Processor;
 
-class ProcessorMetricsImpl : public state::response::ResponseNodeImpl, public 
virtual ProcessorMetrics {
+class ProcessorMetrics : public state::response::ResponseNodeImpl {
  public:
-  explicit ProcessorMetricsImpl(const ProcessorImpl& source_processor);
+  explicit ProcessorMetrics(const Processor& source_processor);
 
   [[nodiscard]] std::string getName() const override;
 
-  std::vector<state::response::SerializedResponseNode> serialize() override;
-  std::vector<state::PublishedMetric> calculateMetrics() override;
-  void increaseRelationshipTransferCount(const std::string& relationship, 
size_t count = 1) override;
-  std::chrono::milliseconds getAverageOnTriggerRuntime() const override;
-  std::chrono::milliseconds getLastOnTriggerRuntime() const override;
-  void addLastOnTriggerRuntime(std::chrono::milliseconds runtime) override;
-
-  std::chrono::milliseconds getAverageSessionCommitRuntime() const override;
-  std::chrono::milliseconds getLastSessionCommitRuntime() const override;
-  void addLastSessionCommitRuntime(std::chrono::milliseconds runtime) override;
-  std::optional<size_t> getTransferredFlowFilesToRelationshipCount(const 
std::string& relationship) const override;
-
-  std::atomic<size_t>& invocations() override {return invocations_;}
-  const std::atomic<size_t>& invocations() const override {return 
invocations_;}
-  std::atomic<size_t>& incomingFlowFiles() override {return 
incoming_flow_files_;}
-  const std::atomic<size_t>& incomingFlowFiles() const override {return 
incoming_flow_files_;}
-  std::atomic<size_t>& transferredFlowFiles() override {return 
transferred_flow_files_;}
-  const std::atomic<size_t>& transferredFlowFiles() const override {return 
transferred_flow_files_;}
-  std::atomic<uint64_t>& incomingBytes() override {return incoming_bytes_;}
-  const std::atomic<uint64_t>& incomingBytes() const override {return 
incoming_bytes_;}
-  std::atomic<uint64_t>& transferredBytes() override {return 
transferred_bytes_;}
-  const std::atomic<uint64_t>& transferredBytes() const override {return 
transferred_bytes_;}
-  std::atomic<uint64_t>& bytesRead() override {return bytes_read_;}
-  const std::atomic<uint64_t>& bytesRead() const override {return bytes_read_;}
-  std::atomic<uint64_t>& bytesWritten() override {return bytes_written_;}
-  const std::atomic<uint64_t>& bytesWritten() const override {return 
bytes_written_;}
-  std::atomic<uint64_t>& processingNanos() override {return processing_nanos_;}
-  const std::atomic<uint64_t>& processingNanos() const override {return 
processing_nanos_;}
+  std::vector<state::response::SerializedResponseNode> serialize() final;
+  std::vector<state::PublishedMetric> calculateMetrics() final;

Review Comment:
   This class still implements the interface of `CustomProcessorMetrics`, so I 
think we should keep the inheritance. I think the problem is actually with the 
name of the `CustomProcessorMetrics` as it indicates to be a specialization of 
a processor metrics class while this is the other way around. I think it should 
be renamed to something like `ProcessorMetricsCollector`, but I'm open to other 
suggestions. It seems logical that the `ProcessorMetrics` and the custom 
processor metrics also implement the same interface.



##########
core-framework/src/core/ProcessorImpl.cpp:
##########
@@ -47,7 +46,7 @@ namespace org::apache::nifi::minifi::core {
 ProcessorImpl::ProcessorImpl(ProcessorMetadata metadata)
     : metadata_(std::move(metadata)),
       trigger_when_empty_(false),
-      metrics_(std::make_shared<ProcessorMetricsImpl>(*this)),
+      metrics_(nullptr),

Review Comment:
   this can be removed, as the shared_ptr will always be initialized with 
nullptr



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to