28#include <SimoxUtility/json.h>
40 if (not m_configs_json.empty())
42 std::map<std::string, imrec::Config> configs = nlohmann::json::parse(m_configs_json);
64 const std::map<std::string, imrec::Config>& configs,
67 std::unique_lock l{m_configs_mx};
69 if (not configs.empty())
81 const Ice::Current&
c)
83 const std::map<std::string, imrec::Config>& configs = nlohmann::json::parse(configs_json);
87std::map<std::string, visionx::imrec::Config>
90 std::shared_lock l{m_configs_mx};
92 if (not m_configs.has_value())
97 return m_configs.value();
103 std::shared_lock l{m_configs_mx};
104 return m_configs.has_value();
107std::map<std::string, visionx::imrecman::StartStopStatus>
113 std::shared_lock l{m_configs_mx};
115 std::map<std::string, visionx::imrecman::StartStopStatus> statuses;
117 if (not m_configs.has_value())
122 for (
auto [proxy_name, config] : m_configs.value())
127 ARMARX_DEBUG <<
"Calling startRecording on image provider '" << proxy_name <<
"'.";
129 ->startImageRecording(config);
135 ARMARX_DEBUG <<
"Image provider '" << proxy_name <<
"' offline.";
138 statuses[proxy_name] = status;
146std::map<std::string, visionx::imrec::Status>
152 std::shared_lock l{m_configs_mx};
154 std::map<std::string, visionx::imrec::Status> statuses;
156 if (not m_configs.has_value())
161 for (
auto& [proxy_name, config] : m_configs.value())
163 imrec::Status status;
166 ARMARX_DEBUG <<
"Calling getRecordingStatus on image provider '" << proxy_name <<
"'.";
173 ARMARX_DEBUG <<
"Image provider '" << proxy_name <<
"' offline.";
174 status.type = imrec::State::offline;
175 status.framesBuffered = -1;
176 status.framesWritten = -1;
178 statuses[proxy_name] = status;
186std::map<std::string, visionx::imrecman::StartStopStatus>
192 std::shared_lock l{m_configs_mx};
194 std::map<std::string, visionx::imrecman::StartStopStatus> statuses;
196 if (not m_configs.has_value())
201 std::map<std::string, Ice::AsyncResultPtr> promises;
203 for (
auto& [proxy_name, config] : m_configs.value())
207 ARMARX_DEBUG <<
"Calling stopRecording on image provider '" << proxy_name <<
"'.";
209 ->begin_stopImageRecording();
213 promises[proxy_name] =
nullptr;
217 for (
auto& [proxy_name, promise] : promises)
225 ->end_stopImageRecording(promise);
231 ARMARX_DEBUG <<
"Image provider '" << proxy_name <<
"' offline.";
237 ARMARX_DEBUG <<
"Image provider '" << proxy_name <<
"' offline.";
240 statuses[proxy_name] = status;
251 return "ImageRecordingManager";
266 defs->optional(m_configs_json,
"config_json",
"JSON to initialize default config from.");
Default component property definition container.
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
Ice::ObjectPrx getProxy(long timeoutMs=0, bool waitForScheduler=true) const
Returns the proxy of this object (optionally it waits for the proxy)
void onInitComponent() override
Pure virtual hook for the subclass.
void configureRecordings(const std::map< std::string, imrec::Config > &, const Ice::Current &) override
void onDisconnectComponent() override
Hook for subclass.
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
void configureRecordingsFromJson(const std::string &, const Ice::Current &) override
void onConnectComponent() override
Pure virtual hook for the subclass.
static std::string GetDefaultName()
void onExitComponent() override
Hook for subclass.
std::string getDefaultName() const override
Retrieve default name of component.
#define ARMARX_DEBUG
The logging level for output that is only interesting while debugging.
imrecman::StartStopStatusesMap stopRecordings()
imrec::ConfigMap getConfiguration()
imrec::StatusesMap getRecordingStatuses()
imrecman::StartStopStatusesMap startRecordings()
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.