30#include <SimoxUtility/json.h>
42 if (not m_configs_json.empty())
44 std::map<std::string, imrec::Config> configs = nlohmann::json::parse(m_configs_json);
66 const std::map<std::string, imrec::Config>& configs,
69 std::unique_lock l{m_configs_mx};
71 if (not configs.empty())
83 const Ice::Current&
c)
85 const std::map<std::string, imrec::Config>& configs = nlohmann::json::parse(configs_json);
89std::map<std::string, visionx::imrec::Config>
92 std::shared_lock l{m_configs_mx};
94 if (not m_configs.has_value())
99 return m_configs.value();
105 std::shared_lock l{m_configs_mx};
106 return m_configs.has_value();
109std::map<std::string, visionx::imrecman::StartStopStatus>
115 std::shared_lock l{m_configs_mx};
117 std::map<std::string, visionx::imrecman::StartStopStatus> statuses;
119 if (not m_configs.has_value())
124 for (
auto [proxy_name, config] : m_configs.value())
129 ARMARX_DEBUG <<
"Calling startRecording on image provider '" << proxy_name <<
"'.";
131 ->startImageRecording(config);
137 ARMARX_DEBUG <<
"Image provider '" << proxy_name <<
"' offline.";
140 statuses[proxy_name] = status;
148std::map<std::string, visionx::imrec::Status>
154 std::shared_lock l{m_configs_mx};
156 std::map<std::string, visionx::imrec::Status> statuses;
158 if (not m_configs.has_value())
163 for (
auto& [proxy_name, config] : m_configs.value())
165 imrec::Status status;
168 ARMARX_DEBUG <<
"Calling getRecordingStatus on image provider '" << proxy_name <<
"'.";
175 ARMARX_DEBUG <<
"Image provider '" << proxy_name <<
"' offline.";
176 status.type = imrec::State::offline;
177 status.framesBuffered = -1;
178 status.framesWritten = -1;
180 statuses[proxy_name] = status;
188std::map<std::string, visionx::imrecman::StartStopStatus>
194 std::shared_lock l{m_configs_mx};
196 std::map<std::string, visionx::imrecman::StartStopStatus> statuses;
198 if (not m_configs.has_value())
203 std::map<std::string, Ice::AsyncResultPtr> promises;
205 for (
auto& [proxy_name, config] : m_configs.value())
209 ARMARX_DEBUG <<
"Calling stopRecording on image provider '" << proxy_name <<
"'.";
211 ->begin_stopImageRecording();
215 promises[proxy_name] =
nullptr;
219 for (
auto& [proxy_name, promise] : promises)
227 ->end_stopImageRecording(promise);
233 ARMARX_DEBUG <<
"Image provider '" << proxy_name <<
"' offline.";
239 ARMARX_DEBUG <<
"Image provider '" << proxy_name <<
"' offline.";
242 statuses[proxy_name] = status;
253 return "ImageRecordingManager";
268 defs->optional(m_configs_json,
"config_json",
"JSON to initialize default config from.");
#define ARMARX_REGISTER_COMPONENT_EXECUTABLE(ComponentT, applicationName)
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.