Kanzi 4.1.0
kanzi::PatchHandler Class Reference

Default patch handler. More...

#include <kanzi/kza2kzb/patch_handler.hpp>

Inheritance diagram for kanzi::PatchHandler:
[legend]

Classes

struct  KzbPatch
 Applied via patchProject(). More...
 
struct  ProcessedState
 Thread state for processed patches. More...
 
struct  PropertyPatch
 Applied via applyPropertyPatch(). More...
 
struct  ThreadState
 Thread state for handling incoming patches. More...
 

Public Types

using IncomingPatch
 Incoming patch — raw KZA/property-patch bytes.
 
using ProcessedPatch
 Processed patch ready to apply on the main loop.
 

Public Member Functions

 ~PatchHandler () override
 Destructor.
 
- Public Member Functions inherited from kanzi::IPatchHandler
 IPatchHandler ()=default
 Default constructor.
 
 IPatchHandler (const IPatchHandler &)=delete
 Deleted copy constructor.
 
 IPatchHandler (IPatchHandler &&)=delete
 Deleted move constructor.
 
IPatchHandleroperator= (const IPatchHandler &)=delete
 Deleted copy operator.
 
IPatchHandleroperator= (IPatchHandler &&)=delete
 Deleted move operator.
 
virtual ~IPatchHandler ()=default
 Virtual destructor.
 

Static Public Member Functions

static IPatchHandlerPtr create (Application &application)
 Creates a new patch handler of this type and assigns to the singleton.
 
- Static Public Member Functions inherited from kanzi::IPatchHandler
static void handlePatch (span< const byte > data)
 Applies an incoming patch.
 
static void handlePatch (vector< byte > &&data)
 Applies an incoming patch.
 

Protected Member Functions

void handlePatchInternal (vector< byte > data)
 Internal patch handling.
 
void handlePatchOverride (span< const byte > data) override
 IPatchHandler::handlePatchOverride() implementation.
 
void handlePatchOverride (vector< byte > &&data) override
 IPatchHandler::handlePatchOverride() implementation.
 
void mainLoopTask (chrono::nanoseconds diffTime)
 Patch task for main loop scheduler.
 
 PatchHandler (Application &application)
 Constructor.
 
void threadFunction ()
 Thread function for generating the actual patches.
 

Protected Attributes

Applicationm_application
 Application attached to.
 
condition_variable m_cond
 Conditional variable for sleeping on the conversion thread.
 
detail::Synchronized< ProcessedStatem_processedState
 Synchronized processed patches state.
 
string m_startupPrefabUrl
 Startup prefab URL. Set on the first patch.
 
MainLoopTaskToken m_taskToken
 Token for the patch handling main loop task.
 
thread m_thread
 Thread for processing the patches.
 
detail::Synchronized< ThreadStatem_threadState
 Synchronized thread state.
 

Additional Inherited Members

- Static Protected Member Functions inherited from kanzi::IPatchHandler
static void setPatchHandler (IPatchHandler *patchHandler)
 Sets the patch handler.
 
- Static Protected Attributes inherited from kanzi::IPatchHandler
static IPatchHandlers_patchHandler
 Static singleton (non-owning).
 

Detailed Description

Default patch handler.

Allows registration per header type. Supports both multi-threaded or single-threaded operation depending on feature flags.

Since
Kanzi 4.1.0

Member Typedef Documentation

◆ IncomingPatch

Incoming patch — raw KZA/property-patch bytes.

◆ ProcessedPatch

Processed patch ready to apply on the main loop.

Constructor & Destructor Documentation

◆ ~PatchHandler()

kanzi::PatchHandler::~PatchHandler ( )
override

Destructor.

◆ PatchHandler()

kanzi::PatchHandler::PatchHandler ( Application & application)
explicitprotected

Constructor.

Parameters
applicationApplication for the patch handling task.

Member Function Documentation

◆ create()

static IPatchHandlerPtr kanzi::PatchHandler::create ( Application & application)
inlinestatic

Creates a new patch handler of this type and assigns to the singleton.

Returns a reference to the handler created.

Parameters
applicationApplication for the patch handling task.

◆ handlePatchOverride() [1/2]

void kanzi::PatchHandler::handlePatchOverride ( span< const byte > data)
overrideprotectedvirtual

◆ handlePatchOverride() [2/2]

void kanzi::PatchHandler::handlePatchOverride ( vector< byte > && data)
overrideprotectedvirtual

◆ handlePatchInternal()

void kanzi::PatchHandler::handlePatchInternal ( vector< byte > data)
protected

Internal patch handling.

Parameters
dataMovable data.

◆ mainLoopTask()

void kanzi::PatchHandler::mainLoopTask ( chrono::nanoseconds diffTime)
protected

Patch task for main loop scheduler.

Parameters
diffTimeTime since last iteration.

◆ threadFunction()

void kanzi::PatchHandler::threadFunction ( )
protected

Thread function for generating the actual patches.

Member Data Documentation

◆ m_application

Application& kanzi::PatchHandler::m_application
protected

Application attached to.

◆ m_taskToken

MainLoopTaskToken kanzi::PatchHandler::m_taskToken
protected

Token for the patch handling main loop task.

◆ m_thread

thread kanzi::PatchHandler::m_thread
protected

Thread for processing the patches.

◆ m_cond

condition_variable kanzi::PatchHandler::m_cond
protected

Conditional variable for sleeping on the conversion thread.

◆ m_threadState

detail::Synchronized<ThreadState> kanzi::PatchHandler::m_threadState
protected

Synchronized thread state.

◆ m_processedState

detail::Synchronized<ProcessedState> kanzi::PatchHandler::m_processedState
protected

Synchronized processed patches state.

◆ m_startupPrefabUrl

string kanzi::PatchHandler::m_startupPrefabUrl
protected

Startup prefab URL. Set on the first patch.


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