FluxioLoopExecutor.h
Go to the documentation of this file.
1#pragma once
2
3#include <experimental/memory>
4#include <optional>
5#include <shared_mutex>
6#include <string>
7
11
12#include "../FluxioSkill.h"
14#include "../SkillExecutionID.h"
15#include "FluxioExecutor.h"
16
17namespace armarx::skills
18{
20 {
21 public:
23 const std::string& id,
24 const skills::FluxioSkill& skill,
25 bool isRetry,
28 const std::string& skillId,
29 const std::string& profileId,
30 const std::string& executorName,
31 armarx::aron::data::DictPtr parameters)>&& executeFluxioSkillFunc);
32
33 void run(std::string executorName,
36 void abort() override;
37 void abortSubExecutions();
38 std::optional<std::vector<skills::FluxioSkillStatusUpdate>> getStatusUpdate() override;
39 std::optional<skills::FluxioSkillStatusUpdate> getSlottedStatus();
40 std::optional<std::string> slottedExecutionId = std::nullopt;
41
42 private:
43 std::optional<FluxioSkillStatusUpdate>
44 executeSlottedSkill(const std::string& profileId,
45 const std::string& executorName,
46 armarx::aron::data::DictPtr& parameters);
47
48 const std::function<skills::Result<std::experimental::observer_ptr<FluxioExecutor>,
50 const std::string& skillId,
51 const std::string& profileId,
52 const std::string& executorName,
54 executeFluxioSkill;
55
56 std::optional<skills::SkillExecutionID> executionId = std::nullopt;
57 const skills::FluxioSkill& skill;
58 std::map<std::string, std::experimental::observer_ptr<FluxioExecutor>>
59 subExecutionsMap; // key is node id
60 std::shared_mutex subExecutionsMapMutex;
61 const armarx::Duration pollingFrequency = armarx::Duration::MilliSeconds(250);
62 const bool isRetry;
63 int loopIndex;
64 };
65} // namespace armarx::skills
static Duration MilliSeconds(std::int64_t milliSeconds)
Constructs a duration in milliseconds.
Definition Duration.cpp:48
Represents a duration.
Definition Duration.h:17
FluxioExecutor(const FluxioExecutor &)=delete
std::optional< std::string > executorName
void run(std::string executorName, armarx::aron::data::DictPtr parameters, std::experimental::observer_ptr< const FluxioProfile > profilePtr) override
std::optional< skills::FluxioSkillStatusUpdate > getSlottedStatus()
FluxioLoopExecutor(const std::string &id, const skills::FluxioSkill &skill, bool isRetry, const std::function< skills::Result< std::experimental::observer_ptr< FluxioExecutor >, skills::error::FluxioException >(const std::string &skillId, const std::string &profileId, const std::string &executorName, armarx::aron::data::DictPtr parameters)> &&executeFluxioSkillFunc)
std::optional< std::string > slottedExecutionId
std::optional< std::vector< skills::FluxioSkillStatusUpdate > > getStatusUpdate() override
A base class for skill exceptions.
std::shared_ptr< Dict > DictPtr
Definition Dict.h:42
This file is part of ArmarX.