ProfileLibrarySegment.cpp
Go to the documentation of this file.
2 #include <vector>
3 
4 #include <SimoxUtility/algorithm/string.h>
5 
7 
15 #include <RobotAPI/libraries/skills/core/aron/FluxioProfile.aron.generated.h>
16 
18 {
21  Base(iceMemory, CoreSegmentName, skills::manager::arondto::FluxioProfile::ToAronType())
22  {
23  }
24 
25  void
27  const std::string& prefix)
28  {
29  this->setDefaultMaxHistorySize(3);
30  Base::defineProperties(defs, prefix);
31  }
32 
33  void
35  {
36  Base::init();
37  }
38 
39  void
40  ProfileLibraryCoreSegment::addProfile(const skills::manager::arondto::FluxioProfile& profile)
41  {
42  // add profile
43  armem::MemoryID provId = id().withProviderSegmentName("FluxioProfile");
44 
45  armem::Commit commit;
46  armem::EntityUpdate& entityUpdate = commit.add();
47  entityUpdate.confidence = 1.0;
48  entityUpdate.referencedTime = armem::Time::Now();
49  entityUpdate.sentTime = armem::Time::Now();
50  entityUpdate.arrivedTime = armem::Time::Now();
51  entityUpdate.instancesData = {profile.toAron()};
52  entityUpdate.entityID = provId.withEntityName(profile.name);
53 
54  // Commit data to memory and notify
55  iceMemory.commit(commit);
56  }
57 
58  std::optional<std::vector<skills::manager::arondto::FluxioProfile>> ProfileLibraryCoreSegment::getProfiles() const {
59  std::vector<skills::manager::arondto::FluxioProfile> ret;
61  qb.allLatestInCoreSegment(id());
63  if (!qresult.success)
64  {
65  ARMARX_WARNING << "Query failed: " << qresult.errorMessage;
66  return std::nullopt;
67  }
68 
69  const armem::wm::Memory& data = qresult.memory;
70 
71  data.forEachInstance(
72  [&ret](const armem::wm::EntityInstance& instance)
73  {
74  auto profile = instance.dataAs<skills::manager::arondto::FluxioProfile>();
75  if (profile.deleted)
76  {
77  return;
78  }
79  ret.push_back(profile);
80  });
81 
82  return ret;
83  }
84 } // namespace armarx::skills::segment
armarx::armem::detail::SuccessHeader::success
bool success
Definition: SuccessHeader.h:19
armarx::armem::client::query::Builder::allLatestInCoreSegment
void allLatestInCoreSegment(const MemoryID &coreSegmentID)
Get latest snapshots from all entities in all provider segments in a core segment.
Definition: Builder.cpp:79
armarx::aron::ret
ReaderT::InputType T & ret
Definition: rw.h:13
skills
This file is part of ArmarX.
armarx::armem::client::QueryResult::memory
wm::Memory memory
The slice of the memory that matched the query.
Definition: Query.h:58
armarx::skills::segment::ProfileLibraryCoreSegment::ProfileLibraryCoreSegment
ProfileLibraryCoreSegment(armem::server::MemoryToIceAdapter &iceMemory)
Definition: ProfileLibrarySegment.cpp:19
armarx::armem::EntityUpdate::instancesData
std::vector< aron::data::DictPtr > instancesData
The entity data.
Definition: Commit.h:31
armarx::armem::Commit
A bundle of updates to be sent to the memory.
Definition: Commit.h:84
armarx::armem::wm::EntityInstance
Client-side working entity instance.
Definition: memory_definitions.h:32
armarx::armem::server::MemoryToIceAdapter
Helps connecting a Memory server to the Ice interface.
Definition: MemoryToIceAdapter.h:19
armarx::armem::client::query::Builder::buildQueryInput
QueryInput buildQueryInput() const
Definition: Builder.cpp:12
armarx::core::time::DateTime::Now
static DateTime Now()
Definition: DateTime.cpp:51
MemoryID.h
armarx::armem::EntityUpdate::confidence
float confidence
An optional confidence, may be used for things like decay.
Definition: Commit.h:43
armarx::skills::segment::ProfileLibraryCoreSegment::addProfile
void addProfile(const skills::manager::arondto::FluxioProfile &profile)
Definition: ProfileLibrarySegment.cpp:40
ice_conversions.h
ProfileLibrarySegment.h
armarx::armem::client::QueryResult
Result of a QueryInput.
Definition: Query.h:50
armarx::skills::segment::ProfileLibraryCoreSegment::init
void init()
Definition: ProfileLibrarySegment.cpp:34
NLohmannJSONConverter.h
armarx::armem::EntityUpdate::arrivedTime
Time arrivedTime
Time when this update arrived at the memory server.
Definition: Commit.h:60
armarx::armem::base::EntityInstanceBase::dataAs
AronDtoT dataAs() const
Get the data converted to a generated Aron DTO class.
Definition: EntityInstanceBase.h:157
armarx::armem::MemoryID::withProviderSegmentName
MemoryID withProviderSegmentName(const std::string &name) const
Definition: MemoryID.cpp:417
armarx::armem::detail::SuccessHeader::errorMessage
std::string errorMessage
Definition: SuccessHeader.h:20
armarx::armem::MemoryID
A memory ID.
Definition: MemoryID.h:47
aron_conversions.h
armarx::skills::segment
Definition: ComposedSkillLibrarySegment.cpp:20
armarx::armem::server::segment::detail::SegmentBase< server::wm::CoreSegment >
armarx::armem::server::segment::SpecializedCoreSegment::init
virtual void init() override
Definition: SpecializedCoreSegment.cpp:47
data
uint8_t data[1]
Definition: EtherCATFrame.h:68
armarx::armem::wm::Memory
Client-side working memory.
Definition: memory_definitions.h:133
armarx::armem::EntityUpdate
An update of an entity for a specific point in time.
Definition: Commit.h:25
DatatypeConverterVisitor.h
MemoryToIceAdapter.h
Commit.h
armarx::armem::EntityUpdate::referencedTime
Time referencedTime
Time when this entity update was created (e.g.
Definition: Commit.h:37
armarx::armem::MemoryID::withEntityName
MemoryID withEntityName(const std::string &name) const
Definition: MemoryID.cpp:425
armarx::armem::Commit::add
EntityUpdate & add()
Definition: Commit.cpp:80
armarx::armem::server::segment::detail::SegmentBase< server::wm::CoreSegment >::iceMemory
MemoryToIceAdapter & iceMemory
Definition: SpecializedSegment.h:58
armarx::armem::server::segment::SpecializedCoreSegment::setDefaultMaxHistorySize
void setDefaultMaxHistorySize(int64_t maxHistorySize)
Definition: SpecializedCoreSegment.cpp:74
armarx::skills::FluxioProfile
Definition: FluxioProfile.h:14
IceUtil::Handle< class PropertyDefinitionContainer >
Builder.h
armarx::armem::server::segment::detail::SegmentBase< server::wm::CoreSegment >::id
MemoryID & id()
Definition: SpecializedSegment.h:33
armarx::armem::client::query::Builder
The query::Builder class provides a fluent-style specification of hierarchical queries.
Definition: Builder.h:21
armarx::skills::segment::ProfileLibraryCoreSegment::getProfiles
std::optional< std::vector< skills::manager::arondto::FluxioProfile > > getProfiles() const
Definition: ProfileLibrarySegment.cpp:58
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:193
armarx::skills::segment::ProfileLibraryCoreSegment::defineProperties
void defineProperties(PropertyDefinitionsPtr defs, const std::string &prefix)
Definition: ProfileLibrarySegment.cpp:26
armarx::armem::EntityUpdate::entityID
MemoryID entityID
The entity's ID.
Definition: Commit.h:28
armarx::armem::server::segment::SpecializedCoreSegment::defineProperties
virtual void defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string &prefix="") override
Definition: SpecializedCoreSegment.cpp:31
armarx::armem::EntityUpdate::sentTime
Time sentTime
Time when this update was sent to the memory server.
Definition: Commit.h:53
armarx::armem::server::MemoryToIceAdapter::commit
data::CommitResult commit(const data::Commit &commitIce, Time timeArrived)
Definition: MemoryToIceAdapter.cpp:115
armarx::armem::server::MemoryToIceAdapter::query
query::data::Result query(const armem::query::data::Input &input)
Definition: MemoryToIceAdapter.cpp:314