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

Add locking commit

parent 85823dba
No related branches found
No related tags found
2 merge requests!185Clean up interfaces and unneeded code in memory core classes,!178Draft: Make RobotStateMemory ready
......@@ -168,30 +168,40 @@ namespace armarx::armem::server::robot_state::localization
}
bool Segment::storeTransform(const armarx::armem::robot_state::Transform& transform)
bool Segment::commitTransform(const armarx::armem::robot_state::Transform& transform)
{
const armem::Time& timestamp = transform.header.timestamp;
Commit commit;
commit.add(makeUpdate(transform));
const MemoryID providerID =
coreSegment->id().withProviderSegmentName(transform.header.agent);
if (not coreSegment->hasProviderSegment(providerID.providerSegmentName))
{
coreSegment->addProviderSegment(providerID.providerSegmentName, arondto::Transform::toAronType());
}
const armem::CommitResult result = iceMemory.commit(commit);
return result.allSuccess();
}
bool Segment::commitTransformLocking(const armarx::armem::robot_state::Transform& transform)
{
Commit commit;
commit.add(makeUpdate(transform));
EntityUpdate& update = commit.updates.emplace_back();
update.entityID =
providerID.withEntityName(transform.header.parentFrame + "," + transform.header.frame);
const armem::CommitResult result = iceMemory.commitLocking(commit);
return result.allSuccess();
}
EntityUpdate Segment::makeUpdate(const armarx::armem::robot_state::Transform& transform) const
{
const armem::Time& timestamp = transform.header.timestamp;
const MemoryID providerID = coreSegment->id().withProviderSegmentName(transform.header.agent);
EntityUpdate update;
update.entityID = providerID.withEntityName(transform.header.parentFrame + "," + transform.header.frame);
update.timeArrived = update.timeCreated = update.timeSent = timestamp;
arondto::Transform aronTransform;
toAron(aronTransform, transform);
update.instancesData = {aronTransform.toAron()};
const armem::CommitResult result = iceMemory.commit(commit);
return result.allSuccess();
return update;
}
} // namespace armarx::armem::server::robot_state::localization
......@@ -36,6 +36,7 @@
namespace armarx::armem
{
class EntityUpdate;
namespace server
{
class MemoryToIceAdapter;
......@@ -75,7 +76,14 @@ namespace armarx::armem::server::robot_state::localization
RobotFramePoseMap getRobotFramePoses(const armem::Time& timestamp) const;
RobotFramePoseMap getRobotFramePosesLocking(const armem::Time& timestamp) const;
bool storeTransform(const armarx::armem::robot_state::Transform& transform);
bool commitTransform(const armarx::armem::robot_state::Transform& transform);
bool commitTransformLocking(const armarx::armem::robot_state::Transform& transform);
private:
EntityUpdate makeUpdate(const armarx::armem::robot_state::Transform& transform) const;
private:
......
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