HLCC Documentation 2.2.0
Loading...
Searching...
No Matches
offsetHandler.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_OFFSETHANDLER_HPP
14#define HLCC_TELIF_TELIF_OFFSETHANDLER_HPP
15
16#include <mutex>
17
18#include <boost/asio/thread_pool.hpp>
19#include <gtest/gtest_prod.h>
20#include "Ccsinsif.hpp"
21#include "Telifif.hpp"
22#include "telif/logger.hpp"
24#include <Eltpkif.hpp>
25
26namespace hlcc::telif {
27
28class DataContext;
29
34 public:
38 OffsetHandler(DataContext& data_ctx);
39
43 virtual ~OffsetHandler();
44
51 void PostOffset(const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args, std::shared_ptr<elt::mal::promise<std::string>> prom_resp);
52
53
54 private:
55 FRIEND_TEST(TestOffsetHandler, OffsetArgsAsString);
56 FRIEND_TEST(TestOffsetHandler, DdsExecuteHandshakeWithSequence);
57 FRIEND_TEST(TestOffsetHandler, DdsSendOffsetArgumentsToSequence);
58 FRIEND_TEST(TestOffsetHandler, DdsWaitForSequenceToFinish);
59 FRIEND_TEST(TestOffsetHandler, CheckReceivedMessage);
60 FRIEND_TEST(TestOffsetHandler, DdsPublishOffsetCompleted);
61
68 void ProcessOffset(const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args, std::shared_ptr<elt::mal::promise<std::string>> prom_resp);
69
75 void SendOffsetDirectly(const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
76
81 void SendOffsetAsSequenceHeadless(
82 const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
83
88 void SendOffsetAsSequenceGui(
89 const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
90
95 void SendOffsetAsPythonScript(
96 const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
97
103 void SendOffsetAsSequenceDirect(
104 const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
105
111 std::string OffsetArgsAsString(
112 const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
113
119 void DdsExecuteHandshakeWithSequence(uint16_t session_id);
120
127 void DdsSendOffsetArgumentsToSequence(uint16_t session_id, std::string offset_args);
128
134 void DdsWaitForSequenceToFinish(uint16_t session_id);
135
141 void DdsPublishOffsetCompleted(uint16_t session_id);
142
149 bool CheckReceivedMessage(uint16_t session_id, std::string message);
150
151 /* Member variables */
152 DataContext& m_data_ctx; // Reference to data context
153
154 boost::asio::thread_pool m_offset_thread_pool; // Pool of 1 thread for sending offset
155
156 mutable std::recursive_mutex m_mutex; // mutex to guard the execution of async offset
157 // as a sequence execution
158
159 uint16_t m_last_session_id; // We will use this var to store the id of the
160 // last sequence execution session
161 // This way we ensure to use always a different
162 // session id for each execution of a sequence.
163
164 std::vector<std::shared_ptr<telifif::SeqMessage>> m_received_msg; // Buffer to messages
165 // received from sequence
166
168
169};
170
171} // namespace hlcc::telif
172
173#endif // HLCC_TELIF_TELIF_OFFSETHANDLER_HPP
Default logger name.
Definition requestor.hpp:36
Definition dataContext.hpp:41
Definition offsetHandler.hpp:33
OffsetHandler(DataContext &data_ctx)
Definition offsetHandler.cpp:40
virtual ~OffsetHandler()
Definition offsetHandler.cpp:48
void PostOffset(const std::shared_ptr<::ccsinsif::OffsetSkyArgs > &offset_sky_args, std::shared_ptr< elt::mal::promise< std::string > > prom_resp)
Definition offsetHandler.cpp:55
Definition testOffsetHandler.cpp:188
Definition configTest.cpp:22
Requestor class header file.