ConnectWorkItem

class kanzi::connect::ConnectWorkItem

Base class for work items that are passed through the workitem queue.

Subclassed by ConnectionManagerWorkItem, VirtualFileWorkItem

Public Types

enum ExecutionContext

How to execute the work item.

Values:

enumerator RUN_IN_MAIN_THREAD
enumerator RUN_IN_WORKER_THREAD
typedef function<void(void)> Executor

Callback function that is dispatched to work queue and is used to execute work.

enum Priority

Priority levels for the work items.

Values:

enumerator LowPriority

The lowest three are subject to fairness, that is, in certain situations lower priority items are processed even if Lowest priority for work items - gets processed last.

enumerator NormalPriority

Normal/Default priority for work items.

enumerator HighPriority

Highest priority for common work items. Gets processed first.

enumerator SystemPriority

Highest priority for work items.

Gets processed first regardless of fairness.

enum Type

Types for the work items.

Values:

enumerator Base

Base work item to be used for instances for ConnectWorkItem.

enumerator User

For user inherited work item classes, use identifier >= ID_USER.

Public Functions

ConnectWorkItem(int32_t type = Base, int32_t priority = NormalPriority, ExecutionContext executionContext = ExecutionContext::RUN_IN_MAIN_THREAD)

Constructor.

Parameters
  • type – Type of the work item.

  • priority – Priority of the work item.

  • executionContext – In which thread to execute the work item

virtual ~ConnectWorkItem()

virtual destructor for cleanup.

bool deadlineIsEarlierThan(const ConnectWorkItem &workItem) const

Checks whether this object(s) deadline is earlier than with the “other” item.

Parameters

workItem – the other time

Returns

true if this object triggers earlier than the other item.

ConnectWorkItem::Executor getExecutor() const

Retrieve the executor function.

Returns

executor to handle the call.

int32_t getPriority() const

retrieve the work item priority

Returns

numeric priority value.

AbstractServiceSharedPtr getTargetService()

retrieve the service this work item is traveling to.

Returns

service pointer.

int32_t getType() const

retrieve the work item type identifier

Returns

numeric identifier

int64_t handle() const

Returns the handle associated with the object.

Handle is available only with timed objects.

Returns

handle. 0 if not defined.

bool hasExecutor() const

Does the object have custom executor.

Returns

true if executor exists.

bool hasTimeout() const

determines whether object defines a timeout

Returns

true if timeout is defined.

bool invokeWithExecutor()

Dispatches the object with executor.

This function is single shot type and will clear the executor instance once complete.

Returns

true if executor was defined and got invoked.

bool runInWorkerThread() const

Should this work item be run in worker thread or main thread.

Returns

True if worker thread

void setExecutor(ConnectWorkItem::Executor executorFunction)

Setups an executor function to execute the work item.

Function can be created with std::bind.

Parameters

executorFunction – function to be called when it is time to handle the functionality.

void setTargetService(AbstractServiceSharedPtr service)

setups the target service

Parameters

service

void setTimeout(chrono::milliseconds timeout, int64_t handle)

Sets the timeout for the work item.

Timeout means this object will delay first specified amount of milliseconds and will then be delivered.

Parameters
  • timeout – timeout in milliseconds to delay the delivery.

  • handle – unique handle that can be used to refer to object later on.

chrono::milliseconds timeoutUntilDeadline() const

returns the timeout in milliseconds until this object time(s) out.

Returns

the timeout in milliseconds.

chrono::milliseconds timeoutUntilDeadline(chrono::time_point<chrono::steady_clock> &now) const

returns the timeout in milliseconds until this object time(s) out.

Parameters

now – current timestamp if any.

Returns

timeout in milliseconds.

Public Static Functions

static ConnectWorkItemSharedPtr create(ExecutionContext executionContext = ExecutionContext::RUN_IN_MAIN_THREAD)

Creates a default instance of the work item.

Parameters

executionContext – Defines if the work item is to be run in main or worker thread

Returns

newly allocated instance.