32#include <condition_variable>
52 using MessageTranslator = std::function<std::string(
const std::string &messageId,
const std::string &argument)>;
74 [[nodiscard]] std::string
translateMessage(
const std::string &messageId,
const std::string &argument);
82 [[nodiscard]] std::string
runScript(
const std::filesystem::path &script);
118 const std::chrono::duration<uint32_t> &executionInterval,
119 std::shared_ptr<std::condition_variable> stopSignal,
120 std::shared_ptr<std::mutex> mutex,
121 std::shared_ptr<bool> stop,
122 std::unique_ptr<std::condition_variable> signalOnChange,
123 const std::filesystem::path &script,
124 const size_t &outputLengthLimit,
125 std::unique_ptr<std::string> outputTarget
126 ) : refreshInterval_{executionInterval},
127 stopSignal_{std::move(stopSignal)},
128 mutex_{std::move(mutex)},
129 stop_{std::move(stop)},
130 signalToMain_{std::move(signalOnChange)},
132 outputLengthLimit_{outputLengthLimit},
133 outputString_{std::move(outputTarget)} {};
154 std::chrono::duration<uint32_t> refreshInterval_;
156 std::shared_ptr<std::condition_variable> stopSignal_;
158 std::shared_ptr<std::mutex> mutex_;
160 std::shared_ptr<bool> stop_;
162 std::unique_ptr<std::condition_variable> signalToMain_;
164 std::filesystem::path script_;
166 size_t outputLengthLimit_ = 0;
168 std::unique_ptr<std::string> outputString_;
190 std::unique_ptr<std::condition_variable> signalToExecute,
191 std::shared_ptr<std::mutex> mutex,
192 std::shared_ptr<bool> execute,
193 std::shared_ptr<bool> stop,
194 std::unique_ptr<std::condition_variable> signalOnChange,
195 const std::filesystem::path &script,
196 const size_t &outputLengthLimit,
197 std::unique_ptr<std::string> &outputTarget
198 ) : executionSignal_{std::move(signalToExecute)},
199 mutex_{std::move(mutex)},
200 execute_{std::move(execute)},
201 stop_{std::move(stop)},
202 signalToMain_{std::move(signalOnChange)},
204 outputLengthLimit_{outputLengthLimit},
205 outputString_{std::move(outputTarget)} {};
226 std::unique_ptr<std::condition_variable> executionSignal_;
228 std::shared_ptr<std::mutex> mutex_;
230 std::shared_ptr<bool> execute_;
232 std::shared_ptr<bool> stop_;
234 std::unique_ptr<std::condition_variable> signalToMain_;
236 std::filesystem::path script_;
238 size_t outputLengthLimit_ = 0;
240 std::unique_ptr<std::string> outputString_;
SignalModule(SignalModule &&toMove) noexcept=default
Move constructor.
SignalModule & operator=(SignalModule &&toMove) noexcept=default
Move assignment operator.
SignalModule()=default
Default constructor.
SignalModule(std::unique_ptr< std::condition_variable > signalToExecute, std::shared_ptr< std::mutex > mutex, std::shared_ptr< bool > execute, std::shared_ptr< bool > stop, std::unique_ptr< std::condition_variable > signalOnChange, const std::filesystem::path &script, const size_t &outputLengthLimit, std::unique_ptr< std::string > &outputTarget)
Constructor with data.
Definition scriptModules.hpp:189
~SignalModule()=default
Destructor.
TimedModule()=default
Default constructor.
~TimedModule()=default
Destructor.
TimedModule(const std::chrono::duration< uint32_t > &executionInterval, std::shared_ptr< std::condition_variable > stopSignal, std::shared_ptr< std::mutex > mutex, std::shared_ptr< bool > stop, std::unique_ptr< std::condition_variable > signalOnChange, const std::filesystem::path &script, const size_t &outputLengthLimit, std::unique_ptr< std::string > outputTarget)
Constructor with data.
Definition scriptModules.hpp:117
TimedModule(TimedModule &&toMove) noexcept=default
Move constructor.
TimedModule & operator=(TimedModule &&toMove) noexcept=default
Move assignment operator.
std::string translateMessage(const std::string &messageId, const std::string &argument)
Translate a user-facing backend message.
std::function< std::string(const std::string &messageId, const std::string &argument)> MessageTranslator
User-facing message translator hook.
Definition scriptModules.hpp:52
void setMessageTranslator(MessageTranslator translator)
Install the user-facing message translator.
void truncateUtf8(std::string &text, size_t maxCodepoints)
Truncate a UTF-8 string to a codepoint limit, in place.
std::string runScript(const std::filesystem::path &script)
Run a script once.