hlcc 2.0.0-beta2+pre1
Loading...
Searching...
No Matches
offsetHandler.hpp
Go to the documentation of this file.
1
9#ifndef HLCC_TELIF_TELIFSIM_OFFSETHANDLER_HPP
10#define HLCC_TELIF_TELIFSIM_OFFSETHANDLER_HPP
11
12#include <mutex>
13
14#include <boost/asio/thread_pool.hpp>
15#include <gtest/gtest_prod.h>
16#include "Ccsinsif.hpp"
17#include "Telifsimif.hpp"
18
19
20namespace hlcc::telifsim {
21
22class DataContext;
23
28 public:
32 OffsetHandler(DataContext& data_ctx);
33
37 virtual ~OffsetHandler();
38
44 void PostOffset(const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
45
46
47 private:
48 FRIEND_TEST(TestOffsetHandler, OffsetArgsAsString);
49 FRIEND_TEST(TestOffsetHandler, DdsExecuteHandshakeWithSequence);
50 FRIEND_TEST(TestOffsetHandler, DdsSendOffsetArgumentsToSequence);
51 FRIEND_TEST(TestOffsetHandler, DdsWaitForSequenceToFinish);
52 FRIEND_TEST(TestOffsetHandler, CheckReceivedMessage);
53 FRIEND_TEST(TestOffsetHandler, DdsPublishOffsetCompleted);
54
60 void ProcessOffset(const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
61
67 void SendOffsetDirectly(const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
68
73 void SendOffsetAsSequenceHeadless(
74 const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
75
80 void SendOffsetAsSequenceGui(
81 const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
82
87 void SendOffsetAsPythonScript(
88 const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
89
95 void SendOffsetAsSequenceDirect(
96 const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
97
103 std::string OffsetArgsAsString(
104 const std::shared_ptr<::ccsinsif::OffsetSkyArgs> &offset_sky_args);
105
111 void DdsExecuteHandshakeWithSequence(uint16_t session_id);
112
119 void DdsSendOffsetArgumentsToSequence(uint16_t session_id, std::string offset_args);
120
126 void DdsWaitForSequenceToFinish(uint16_t session_id);
127
133 void DdsPublishOffsetCompleted(uint16_t session_id);
134
141 bool CheckReceivedMessage(uint16_t session_id, std::string message);
142
143 /* Member variables */
144 DataContext& m_data_ctx; // Reference to data context
145
146 boost::asio::thread_pool m_offset_thread_pool; // Pool of 1 thread for sending offset
147
148 mutable std::recursive_mutex m_mutex; // mutex to guard the execution of async offset
149 // as a sequence execution
150
151 uint16_t m_last_session_id; // We will use this var to store the id of the
152 // last sequence execution session
153 // This way we ensure to use always a different
154 // session id for each execution of a sequence.
155
156 std::vector<std::shared_ptr<telifsimif::SeqMessage>> m_received_msg; // Buffer to messages
157 // received from sequence
158
159};
160
161} // namespace hlcc::telifsim
162
163#endif // HLCC_TELIF_TELIFSIM_OFFSETHANDLER_HPP
Definition: dataContext.hpp:39
Definition: offsetHandler.hpp:27
void PostOffset(const std::shared_ptr<::ccsinsif::OffsetSkyArgs > &offset_sky_args)
Definition: offsetHandler.cpp:51
virtual ~OffsetHandler()
Definition: offsetHandler.cpp:44
Definition: testOffsetHandler.cpp:171
Definition: actionMgr.cpp:31