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]