@@ -69,31 +69,37 @@ void IntegratingMerger::run(framework::ProcessingContext& ctx)
6969 }
7070
7171 if (ctx.inputs ().isValid (" timer-publish" )) {
72- mCyclesSinceReset ++;
72+ finishCycle (ctx.outputs ());
73+ }
74+ }
7375
74- if ( mConfig . publishMovingWindow . value == PublishMovingWindow::Yes) {
75- publishMovingWindow (ctx. outputs ());
76- }
76+ void IntegratingMerger::finishCycle (DataAllocator& outputs)
77+ {
78+ mCyclesSinceReset ++;
7779
78- if (!std::holds_alternative<std::monostate>(mMergedObjectLastCycle )) {
79- merge (mMergedObjectIntegral , std::move (mMergedObjectLastCycle ));
80- }
81- mMergedObjectLastCycle = std::monostate{};
82- mTotalDeltasMerged += mDeltasMerged ;
80+ if (mConfig .publishMovingWindow .value == PublishMovingWindow::Yes) {
81+ publishMovingWindow (outputs);
82+ }
8383
84- publishIntegral (ctx.outputs ());
84+ if (!std::holds_alternative<std::monostate>(mMergedObjectLastCycle )) {
85+ merge (mMergedObjectIntegral , std::move (mMergedObjectLastCycle ));
86+ }
87+ mMergedObjectLastCycle = std::monostate{};
88+ mTotalDeltasMerged += mDeltasMerged ;
8589
86- if (mConfig .mergedObjectTimespan .value == MergedObjectTimespan::LastDifference ||
87- mConfig .mergedObjectTimespan .value == MergedObjectTimespan::NCycles && mConfig .mergedObjectTimespan .param == mCyclesSinceReset ) {
88- clear ();
89- }
90+ publishIntegral (outputs);
9091
91- mCollector ->send ({mTotalDeltasMerged , " total_deltas_merged" }, monitoring::DerivedMetricMode::RATE);
92- mCollector ->send ({mDeltasMerged , " deltas_merged_since_last_publication" });
93- mCollector ->send ({mCyclesSinceReset , " cycles_since_reset" });
94- mDeltasMerged = 0 ;
92+ if (mConfig .mergedObjectTimespan .value == MergedObjectTimespan::LastDifference ||
93+ mConfig .mergedObjectTimespan .value == MergedObjectTimespan::NCycles && mConfig .mergedObjectTimespan .param == mCyclesSinceReset ) {
94+ clear ();
9595 }
96+
97+ mCollector ->send ({mTotalDeltasMerged , " total_deltas_merged" }, monitoring::DerivedMetricMode::RATE);
98+ mCollector ->send ({mDeltasMerged , " deltas_merged_since_last_publication" });
99+ mCollector ->send ({mCyclesSinceReset , " cycles_since_reset" });
100+ mDeltasMerged = 0 ;
96101}
102+
97103void IntegratingMerger::merge (ObjectStore& target, ObjectStore&& other)
98104{
99105 if (std::holds_alternative<std::monostate>(target)) {
@@ -121,7 +127,7 @@ void IntegratingMerger::merge(ObjectStore& target, ObjectStore&& other)
121127
122128void IntegratingMerger::endOfStream (framework::EndOfStreamContext& eosContext)
123129{
124- publishIntegral (eosContext.outputs ());
130+ finishCycle (eosContext.outputs ());
125131}
126132
127133// I am not calling it reset(), because it does not have to be performed during the FairMQs reset.
0 commit comments