28#include <ArmarXCore/interface/core/Log.h>
40 AbstractMemorySegmentPrx
42 const AbstractMemorySegmentPtr& segment,
43 const ::Ice::Current&
c)
47 MemorySegmentMap::const_iterator it =
segments.find(segmentName);
51 throw SegmentAlreadyExistsException();
55 segment->setSegmentName(segmentName);
56 segment->setParentMemory(
this);
58 auto id = segment->getIceId();
60 AbstractMemorySegmentPrx segmentProxy =
61 AbstractMemorySegmentPrx::uncheckedCast(
getObjectAdapter()->add(segment,
id));
65 segmentEntry.
proxy = segmentProxy;
68 segments[segmentName] = segmentEntry;
80 AbstractMemorySegmentPrx
86 MemorySegmentMap::const_iterator iter =
segments.find(segmentName);
90 ARMARX_ERROR_S <<
"Could not find segment with name " << segmentName << std::endl;
91 throw InvalidEntityException();
94 return iter->second.proxy;
102 MemorySegmentMap::iterator iter =
segments.find(segmentName);
106 AbstractMemorySegmentPrx proxy = iter->second.proxy;
109 Ice::Identity
id = proxy->ice_getIdentity();
124 for (MemorySegmentMap::const_iterator it =
segments.begin(); it !=
segments.end(); ++it)
126 result.push_back(it->first);
132 AbstractMemorySegmentPtr
138 MemorySegmentMap::iterator iter =
segments.find(segmentName);
142 ARMARX_ERROR_S <<
"Could not find segment with name " << segmentName << std::endl;
143 throw InvalidEntityException();
146 return iter->second.pointer;
154 for (
auto name : names)
156 EntityMemorySegmentInterfacePtr segment =
157 memoryx::EntityMemorySegmentInterfacePtr::dynamicCast(
getSegmentPtr(name));
164 auto entity = segment->getEntityById(entityId);
180 for (
auto name : names)
182 EntityMemorySegmentInterfacePtr segment =
183 memoryx::EntityMemorySegmentInterfacePtr::dynamicCast(
getSegmentPtr(name));
190 auto entity = segment->getEntityRefById(entityId);
AbstractMemorySegmentPrx addSegment(const std::string &segmentName, const AbstractMemorySegmentPtr &segment, const ::Ice::Current &=Ice::emptyCurrent) override
virtual Ice::ObjectAdapterPtr getObjectAdapter() const =0
NameList getSegmentNames(const ::Ice::Current &=Ice::emptyCurrent) const override
MemorySegmentMap segments
EntityRefBasePtr findEntityRefById(const std::string &entityId, const Ice::Current &c=Ice::emptyCurrent) override
AbstractMemorySegmentPtr getSegmentPtr(const std::string &segmentName)
void removeSegment(const std::string &segmentName, const ::Ice::Current &=Ice::emptyCurrent) override
EntityBasePtr findEntityById(const std::string &entityId, const Ice::Current &c=Ice::emptyCurrent) override
AbstractMemorySegmentPrx getSegment(const std::string &segmentName, const ::Ice::Current &=Ice::emptyCurrent) const override
~SegmentedMemory() override
std::shared_mutex segmentsMutex
bool hasSegment(const std::string &segmentName, const ::Ice::Current &=Ice::emptyCurrent) const override
#define ARMARX_ERROR_S
The logging level for unexpected behaviour, that must be fixed.
AbstractMemorySegmentPrx proxy
AbstractMemorySegmentPtr pointer