9 #ifndef FAIR_MQ_SDK_DDSSESSION_H
10 #define FAIR_MQ_SDK_DDSSESSION_H
12 #include <fairmq/sdk/DDSEnvironment.h>
13 #include <fairmq/sdk/DDSInfo.h>
14 #include <fairmq/sdk/DDSTask.h>
16 #include <boost/filesystem.hpp>
27 namespace fair::mq::sdk
34 enum class DDSRMSPlugin
39 auto operator<<(std::ostream& os, DDSRMSPlugin plugin) -> std::ostream&;
40 auto operator>>(std::istream& is, DDSRMSPlugin& plugin) -> std::istream&;
48 using Id = std::uint64_t;
58 using Id = std::string;
59 using Quantity = std::uint32_t;
60 using Path = boost::filesystem::path;
68 explicit DDSSession(std::shared_ptr<dds::tools_api::CSession> nativeSession,
DDSEnv env = {});
71 auto GetId() const -> Id;
72 auto GetRMSPlugin() const -> DDSRMSPlugin;
73 auto SetRMSPlugin(DDSRMSPlugin) ->
void;
74 auto GetRMSConfig() const -> Path;
75 auto SetRMSConfig(Path) const ->
void;
76 auto IsStoppedOnDestruction() const ->
bool;
77 auto StopOnDestruction(
bool stop = true) ->
void;
78 auto IsRunning() const ->
bool;
79 auto SubmitAgents(Quantity agents) ->
void;
83 Quantity executing = 0;
85 auto RequestAgentCount() -> AgentCount;
86 auto RequestAgentInfo() -> std::vector<DDSAgent>;
87 auto RequestTaskInfo() -> std::vector<DDSTask>;
90 std::string activeTopologyName;
93 auto WaitForIdleAgents(Quantity) -> void;
94 auto WaitForOnlyIdleAgents() -> void;
95 auto WaitForExecutingAgents(Quantity) -> void;
96 auto ActivateTopology(
const Path& topoFile) -> void;
100 void StartDDSService();
101 void SubscribeToCommands(std::function<
void(
const std::string& msg,
const std::string& condition, uint64_t senderId)>);
102 void UnsubscribeFromCommands();
103 void SendCommand(
const std::string&,
const std::string& =
"");
104 void SendCommand(
const std::string&, DDSChannel::Id);
105 auto GetTaskId(DDSChannel::Id)
const -> DDSTask::Id;
107 friend auto operator<<(std::ostream& os,
const DDSSession& session) -> std::ostream&;
111 std::shared_ptr<Impl> fImpl;