Kurlyk
Loading...
Searching...
No Matches
kurlyk::SimpleWebSocketWorker Class Reference

Singleton worker that manages asynchronous WebSocket operations. More...

#include <SimpleWebSocketWorker.hpp>

Public Member Functions

std::shared_ptr< SimpleWeb::io_context > get_io_context ()
 Provides access to the I/O context for WebSocket operations.
 
void notify ()
 Notifies the worker to check for pending tasks.
 
void start ()
 Starts the worker thread if it is not already running.
 
void stop ()
 Stops the worker thread and waits for it to finish.
 

Static Public Member Functions

static SimpleWebSocketWorkerget_instance ()
 Get the singleton instance of SimpleWebSocketWorker.
 

Private Types

using work_guard_t = boost::asio::executor_work_guard<boost::asio::io_context::executor_type>
 
using io_context_t = std::shared_ptr<SimpleWeb::io_context>
 

Private Member Functions

 SimpleWebSocketWorker ()
 Private constructor to prevent instantiation.
 
 ~SimpleWebSocketWorker ()
 Private destructor.
 
 SimpleWebSocketWorker (const SimpleWebSocketWorker &)=delete
 
SimpleWebSocketWorkeroperator= (const SimpleWebSocketWorker &)=delete
 

Private Attributes

io_context_t m_io_context
 
work_guard_t m_work_guard
 
std::mutex m_is_worker_started_mutex
 Mutex for controlling worker start.
 
bool m_is_worker_started = false
 Flag indicating if worker is started.
 
std::mutex m_notify_mutex
 Mutex for notifying worker.
 
std::condition_variable m_notify_condition
 Condition variable for notifying worker.
 
bool m_notify = false
 Flag indicating if notification is pending.
 
std::shared_future< void > m_future
 
std::atomic< bool > m_shutdown = ATOMIC_VAR_INIT(false)
 

Detailed Description

Singleton worker that manages asynchronous WebSocket operations.

Definition at line 12 of file SimpleWebSocketWorker.hpp.

Member Typedef Documentation

◆ io_context_t

using kurlyk::SimpleWebSocketWorker::io_context_t = std::shared_ptr<SimpleWeb::io_context>
private

Definition at line 86 of file SimpleWebSocketWorker.hpp.

◆ work_guard_t

using kurlyk::SimpleWebSocketWorker::work_guard_t = boost::asio::executor_work_guard<boost::asio::io_context::executor_type>
private

Definition at line 83 of file SimpleWebSocketWorker.hpp.

Constructor & Destructor Documentation

◆ SimpleWebSocketWorker() [1/2]

kurlyk::SimpleWebSocketWorker::SimpleWebSocketWorker ( )
inlineprivate

Private constructor to prevent instantiation.

Definition at line 101 of file SimpleWebSocketWorker.hpp.

◆ ~SimpleWebSocketWorker()

kurlyk::SimpleWebSocketWorker::~SimpleWebSocketWorker ( )
inlineprivate

Private destructor.

Definition at line 111 of file SimpleWebSocketWorker.hpp.

◆ SimpleWebSocketWorker() [2/2]

kurlyk::SimpleWebSocketWorker::SimpleWebSocketWorker ( const SimpleWebSocketWorker & )
privatedelete

Member Function Documentation

◆ get_instance()

static SimpleWebSocketWorker & kurlyk::SimpleWebSocketWorker::get_instance ( )
inlinestatic

Get the singleton instance of SimpleWebSocketWorker.

Returns
Reference to the singleton instance.

Definition at line 17 of file SimpleWebSocketWorker.hpp.

◆ get_io_context()

std::shared_ptr< SimpleWeb::io_context > kurlyk::SimpleWebSocketWorker::get_io_context ( )
inline

Provides access to the I/O context for WebSocket operations.

Returns
Shared pointer to the I/O context.

Definition at line 24 of file SimpleWebSocketWorker.hpp.

◆ notify()

void kurlyk::SimpleWebSocketWorker::notify ( )
inline

Notifies the worker to check for pending tasks.

Definition at line 29 of file SimpleWebSocketWorker.hpp.

◆ operator=()

SimpleWebSocketWorker & kurlyk::SimpleWebSocketWorker::operator= ( const SimpleWebSocketWorker & )
privatedelete

◆ start()

void kurlyk::SimpleWebSocketWorker::start ( )
inline

Starts the worker thread if it is not already running.

Definition at line 36 of file SimpleWebSocketWorker.hpp.

◆ stop()

void kurlyk::SimpleWebSocketWorker::stop ( )
inline

Stops the worker thread and waits for it to finish.

Definition at line 67 of file SimpleWebSocketWorker.hpp.

Member Data Documentation

◆ m_future

std::shared_future<void> kurlyk::SimpleWebSocketWorker::m_future
private

Definition at line 97 of file SimpleWebSocketWorker.hpp.

◆ m_io_context

io_context_t kurlyk::SimpleWebSocketWorker::m_io_context
private

Definition at line 87 of file SimpleWebSocketWorker.hpp.

◆ m_is_worker_started

bool kurlyk::SimpleWebSocketWorker::m_is_worker_started = false
private

Flag indicating if worker is started.

Definition at line 91 of file SimpleWebSocketWorker.hpp.

◆ m_is_worker_started_mutex

std::mutex kurlyk::SimpleWebSocketWorker::m_is_worker_started_mutex
private

Mutex for controlling worker start.

Definition at line 90 of file SimpleWebSocketWorker.hpp.

◆ m_notify

bool kurlyk::SimpleWebSocketWorker::m_notify = false
private

Flag indicating if notification is pending.

Definition at line 95 of file SimpleWebSocketWorker.hpp.

◆ m_notify_condition

std::condition_variable kurlyk::SimpleWebSocketWorker::m_notify_condition
private

Condition variable for notifying worker.

Definition at line 94 of file SimpleWebSocketWorker.hpp.

◆ m_notify_mutex

std::mutex kurlyk::SimpleWebSocketWorker::m_notify_mutex
private

Mutex for notifying worker.

Definition at line 93 of file SimpleWebSocketWorker.hpp.

◆ m_shutdown

std::atomic<bool> kurlyk::SimpleWebSocketWorker::m_shutdown = ATOMIC_VAR_INIT(false)
private

Definition at line 98 of file SimpleWebSocketWorker.hpp.

◆ m_work_guard

work_guard_t kurlyk::SimpleWebSocketWorker::m_work_guard
private

Definition at line 88 of file SimpleWebSocketWorker.hpp.


The documentation for this class was generated from the following file: