ComposedSkillLibrarySegment.cpp
Go to the documentation of this file.
2 
3 #include <optional>
4 
5 #include <SimoxUtility/algorithm/string.h>
6 
8 
14 #include <RobotAPI/libraries/armem_skills/aron/Skill.aron.generated.h>
18 #include <RobotAPI/libraries/skills/core/aron/FluxioSkill.aron.generated.h>
19 
21 {
24  Base(iceMemory, CoreSegmentName, skills::manager::arondto::FluxioSkill::ToAronType())
25  {
26  }
27 
28  void
30  const std::string& prefix)
31  {
32  this->setDefaultMaxHistorySize(maxHistorySize);
33  Base::defineProperties(defs, prefix);
34  }
35 
36  void
38  {
39  Base::init();
40  }
41 
42  void
43  ComposedSkillLibraryCoreSegment::addSkill(const skills::manager::arondto::FluxioSkill& skill)
44  {
45  // add skills
46  armem::MemoryID provId = id().withProviderSegmentName(skill.skillProviderId.id);
47 
48  armem::Commit commit;
49  armem::EntityUpdate& entityUpdate = commit.add();
50  entityUpdate.confidence = 1.0;
51  entityUpdate.referencedTime = armem::Time::Now();
52  entityUpdate.sentTime = armem::Time::Now();
53  entityUpdate.arrivedTime = armem::Time::Now();
54  entityUpdate.instancesData = {skill.toAron()};
55  entityUpdate.entityID = provId.withEntityName(skill.id);
56 
57  // Commit data to memory and notify
58  iceMemory.commit(commit);
59  }
60 
61  std::optional<std::vector<skills::manager::arondto::FluxioSkill>>
63  {
64  std::vector<skills::manager::arondto::FluxioSkill> ret;
66  qb.allLatestInCoreSegment(id());
68  if (!qresult.success)
69  {
70  ARMARX_WARNING << "Query failed: " << qresult.errorMessage;
71  return std::nullopt;
72  }
73 
74  const armem::wm::Memory& data = qresult.memory;
75 
76  data.forEachInstance(
77  [&ret](const armem::wm::EntityInstance& instance)
78  {
79  auto skill = instance.dataAs<skills::manager::arondto::FluxioSkill>();
80  if (skill.deleted)
81  {
82  return;
83  }
84  ret.push_back(skill);
85  });
86 
87  return ret;
88  }
89 
90  std::optional<std::vector<skills::manager::arondto::FluxioSkill>>
91  ComposedSkillLibraryCoreSegment::getSkillsOfProvider(const std::string& providerId) const
92  {
93  std::vector<skills::manager::arondto::FluxioSkill> ret;
95  qb.allLatestInProviderSegment(id().withProviderSegmentName(providerId));
97  if (!qresult.success)
98  {
99  ARMARX_WARNING << "Query failed: " << qresult.errorMessage;
100  return std::nullopt;
101  }
102 
103  const armem::wm::Memory& data = qresult.memory;
104 
105  data.forEachInstance(
106  [&ret](const armem::wm::EntityInstance& instance)
107  {
108  auto skill = instance.dataAs<skills::manager::arondto::FluxioSkill>();
109  if (skill.deleted)
110  {
111  return;
112  }
113  ret.push_back(skill);
114  });
115 
116  return ret;
117  }
118 } // namespace armarx::skills::segment
armarx::skills::FluxioSkill
Definition: FluxioSkill.h:25
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::skills::segment::ComposedSkillLibraryCoreSegment::addSkill
void addSkill(const skills::manager::arondto::FluxioSkill &skill)
Definition: ComposedSkillLibrarySegment.cpp:43
armarx::armem::client::QueryResult::memory
wm::Memory memory
The slice of the memory that matched the query.
Definition: Query.h:58
armarx::skills::segment::ComposedSkillLibraryCoreSegment::getSkills
std::optional< std::vector< skills::manager::arondto::FluxioSkill > > getSkills() const
Definition: ComposedSkillLibrarySegment.cpp:62
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::skills::segment::ComposedSkillLibraryCoreSegment::init
void init()
Definition: ComposedSkillLibrarySegment.cpp:37
armarx::armem::server::MemoryToIceAdapter
Helps connecting a Memory server to the Ice interface.
Definition: MemoryToIceAdapter.h:19
armarx::skills::segment::ComposedSkillLibraryCoreSegment::ComposedSkillLibraryCoreSegment
ComposedSkillLibraryCoreSegment(armem::server::MemoryToIceAdapter &iceMemory)
Definition: ComposedSkillLibrarySegment.cpp:22
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
armarx::armem::EntityUpdate::confidence
float confidence
An optional confidence, may be used for things like decay.
Definition: Commit.h:43
ice_conversions.h
armarx::armem::client::QueryResult
Result of a QueryInput.
Definition: Query.h:50
Query.h
ComposedSkillLibrarySegment.h
NLohmannJSONConverter.h
armarx::skills::segment::ComposedSkillLibraryCoreSegment::getSkillsOfProvider
std::optional< std::vector< skills::manager::arondto::FluxioSkill > > getSkillsOfProvider(const std::string &providerId) const
Definition: ComposedSkillLibrarySegment.cpp:91
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
forward_declarations.h
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::client::query::Builder::allLatestInProviderSegment
void allLatestInProviderSegment(const MemoryID &providerSegmentID)
Get latest snapshots from all entities in a provider segment.
Definition: Builder.cpp:105
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
memory_definitions.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
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_WARNING
#define ARMARX_WARNING
Definition: Logging.h:193
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
armarx::skills::segment::ComposedSkillLibraryCoreSegment::defineProperties
void defineProperties(PropertyDefinitionsPtr defs, const std::string &prefix)
Definition: ComposedSkillLibrarySegment.cpp:29