Kanzi 4.1.0
kanzi::SuspensionManager Class Reference

Manages application suspension on POSIX platforms. More...

#include <kanzi/platform/platform/suspension/win32/suspension_manager.hpp>

Public Member Functions

KZ_NO_DISCARD bool needsPolling () const
 Checks if the platform requires polling instead of suspension.
 
KZ_NO_DISCARD bool needsPolling () const
 Checks if the platform requires polling instead of suspension.
 
SuspensionManageroperator= (const SuspensionManager &)=delete
 Copy assignment operator.
 
SuspensionManageroperator= (const SuspensionManager &)=delete
 Copy assignment operator.
 
SuspensionManageroperator= (SuspensionManager &&) noexcept=delete
 Move assignment operator.
 
SuspensionManageroperator= (SuspensionManager &&) noexcept=delete
 Move assignment operator.
 
void setInputEvent (NativeEventHandle handle)
 Sets the native event handle for input events.
 
void setInputEvent (NativeEventHandle handle)
 Sets the native event handle for input events.
 
void setTaskDispatcherEvent (NativeEventHandle handle)
 Sets the native event handle for the task dispatcher.
 
void setTaskDispatcherEvent (NativeEventHandle handle)
 Sets the native event handle for the task dispatcher.
 
void suspend (optional< chrono::nanoseconds > timeout)
 Suspends execution until an event occurs or timeout expires.
 
void suspend (optional< chrono::nanoseconds > timeout)
 Suspends execution until an event occurs or timeout expires.
 
 SuspensionManager ()=default
 Constructor.
 
 SuspensionManager ()=default
 Constructor.
 
 SuspensionManager (const SuspensionManager &)=delete
 Copy constructor.
 
 SuspensionManager (const SuspensionManager &)=delete
 Copy constructor.
 
 SuspensionManager (SuspensionManager &&) noexcept=delete
 Move constructor.
 
 SuspensionManager (SuspensionManager &&) noexcept=delete
 Move constructor.
 
 ~SuspensionManager ()=default
 Destructor.
 
 ~SuspensionManager ()=default
 Destructor.
 

Detailed Description

Manages application suspension on POSIX platforms.

Manages application suspension on the Win32 platform.

Suspension waits for one of these wake-up conditions:

  • An optional timeout expires
  • The task dispatcher signals pending work from another thread
  • Input becomes available

This POSIX implementation uses posix::poll() on native file descriptors associated with the configured event handles.

Since
Kanzi 4.1.0

Suspension waits for one of these wake-up conditions:

  • An optional timeout expires
  • The task dispatcher signals pending work from another thread
  • Input becomes available

This Win32 implementation uses MsgWaitForMultipleObjectsEx to wait for task dispatcher events and window messages. Unlike POSIX platforms, Win32 does not use a separate input event handle as window messages are monitored automatically.

Since
Kanzi 4.1.0

Constructor & Destructor Documentation

◆ SuspensionManager() [1/6]

kanzi::SuspensionManager::SuspensionManager ( )
explicitdefault

Constructor.

◆ ~SuspensionManager() [1/2]

kanzi::SuspensionManager::~SuspensionManager ( )
default

Destructor.

◆ SuspensionManager() [2/6]

kanzi::SuspensionManager::SuspensionManager ( const SuspensionManager & )
delete

Copy constructor.

◆ SuspensionManager() [3/6]

kanzi::SuspensionManager::SuspensionManager ( SuspensionManager && )
deletenoexcept

Move constructor.

◆ SuspensionManager() [4/6]

kanzi::SuspensionManager::SuspensionManager ( )
explicitdefault

Constructor.

◆ ~SuspensionManager() [2/2]

kanzi::SuspensionManager::~SuspensionManager ( )
default

Destructor.

◆ SuspensionManager() [5/6]

kanzi::SuspensionManager::SuspensionManager ( const SuspensionManager & )
delete

Copy constructor.

◆ SuspensionManager() [6/6]

kanzi::SuspensionManager::SuspensionManager ( SuspensionManager && )
deletenoexcept

Move constructor.

Member Function Documentation

◆ operator=() [1/4]

SuspensionManager & kanzi::SuspensionManager::operator= ( const SuspensionManager & )
delete

Copy assignment operator.

◆ operator=() [2/4]

SuspensionManager & kanzi::SuspensionManager::operator= ( SuspensionManager && )
deletenoexcept

Move assignment operator.

◆ setTaskDispatcherEvent() [1/2]

void kanzi::SuspensionManager::setTaskDispatcherEvent ( NativeEventHandle handle)

Sets the native event handle for the task dispatcher.

Parameters
handleThe native event handle to wait on for pending tasks.

◆ setInputEvent() [1/2]

void kanzi::SuspensionManager::setInputEvent ( NativeEventHandle handle)

Sets the native event handle for input events.

Parameters
handleThe native event handle to wait on for input.

◆ needsPolling() [1/2]

KZ_NO_DISCARD bool kanzi::SuspensionManager::needsPolling ( ) const

Checks if the platform requires polling instead of suspension.

Returns
When at least one event source needs polling, true.

◆ suspend() [1/2]

void kanzi::SuspensionManager::suspend ( optional< chrono::nanoseconds > timeout)

Suspends execution until an event occurs or timeout expires.

Parameters
timeoutOptional timeout duration in nanoseconds. If not set, waits indefinitely until an event occurs.
Precondition
needsPolling() must return false to use suspension.
The task dispatcher event handle must be set before suspending.
See also
setTaskDispatcherEvent(), setInputEvent(), needsPolling()

◆ operator=() [3/4]

SuspensionManager & kanzi::SuspensionManager::operator= ( const SuspensionManager & )
delete

Copy assignment operator.

◆ operator=() [4/4]

SuspensionManager & kanzi::SuspensionManager::operator= ( SuspensionManager && )
deletenoexcept

Move assignment operator.

◆ setTaskDispatcherEvent() [2/2]

void kanzi::SuspensionManager::setTaskDispatcherEvent ( NativeEventHandle handle)

Sets the native event handle for the task dispatcher.

Parameters
handleThe native event handle to wait on for pending tasks.

◆ setInputEvent() [2/2]

void kanzi::SuspensionManager::setInputEvent ( NativeEventHandle handle)

Sets the native event handle for input events.

Parameters
handleThe native event handle to wait on for input (not used on Win32).

◆ needsPolling() [2/2]

KZ_NO_DISCARD bool kanzi::SuspensionManager::needsPolling ( ) const

Checks if the platform requires polling instead of suspension.

Returns
Always returns false on Win32 as suspension is always available.

◆ suspend() [2/2]

void kanzi::SuspensionManager::suspend ( optional< chrono::nanoseconds > timeout)

Suspends execution until an event occurs or timeout expires.

Parameters
timeoutOptional timeout duration in nanoseconds. If not set, waits indefinitely until an event occurs.
Precondition
needsPolling() must return false to use suspension.
The task dispatcher event handle must be set before suspending.
See also
setTaskDispatcherEvent(), setInputEvent(), needsPolling()

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