SpecializedProviderSegment.cpp
Go to the documentation of this file.
2
5
8
10{
13 const std::string& defaultProviderSegmentName,
14 const std::string& defaultCoreSegmentName,
15 aron::type::ObjectPtr providerSegmentAronType,
16 aron::type::ObjectPtr coreSegmentAronType,
17 int defaultMaxHistorySize,
18 const std::vector<PredictionEngine>& providerSegmentPredictionEngines,
19 const std::vector<PredictionEngine>& coreSegmentPredictionEngines) :
20 Base(iceMemory),
21 aronType(providerSegmentAronType),
22 predictionEngines(providerSegmentPredictionEngines),
24 defaultCoreSegmentName,
25 coreSegmentAronType,
26 -1,
27 providerSegmentPredictionEngines),
28 properties({defaultProviderSegmentName, defaultMaxHistorySize})
29 {
30 Logging::setTag("armarx::armem::SpecializedProviderSegment");
31 }
32
36
37 void
39 const std::string& prefix)
40 {
42
43 coreSegment.defineProperties(defs, prefix);
44
45 defs->optional(properties.segmentName,
46 prefix + "seg.ProviderSegmentName",
47 "Name of the " + properties.segmentName + " provider segment.");
48
49 defs->optional(properties.maxHistorySize,
50 prefix + "seg.ProviderMaxHistorySize",
51 "Maximal size of the " + properties.segmentName +
52 " entity histories (-1 for infinite).");
53
54 defs->optional(properties.unlimitedHistoryWarningThreshold,
55 prefix + "seg.ProviderUnlimitedHistoryWarningThreshold",
56 "When maxHistorySize is -1 (unlimited) and history exceeds this threshold, "
57 "a warning is emitted. Set to 0 to disable.");
58
59 defs->optional(properties.truncateMaxBatchSize,
60 prefix + "seg.ProviderTruncateMaxBatchSize",
61 "Maximum number of snapshots to remove per truncate() call. "
62 "Limits blocking time during cleanup. Set to 0 for unlimited.");
63 }
64
65 void
67 {
68 ARMARX_CHECK_NOT_NULL(iceMemory.workingMemory);
69
70 coreSegment.init();
71
72 Logging::setTag(properties.segmentName + " Provider Segment");
73
74 if (coreSegment.segmentPtr->hasProviderSegment(properties.segmentName))
75 {
76 segmentPtr = &coreSegment.segmentPtr->getProviderSegment(properties.segmentName);
77 }
78 else
79 {
80 ARMARX_INFO << "Adding provider segment '" << properties.segmentName << "'";
81 segmentPtr = &coreSegment.segmentPtr->addProviderSegment(properties.segmentName);
82
83 segmentPtr->aronType() = aronType;
84 segmentPtr->setMaxHistorySize(properties.maxHistorySize);
85 segmentPtr->setUnlimitedHistoryWarningThreshold(
86 properties.unlimitedHistoryWarningThreshold);
87 segmentPtr->setTruncateMaxBatchSize(properties.truncateMaxBatchSize);
88 segmentPtr->setPredictionEngines(predictionEngines);
89 }
90 }
91
92 void
94 const std::string& providerSegmentName)
95 {
96 this->properties.segmentName = providerSegmentName;
97 }
98
99 void
101 {
102 this->properties.maxHistorySize = maxHistorySize;
103 }
104
105 void
110
111 void
113 const std::vector<PredictionEngine>& predictionEngines)
114 {
115 this->predictionEngines = predictionEngines;
116 }
117
124
131
132} // namespace armarx::armem::server::segment
void setTag(const LogTag &tag)
Definition Logging.cpp:54
Helps connecting a Memory server to the Ice interface.
virtual void defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string &prefix="") override
void setDefaultProviderSegmentName(const std::string &providerSegmentName)
void setPredictionEngines(const std::vector< PredictionEngine > &predictionEngines)
SpecializedProviderSegment(MemoryToIceAdapter &iceMemory, const std::string &defaultProviderSegmentName="", const std::string &defaultCoreSegmentName="", aron::type::ObjectPtr providerSegmentAronType=nullptr, aron::type::ObjectPtr coreSegmentAronType=nullptr, int defaultMaxHistorySize=10, const std::vector< PredictionEngine > &providerSegmentPredictionEngines={}, const std::vector< PredictionEngine > &coreSegmentPredictionEngines={})
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
#define ARMARX_INFO
The normal logging level.
Definition Logging.h:181
std::shared_ptr< Object > ObjectPtr
Definition Object.h:36
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.