FluxioExecutor.h
Go to the documentation of this file.
1#pragma once
2
3#include <experimental/memory>
4#include <list>
5#include <map>
6#include <optional>
7#include <shared_mutex>
8#include <string>
9#include <vector>
10
16
18
19namespace armarx::skills
20{
22 {
23 public:
24 virtual ~FluxioExecutor(){};
25 // Copy constructor and assignment operator would be implicitly deleted because of the mutexes
26 // this is just to make it explicit for better error messages O_o
29
30 FluxioExecutor(const std::string& id, bool native) : id(id), native(native){};
31 virtual void run(const std::string executorName,
34 virtual void abort() {};
36 virtual armarx::aron::data::VariantPtr getPossibleInputCopy(const std::string nodeId,
37 const std::string parameterId);
38
39 virtual std::optional<std::vector<skills::FluxioSkillStatusUpdate>> getStatusUpdate();
40
41 std::optional<skills::FluxioSkillStatusUpdate> getStatus() const;
42
45 const FluxioParameter& parameter) const;
46
47 const std::string id;
48 const bool native;
49
50 protected:
51 std::optional<std::string> executorName = std::nullopt;
52
53 std::list<skills::FluxioSkillStatusUpdate> statusUpdates;
54 std::shared_mutex statusUpdatesMutex;
55
57 std::shared_mutex resultMutex;
58
59 std::map<std::string, armarx::aron::data::DictPtr> possibleInputs = {};
60 std::shared_mutex possibleInputsMutex;
61
62 std::optional<skills::FluxioSkillStatusUpdate> status = std::nullopt;
63 std::shared_mutex statusMutex;
64 virtual void setStatus(skills::SkillStatus status, const std::string& nodeId = "noId");
65 };
66} // namespace armarx::skills
FluxioExecutor(const FluxioExecutor &)=delete
armarx::aron::data::DictPtr result
armarx::aron::data::VariantPtr findParameterValue(const std::experimental::observer_ptr< const FluxioProfile > profilePtr, const FluxioParameter &parameter) const
virtual armarx::aron::data::VariantPtr getPossibleInputCopy(const std::string nodeId, const std::string parameterId)
std::optional< skills::FluxioSkillStatusUpdate > status
std::optional< skills::FluxioSkillStatusUpdate > getStatus() const
virtual armarx::aron::data::DictPtr getResultsCopy()
std::list< skills::FluxioSkillStatusUpdate > statusUpdates
FluxioExecutor(const std::string &id, bool native)
std::shared_mutex statusUpdatesMutex
virtual void run(const std::string executorName, armarx::aron::data::DictPtr parameters, const std::experimental::observer_ptr< const FluxioProfile > profilePtr)
std::map< std::string, armarx::aron::data::DictPtr > possibleInputs
std::optional< std::string > executorName
virtual void setStatus(skills::SkillStatus status, const std::string &nodeId="noId")
FluxioExecutor & operator=(const FluxioExecutor &)=delete
std::shared_mutex possibleInputsMutex
virtual std::optional< std::vector< skills::FluxioSkillStatusUpdate > > getStatusUpdate()
std::shared_ptr< Dict > DictPtr
Definition Dict.h:42
std::shared_ptr< Variant > VariantPtr
This file is part of ArmarX.