File size: 2,297 Bytes
cc372ac |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
//
// SPDX-FileCopyrightText: Hadad <hadad@linuxmail.org>
// SPDX-License-Identifier: Apache-2.0
//
#ifndef POCKET_TTS_ACCELERATOR_CORE_HPP
#define POCKET_TTS_ACCELERATOR_CORE_HPP
#include "audio_processor.hpp"
#include "ipc_handler.hpp"
#include "memory_pool.hpp"
#include "thread_pool.hpp"
#include <atomic>
#include <memory>
#include <string>
namespace pocket_tts_accelerator {
struct AcceleratorConfiguration {
std::size_t number_of_worker_threads;
std::size_t memory_pool_size_bytes;
std::string ipc_socket_path;
bool enable_verbose_logging;
};
class AcceleratorCore {
public:
explicit AcceleratorCore(const AcceleratorConfiguration& configuration);
~AcceleratorCore();
AcceleratorCore(const AcceleratorCore&) = delete;
AcceleratorCore& operator=(const AcceleratorCore&) = delete;
bool initialize();
void run();
void shutdown();
bool is_running() const;
std::string get_status_string() const;
static AcceleratorConfiguration get_default_configuration();
private:
void register_all_command_handlers();
void setup_signal_handlers();
std::vector<std::uint8_t> handle_ping_command(const std::vector<std::uint8_t>& payload);
std::vector<std::uint8_t> handle_process_audio_command(const std::vector<std::uint8_t>& payload);
std::vector<std::uint8_t> handle_convert_to_mono_command(const std::vector<std::uint8_t>& payload);
std::vector<std::uint8_t> handle_convert_to_pcm_command(const std::vector<std::uint8_t>& payload);
std::vector<std::uint8_t> handle_resample_audio_command(const std::vector<std::uint8_t>& payload);
std::vector<std::uint8_t> handle_get_memory_stats_command(const std::vector<std::uint8_t>& payload);
std::vector<std::uint8_t> handle_clear_memory_pool_command(const std::vector<std::uint8_t>& payload);
std::vector<std::uint8_t> handle_shutdown_command(const std::vector<std::uint8_t>& payload);
void log_message(const std::string& message) const;
AcceleratorConfiguration config;
std::unique_ptr<MemoryPool> memory_pool;
std::unique_ptr<ThreadPool> thread_pool;
std::unique_ptr<AudioProcessor> audio_processor;
std::unique_ptr<IpcHandler> ipc_handler;
std::atomic<bool> is_initialized;
std::atomic<bool> should_shutdown;
};
}
#endif |