QuantumLibrary
Bloomberg::quantum::ICoroFuture< T > Interface Template Reference

Exposes methods to access a coroutine-compatible future. More...

#include <quantum_icoro_future.h>

Inheritance diagram for Bloomberg::quantum::ICoroFuture< T >:
Bloomberg::quantum::ICoroFutureBase Bloomberg::quantum::Future< T >

Public Types

using ContextTag = CoroContextTag
 
using Ptr = std::shared_ptr< ICoroFuture< T > >
 
using Impl = Future< T >
 
- Public Types inherited from Bloomberg::quantum::ICoroFutureBase
using Ptr = std::shared_ptr< ICoroFutureBase >
 

Public Member Functions

template<class V = T>
NonBufferRetType< V > get (ICoroSync::Ptr sync)
 Get the future value. More...
 
template<class V = T>
const NonBufferRetType< V > & getRef (ICoroSync::Ptr sync) const
 Get a reference the future value. More...
 
template<class V = T>
BufferRetType< V > pull (ICoroSync::Ptr sync, bool &isBufferClosed)
 Pull a single value from the future buffer. More...
 
- Public Member Functions inherited from Bloomberg::quantum::ICoroFutureBase
virtual ~ICoroFutureBase ()=default
 Virtual destructor. More...
 
virtual bool valid () const =0
 Determines if this future still has a shared state with the corresponding promise object. More...
 
virtual void wait (ICoroSync::Ptr sync) const =0
 Waits for the future value. More...
 
virtual std::future_status waitFor (ICoroSync::Ptr sync, std::chrono::milliseconds timeMs) const =0
 Waits for the future value up to a maximum 'timeMs' milliseconds. More...
 

Detailed Description

template<class T>
interface Bloomberg::quantum::ICoroFuture< T >

Exposes methods to access a coroutine-compatible future.

Exposes methods to access a non-coroutine future (i.e. accessed from a thread)

Member Typedef Documentation

◆ ContextTag

◆ Impl

template<class T>
using Bloomberg::quantum::ICoroFuture< T >::Impl = Future<T>

◆ Ptr

template<class T>
using Bloomberg::quantum::ICoroFuture< T >::Ptr = std::shared_ptr<ICoroFuture<T> >

Member Function Documentation

◆ get()

template<class T >
template<class V >
NonBufferRetType< V > Bloomberg::quantum::ICoroFuture< T >::get ( ICoroSync::Ptr  sync)

Get the future value.

Parameters
[in]syncPointer to the coroutine synchronization object.
Returns
The future value.
Note
Blocks until the future is ready or until an exception is thrown. Once this function returns, the future becomes invalidated (i.e. cannot be read again)

Implemented in Bloomberg::quantum::Future< T >.

◆ getRef()

template<class T >
template<class V >
const NonBufferRetType< V > & Bloomberg::quantum::ICoroFuture< T >::getRef ( ICoroSync::Ptr  sync) const

Get a reference the future value.

Parameters
[in]syncPointer to the coroutine synchronization object.
Returns
A reference to the future value.
Note
Blocks until the future is ready or until an exception is thrown. Contrary to get(), this function does not invalidate the future and as such may be read again.

Implemented in Bloomberg::quantum::Future< T >.

◆ pull()

template<class T >
template<class V >
BufferRetType< V > Bloomberg::quantum::ICoroFuture< T >::pull ( ICoroSync::Ptr  sync,
bool &  isBufferClosed 
)

Pull a single value from the future buffer.

Template Parameters
BUFRepresents a class of type Buffer.
VThe type of value contained in Buffer.
Parameters
[in]syncPointer to the coroutine synchronization object.
[out]isBufferClosedIndicates if this buffer is closed and no more Pull operations are allowed on it.
Returns
The next value pulled out from the front of the buffer.
Note
Method available for buffered futures only. Blocks until one value is retrieved from the buffer.

Implemented in Bloomberg::quantum::Future< T >.