From 00e6e55430eed714c3023a0aed17dffcc9ac4485 Mon Sep 17 00:00:00 2001 From: Fabian Peller <fabian.peller-konrad@kit.edu> Date: Thu, 16 Nov 2023 16:10:15 +0100 Subject: [PATCH] remove mutex from simple memory writer (makes it copyable) --- .../armem/client/util/SimpleWriterBase.cpp | 6 ----- .../armem/client/util/SimpleWriterBase.h | 2 -- .../client/occupancy_grid/Writer.cpp | 25 +++++++++++-------- 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.cpp b/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.cpp index e5d468c55..3d8907a34 100644 --- a/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.cpp +++ b/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.cpp @@ -44,12 +44,6 @@ namespace armarx::armem::client::util } } - std::mutex& - SimpleWriterBase::memoryWriterMutex() - { - return memoryMutex; - } - armem::client::Writer& SimpleWriterBase::memoryWriter() { diff --git a/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.h b/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.h index 13a54cc5b..895376b0a 100644 --- a/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.h +++ b/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.h @@ -58,7 +58,6 @@ namespace armarx::armem::client::util virtual std::string propertyPrefix() const = 0; virtual Properties defaultProperties() const = 0; - std::mutex& memoryWriterMutex(); armem::client::Writer& memoryWriter(); @@ -66,7 +65,6 @@ namespace armarx::armem::client::util Properties props; armem::client::Writer memoryWriterClient; - std::mutex memoryMutex; }; } // namespace armarx::armem::client::util diff --git a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp index a68216255..9c06db1e5 100644 --- a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp +++ b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp @@ -1,19 +1,21 @@ #include "Writer.h" -#include <RobotAPI/libraries/armem_vision/aron_conversions.h> #include <RobotAPI/libraries/armem_vision/aron/OccupancyGrid.aron.generated.h> - +#include <RobotAPI/libraries/armem_vision/aron_conversions.h> namespace armarx::armem::vision::occupancy_grid::client { Writer::~Writer() = default; - bool Writer::store(const OccupancyGrid& grid, - const std::string& frame, - const std::string& providerName, - const std::int64_t& timestamp) + bool + Writer::store(const OccupancyGrid& grid, + const std::string& frame, + const std::string& providerName, + const std::int64_t& timestamp) { - std::lock_guard g{memoryWriterMutex()}; + static std::mutex mutex; + + std::lock_guard g{mutex}; const auto result = memoryWriter().addSegment(properties().coreSegmentName, providerName); @@ -28,7 +30,7 @@ namespace armarx::armem::vision::occupancy_grid::client const auto iceTimestamp = Time(Duration::MicroSeconds(timestamp)); const auto providerId = armem::MemoryID(result.segmentID); - const auto entityID = providerId.withEntityName(frame).withTimestamp(iceTimestamp); + const auto entityID = providerId.withEntityName(frame).withTimestamp(iceTimestamp); armem::EntityUpdate update; update.entityID = entityID; @@ -41,7 +43,7 @@ namespace armarx::armem::vision::occupancy_grid::client dict->addElement("grid", toAron(grid.grid)); update.instancesData = {dict}; - update.referencedTime = iceTimestamp; + update.referencedTime = iceTimestamp; ARMARX_DEBUG << "Committing " << update << " at time " << iceTimestamp; armem::EntityUpdateResult updateResult = memoryWriter().commit(update); @@ -56,7 +58,8 @@ namespace armarx::armem::vision::occupancy_grid::client return updateResult.success; } - std::string Writer::propertyPrefix() const + std::string + Writer::propertyPrefix() const { return "mem.vision.occupancy_grid."; } @@ -65,7 +68,7 @@ namespace armarx::armem::vision::occupancy_grid::client Writer::defaultProperties() const { - return SimpleWriterBase::Properties{.memoryName = "Vision", + return SimpleWriterBase::Properties{.memoryName = "Vision", .coreSegmentName = "OccupancyGrid"}; } } // namespace armarx::armem::vision::occupancy_grid::client -- GitLab