OnixS C++ CBOE CFE Binary Order Entry (BOE) Handler  1.11.0
API documentation
SharedFuture< T > Class Template Reference

#include <OnixS/CboeCFE/Trading/BOE/Threading/Future.h>

Public Member Functions

 SharedFuture () ONIXS_BATS_BOE_NOEXCEPT
 
 SharedFuture (const SharedFuture< T > &other) ONIXS_BATS_BOE_NOEXCEPT
 
SharedFuture< T > & operator= (const SharedFuture< T > &other) ONIXS_BATS_BOE_NOEXCEPT
 
Implementation::FutureGetReturn< T >::Type get () const
 
void swap (SharedFuture< T > &other) ONIXS_BATS_BOE_NOEXCEPT
 
template<>
void get () const
 
- Public Member Functions inherited from FutureBase
bool valid () const ONIXS_BATS_BOE_NOEXCEPT
 
ONIXS_CBOE_CFE_BOE_API bool is_ready () const
 
ONIXS_CBOE_CFE_BOE_API bool has_value () const
 
ONIXS_CBOE_CFE_BOE_API bool has_exception () const
 
ONIXS_CBOE_CFE_BOE_API FutureStatus::Enum wait (int timeoutInMs) const
 

Friends

class Implementation::FutureHelper
 

Additional Inherited Members

- Public Types inherited from FutureBase
enum  { InfiniteTimeout = -1 }
 
- Protected Member Functions inherited from FutureBase
 FutureBase ()
 
ONIXS_CBOE_CFE_BOE_API FutureBase (const FutureBase &other) ONIXS_BATS_BOE_NOEXCEPT
 
ONIXS_CBOE_CFE_BOE_API FutureBaseoperator= (const FutureBase &other) ONIXS_BATS_BOE_NOEXCEPT
 
ONIXS_CBOE_CFE_BOE_API FutureBase (const System::FutureSharedState *state) ONIXS_BATS_BOE_NOEXCEPT
 
ONIXS_CBOE_CFE_BOE_API FutureBase (const System::FutureSharedState *state, moving_init_t) ONIXS_BATS_BOE_NOEXCEPT
 
ONIXS_CBOE_CFE_BOE_API ~FutureBase () ONIXS_BATS_BOE_NOEXCEPT
 
ONIXS_CBOE_CFE_BOE_API void swap (FutureBase &other) ONIXS_BATS_BOE_NOEXCEPT
 
ONIXS_CBOE_CFE_BOE_API const void * getValuePtr () const
 
ONIXS_CBOE_CFE_BOE_API void getVoid () const
 

Detailed Description

template<typename T>
class OnixS::CboeCFE::Trading::BOE::Threading::SharedFuture< T >

Represents a future result of an asynchronous operation - a result that will eventually appear in the Future after the processing is complete.

The class template Future provides a mechanism to access the result of asynchronous operations :

  • An asynchronous operation (e.g. created via Promise) can provide a Future object to the creator of that asynchronous operation (e.g. via Promise::get_future).
  • The creator of the asynchronous operation can then use a variety of methods to query, wait for, or extract a value from Future. These methods may block if the asynchronous operation has not yet provided a value.
  • When the asynchronous operation is ready to send a result to the creator, it can do so by modifying shared state (e.g. via Promise::set_value) that is linked to the creator's Future.

Future is the synchronization object constructed around the receiving end of the Promise channel. It allows for the separation of the initiation of an operation and the act of waiting for its result.

Future is copiable and multiple SharedFuture objects may refer to the same shared state.

Unlike std::future, this implementation has an extended API, allowing you to query the state of SharedFuture. The internal implementation is lock-free; therefore, setting and polling states do not lead to blocking of threads and/or switching of an execution context.

Note
Access to the same shared state from multiple threads is safe if each thread does it through its own copy of a SharedFuture object.
See also
http://en.cppreference.com/w/cpp/thread/shared_future .

Definition at line 189 of file Future.h.

Constructor & Destructor Documentation

SharedFuture ( )
inline

Definition at line 192 of file Future.h.

SharedFuture ( const SharedFuture< T > &  other)
inline

Copy constructor.

Definition at line 196 of file Future.h.

Member Function Documentation

Implementation::FutureGetReturn<T>::Type get ( ) const
inline

Returns the result. If the result is not ready, the method will block. When completes, it either returns a value or throws an exception.

This method waits until the Future has a valid result and retrieves it. It effectively calls wait() in order to wait for the result.

Exceptions
Ifan exception was stored in the shared state referenced by this Future (e.g. via a call to Promise::set_exception()) then that exception will be thrown.

Definition at line 225 of file Future.h.

void get ( ) const
inline

Definition at line 250 of file Future.h.

SharedFuture<T>& operator= ( const SharedFuture< T > &  other)
inline

Copy assignment.

Definition at line 200 of file Future.h.

void swap ( SharedFuture< T > &  other)
inline

swaps two SharedFuture objects

Definition at line 231 of file Future.h.

Friends And Related Function Documentation

friend class Implementation::FutureHelper
friend

Definition at line 246 of file Future.h.


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