Skip to content
Snippets Groups Projects
Commit 23f4e131 authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Remove mutex, make SimpleReaderBase copy-able. Set default properties when...

Remove mutex, make SimpleReaderBase copy-able. Set default properties when used without registerPropertyDefinitions().
parent 937019e4
No related branches found
No related tags found
1 merge request!398Minor fixes and improvements in skills
Pipeline #15865 passed
......@@ -17,21 +17,25 @@ namespace armarx::armem::client::util
const std::string prefix = propertyPrefix();
props = defaultProperties();
if (not props.has_value())
{
props = defaultProperties();
}
def->optional(props.memoryName, prefix + "Memory");
def->optional(props.coreSegmentName, prefix + "CoreSegment");
def->optional(props->memoryName, prefix + "Memory");
def->optional(props->coreSegmentName, prefix + "CoreSegment");
}
void
SimpleReaderBase::connect(armarx::armem::client::MemoryNameSystem& mns)
{
// Wait for the memory to become available and add it as dependency.
ARMARX_IMPORTANT << "SimpleReaderBase: Waiting for memory '" << props.memoryName << "' ...";
ARMARX_IMPORTANT << "SimpleReaderBase: Waiting for memory '" << properties().memoryName
<< "' ...";
try
{
memoryReaderClient = mns.useReader(MemoryID().withMemoryName(props.memoryName));
ARMARX_IMPORTANT << "SimpleReaderBase: Connected to memory '" << props.memoryName
memoryReaderClient = mns.useReader(MemoryID().withMemoryName(properties().memoryName));
ARMARX_IMPORTANT << "SimpleReaderBase: Connected to memory '" << properties().memoryName
<< "'";
}
catch (const armem::error::CouldNotResolveMemoryServer& e)
......@@ -41,12 +45,6 @@ namespace armarx::armem::client::util
}
}
std::mutex&
SimpleReaderBase::memoryReaderMutex()
{
return memoryMutex;
}
const armem::client::Reader&
SimpleReaderBase::memoryReader() const
{
......@@ -56,7 +54,17 @@ namespace armarx::armem::client::util
const SimpleReaderBase::Properties&
SimpleReaderBase::properties() const
{
return props;
if (not props.has_value())
{
const_cast<std::optional<Properties>&>(props) = defaultProperties();
}
return props.value();
}
void
SimpleReaderBase::setProperties(const Properties& p)
{
props = p;
}
} // namespace armarx::armem::client::util
......@@ -21,7 +21,7 @@
#pragma once
#include <mutex>
#include <optional>
#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h>
......@@ -53,25 +53,18 @@ namespace armarx::armem::client::util
virtual void connect(armarx::armem::client::MemoryNameSystem& mns);
const Properties& properties() const;
void
setProperties(const Properties& p)
{
props = p;
}
void setProperties(const Properties& p);
protected:
virtual std::string propertyPrefix() const = 0;
virtual Properties defaultProperties() const = 0;
std::mutex& memoryReaderMutex();
const armem::client::Reader& memoryReader() const;
private:
Properties props;
std::optional<Properties> props;
armem::client::Reader memoryReaderClient;
std::mutex memoryMutex;
};
} // namespace armarx::armem::client::util
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment