HLCC Documentation 3.0.0
Loading...
Searching...
No Matches
seqServerFacade.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2020-2025 European Southern Observatory (ESO)
2//
3// SPDX-License-Identifier: LGPL-3.0-only
4
13#ifndef HLCC_TELIF_TELIF_SEQSERVERFACADE_HPP
14#define HLCC_TELIF_TELIF_SEQSERVERFACADE_HPP
15
16#include <string>
17#include <vector>
18#include <atomic>
19#include <thread>
20#include "Telifif.hpp"
21
22namespace hlcc::telif {
26struct ObParams{
27 std::string ob_name;
28 std::string ob_args; // as json
29};
30
32
33 public:
34
42 SeqServerFacade(std::string ip, std::string port, std::string script);
43
48 virtual ~SeqServerFacade();
49
55 bool IsConnected();
56
62 void SetObVariable(std::string var_name, std::string var_value);
63
68 void SkipUserActions();
69
74 void SkipDefaultActions();
75
79 void RunScript();
80
87
93 static std::string GetSeqServerIpPort();
94
102 static std::pair<bool, std::string> RunSeqScript(telifif::SequenceMode seq_mode, std::string script_name, std::optional<ObParams> ob = std::nullopt);
108 static std::string GetHostIp();
109
112
113 private:
114
118 void LoadObScript();
119
132 std::string GetParameterIndex(std::string param_name);
133
147 std::vector<std::string> GetUserActionSteps();
148
163 std::vector<std::string> GetDefaultActionSteps();
164
170 bool Connect();
171
175 void SendCommand(std::string command);
176
180 void Disconnect();
181
183 std::string m_seq_ip; // Sequencer server ip address
184 std::string m_seq_port; // Sequencer server port
185 std::string m_seq_script; // Sequencer script to be loaded
186 int m_conn_status; // Status of connection to seq server (0 = success, -1 = errors.)
187 int m_client_fd; // Client file descriptor
188 std::atomic_bool m_socket_reader_loop; // While is true we will keep reading from the socket
189 std::thread m_socket_reader_thread; // Thread to handle the reading from the socket
190};
191
192} // namespace hlcc::telif
193
194#endif // HLCC_TELIF_TELIF_SEQSERVERFACADE_HPP
SeqServerFacade(const SeqServerFacade &)=delete
static std::string GetSeqServerIpPort()
Definition seqServerFacade.cpp:348
static std::pair< bool, std::string > RunSeqScript(telifif::SequenceMode seq_mode, std::string script_name, std::optional< ObParams > ob=std::nullopt)
Definition seqServerFacade.cpp:442
void SetObVariable(std::string var_name, std::string var_value)
Definition seqServerFacade.cpp:70
void RunScript()
Definition seqServerFacade.cpp:115
static std::string GetHostIp()
Definition seqServerFacade.cpp:406
SeqServerFacade(std::string ip, std::string port, std::string script)
Definition seqServerFacade.cpp:36
void RunScriptInteractive()
Definition seqServerFacade.cpp:123
virtual ~SeqServerFacade()
Definition seqServerFacade.cpp:54
bool IsConnected()
Definition seqServerFacade.cpp:60
void SkipUserActions()
Definition seqServerFacade.cpp:84
void SkipDefaultActions()
Definition seqServerFacade.cpp:100
SeqServerFacade & operator=(const SeqServerFacade &)=delete
Disable copy constructor.
Definition configTest.cpp:22
Definition seqServerFacade.hpp:26
std::string ob_args
Definition seqServerFacade.hpp:28
std::string ob_name
Definition seqServerFacade.hpp:27