CreditFlowControl

class kanzi::connect::CreditFlowControl

Credit based flow control logic for both ends of the link.

Public Functions

explicit CreditFlowControl(int credits = -1, int creditReturnInterval = -1)

Constructor.

Parameters
  • credits: the initial amount of credits available.

  • creditReturnInterval: how often should credits be returned. meaningfull only on client side.

void add(int amount = 1)

Adds a credit, used on both sizes of connection to inform used/received credits.

Parameters
  • amount: the amount of credits bring back.

bool getProductionCredit()

Gets a credit for production, used on producer/sender side.

Return

true if at least one credit was available or credit system disabled.

int getReturnableCredits()

Retrieves the amount of credits that can be returned.

Return

the credit amount. 0 if nothing to return at the moment.

void initialize(int credits, int creditReturnInterval = -1)

Initialize the object with provided credit information.

Parameters
  • credits: the initial amount of credits available.

  • creditReturnInterval: how often should credits be returned. meaningfull only on client side.

bool isEnabled() const

State of credit system.

Return

true if credit system is enabled.

void restart()

Restores the object into state it had after construction/latest initialize() call.

calling uninitialize() will render restarting impossible.

void uninitialize()

Uninitializes the flow control. isEnabled() will return false after calling this method.