Skip to content

Commit 3f9c0ee

Browse files
authored
BUG: Modernize Segment Features Feedback (#1444)
* Remove percentage calculation (its not a linear function) * Switch SegmentFeatures to MessageHelper and ThrottledMessenger
1 parent bbeabed commit 3f9c0ee

File tree

2 files changed

+12
-18
lines changed

2 files changed

+12
-18
lines changed

src/simplnx/Utilities/SegmentFeatures.cpp

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ using namespace nx::core;
99
SegmentFeatures::SegmentFeatures(DataStructure& dataStructure, const std::atomic_bool& shouldCancel, const IFilter::MessageHandler& mesgHandler)
1010
: m_DataStructure(dataStructure)
1111
, m_ShouldCancel(shouldCancel)
12-
, m_MessageHandler(mesgHandler)
12+
, m_MessageHelper(mesgHandler)
1313
{
1414
}
1515

@@ -58,8 +58,7 @@ Result<> SegmentFeatures::execute(IGridGeometry* gridGeom)
5858
periodicPoints[5] = -(dims[0] * dims[1]) * (dims[2] - 1);
5959
}
6060

61-
auto start = std::chrono::steady_clock::now();
62-
61+
ThrottledMessenger throttledMessenger = m_MessageHelper.createThrottledMessenger();
6362
while(seed >= 0)
6463
{
6564
if(m_ShouldCancel)
@@ -142,25 +141,18 @@ Result<> SegmentFeatures::execute(IGridGeometry* gridGeom)
142141
voxelsList.assign(initialVoxelsListSize, -1);
143142
gnum++;
144143

145-
auto now = std::chrono::steady_clock::now();
146-
// Only send updates every 1 second
147-
if(std::chrono::duration_cast<std::chrono::milliseconds>(now - start).count() > 1000)
148-
{
149-
std::string message = fmt::format("Features Found: {}", gnum);
150-
m_MessageHandler(nx::core::IFilter::ProgressMessage{nx::core::IFilter::Message::Type::Info, message, 0});
151-
start = std::chrono::steady_clock::now();
152-
}
144+
throttledMessenger.sendThrottledMessage([&]() { return fmt::format("Features Found: {}", gnum); });
153145

154146
nextSeed = seed + 1;
155147
seed = getSeed(gnum, nextSeed);
156148
}
157149

158150
if(hasNonContiguousFeature)
159151
{
160-
m_MessageHandler({IFilter::Message::Type::Info, "SegmentFeatures found Non-Contiguous Features."});
152+
m_MessageHelper.sendMessage("SegmentFeatures found Non-Contiguous Features.");
161153
}
162154

163-
m_MessageHandler({IFilter::Message::Type::Info, fmt::format("Total Features Found: {}", gnum)});
155+
m_MessageHelper.sendMessage(fmt::format("Total Features Found: {}", gnum));
164156
m_FoundFeatures = gnum;
165157
return {};
166158
}
@@ -182,8 +174,8 @@ SegmentFeatures::SeedGenerator SegmentFeatures::initializeStaticVoxelSeedGenerat
182174
}
183175

184176
// -----------------------------------------------------------------------------
185-
void SegmentFeatures::randomizeFeatureIds(nx::core::Int32Array* featureIds, uint64 totalFeatures) const
177+
void SegmentFeatures::randomizeFeatureIds(nx::core::Int32Array* featureIds, uint64 totalFeatures)
186178
{
187-
m_MessageHandler(IFilter::Message::Type::Info, "Randomizing Feature Ids");
179+
m_MessageHelper.sendMessage("Randomizing Feature Ids");
188180
ClusterUtilities::RandomizeFeatureIds(featureIds->getDataStoreRef(), totalFeatures);
189181
}

src/simplnx/Utilities/SegmentFeatures.hpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
#pragma once
22

3+
#include "simplnx/simplnx_export.hpp"
4+
35
#include "simplnx/DataStructure/DataArray.hpp"
46
#include "simplnx/DataStructure/DataStructure.hpp"
57
#include "simplnx/DataStructure/IDataArray.hpp"
68
#include "simplnx/Filter/Arguments.hpp"
79
#include "simplnx/Filter/IFilter.hpp"
8-
#include "simplnx/simplnx_export.hpp"
10+
#include "simplnx/Utilities/MessageHelper.hpp"
911

1012
#include <random>
1113
#include <vector>
@@ -64,7 +66,7 @@ class SIMPLNX_EXPORT SegmentFeatures
6466
* @param totalFeatures
6567
* @param distribution
6668
*/
67-
virtual void randomizeFeatureIds(Int32Array* featureIds, uint64 totalFeatures) const;
69+
void randomizeFeatureIds(Int32Array* featureIds, uint64 totalFeatures);
6870

6971
/**
7072
* @brief
@@ -92,7 +94,7 @@ class SIMPLNX_EXPORT SegmentFeatures
9294
DataStructure& m_DataStructure;
9395
bool m_IsPeriodic = false;
9496
const std::atomic_bool& m_ShouldCancel;
95-
const IFilter::MessageHandler& m_MessageHandler;
97+
MessageHelper m_MessageHelper;
9698
int32 m_FoundFeatures = 0;
9799

98100
private:

0 commit comments

Comments
 (0)