Resilient
Public Member Functions | List of all members
resilient::BlockingFixedConcurrentExecutionsStrategy Class Reference

Allow at most a fixed amount of executions to happen at the same time. More...

#include <blockingfixedconcurrentexecutionsstrategy.hpp>

Inheritance diagram for resilient::BlockingFixedConcurrentExecutionsStrategy:
[legend]

Public Member Functions

 BlockingFixedConcurrentExecutionsStrategy (unsigned long maxConcurrentExecutions, std::chrono::microseconds maxWaitTime)
 Construct a new BlockingFixedConcurrentExecutionsStrategy object. More...
 
virtual Variant< MaxConcurrentPermit, PermitAcquireTimeoutacquire () override
 Acquire a single permit to execute a request. More...
 
virtual void release (MaxConcurrentPermit) override
 Release a permit that was previously acquired. More...
 

Detailed Description

Allow at most a fixed amount of executions to happen at the same time.

If less then the fixed amount of executions is happening concurrently the strategy allows immediately to execute. If the limit has been reached then it waits for one of the current executions to terminate up to a timeout, after which it returns an error.

Constructor & Destructor Documentation

resilient::BlockingFixedConcurrentExecutionsStrategy::BlockingFixedConcurrentExecutionsStrategy ( unsigned long  maxConcurrentExecutions,
std::chrono::microseconds  maxWaitTime 
)
inline

Construct a new BlockingFixedConcurrentExecutionsStrategy object.

Parameters
maxConcurrentExecutionsThe maximum number of concurrent execution
maxWaitTimeHow long to wait to be allowed to run before returning an error.

Member Function Documentation

virtual Variant<MaxConcurrentPermit, PermitAcquireTimeout> resilient::BlockingFixedConcurrentExecutionsStrategy::acquire ( )
inlineoverridevirtual

Acquire a single permit to execute a request.

acquire() is called before invoking the function to wait for a permit. This call may block.

Returns
Either return a permit or an error. If a permit is returned release() is called with the permit.

Implements resilient::IRateLimiterStrategy< MaxConcurrentPermit, PermitAcquireTimeout >.

virtual void resilient::BlockingFixedConcurrentExecutionsStrategy::release ( MaxConcurrentPermit  )
inlineoverridevirtual

Release a permit that was previously acquired.

release() is called after the invoked function returned or throwed.

Parameters
permit_typeThe permit returned by acquire().

Implements resilient::IRateLimiterStrategy< MaxConcurrentPermit, PermitAcquireTimeout >.


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