Logo
C++ Rest SDK
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.
Public Member Functions | Public Attributes | List of all members
pplx::details::_Task_impl< _ReturnType > Struct Template Reference

The implementation of a first-class task. This structure contains the task group used to execute the task function and handles the scheduling. The _Task_impl is created as a shared_ptr member of the the public task class, so its destruction is handled automatically. More...

#include <pplxtasks.h>

Inheritance diagram for pplx::details::_Task_impl< _ReturnType >:

Public Member Functions

  _Task_impl (_CancellationTokenState *_Ct, scheduler_ptr _Scheduler_arg)
 
virtual bool  _CancelAndRunContinuations (bool _SynchronousCancel, bool _UserException, bool _PropagatedFromAncestor, const std::shared_ptr< _ExceptionHolder > &_ExceptionHolder_arg)
  Requests cancellation on the task and schedules continuations if the task can be transitioned to a terminal state. More...
 
void  _FinalizeAndRunContinuations (_ReturnType _Result)
 
bool  _TransitionedToStarted ()
 
bool  _IsDone ()
 
_ReturnType  _GetResult ()
 
- Public Member Functions inherited from pplx::details::_Task_impl_base
  _Task_impl_base (_CancellationTokenState *_PTokenState, scheduler_ptr _Scheduler_arg)
 
task_status  _Wait ()
 
bool  _Cancel (bool _SynchronousCancel)
 
bool  _CancelWithExceptionHolder (const std::shared_ptr< _ExceptionHolder > &_ExHolder, bool _PropagatedFromAncestor)
 
bool  _CancelWithException (const std::exception_ptr &_Exception)
 
void  _RegisterCancellation (std::weak_ptr< _Task_impl_base > _WeakPtr)
 
void  _DeregisterCancellation ()
 
bool  _IsCreated ()
 
bool  _IsStarted ()
 
bool  _IsPendingCancel ()
 
bool  _IsCompleted ()
 
bool  _IsCanceled ()
 
bool  _HasUserException ()
 
const std::shared_ptr< _ExceptionHolder > &  _GetExceptionHolder ()
 
bool  _IsApartmentAware ()
 
void  _SetAsync (bool _Async=true)
 
_TaskCreationCallstack  _GetTaskCreationCallstack ()
 
void  _SetTaskCreationCallstack (const _TaskCreationCallstack &_Callstack)
 
void  _ScheduleTask (_UnrealizedChore_t *_PTaskHandle, _TaskInliningMode_t _InliningMode)
  Helper function to schedule the task on the Task Collection. More...
 
  Function executes a continuation. This function is recorded by a parent task implementation when a continuation is created in order to execute later. More...
 
void  _ScheduleContinuationTask (_ContinuationTaskHandleBase *_PTaskHandle)
 
  Schedule the actual continuation. This will either schedule the function on the continuation task's implementation if the task has completed or append it to a list of functions to execute when the task actually does complete. More...
 
void  _RunTaskContinuations ()
 
scheduler_ptr  _GetScheduler () const
 

Public Attributes

_ResultHolder< _ReturnType >  _M_Result
 
- Public Attributes inherited from pplx::details::_Task_impl_base
volatile _TaskInternalState  _M_TaskState
 
bool  _M_fFromAsync
 
bool  _M_fUnwrappedTask
 
std::shared_ptr< _ExceptionHolder_M_exceptionHolder
 
::pplx::extensibility::critical_section_t  _M_ContinuationsCritSec
 
_CancellationTokenState_M_pTokenState
 
_CancellationTokenRegistration_M_pRegistration
 
_ContinuationList  _M_Continuations
 
::pplx::details::_TaskCollection_t  _M_TaskCollection
 
_TaskCreationCallstack  _M_pTaskCreationCallstack
 
_TaskEventLogger  _M_taskEventLogger
 

Additional Inherited Members

- Public Types inherited from pplx::details::_Task_impl_base
enum   _TaskInternalState {
  _Created, _Started, _PendingCancel, _Completed,
  _Canceled
}
 
typedef _ContinuationTaskHandleBase_ContinuationList
 
- Static Public Member Functions inherited from pplx::details::_Task_impl_base
template<typename _ReturnType , typename _InternalReturnType >
static void  _AsyncInit (const typename _Task_ptr< _ReturnType >::_Type &_OuterTask, const task< _InternalReturnType > &_UnwrappedTask)
 

Detailed Description

template<typename _ReturnType>
struct pplx::details::_Task_impl< _ReturnType >

The implementation of a first-class task. This structure contains the task group used to execute the task function and handles the scheduling. The _Task_impl is created as a shared_ptr member of the the public task class, so its destruction is handled automatically.

Template Parameters
_ReturnType The result type of this task.

Member Function Documentation

template<typename _ReturnType >
virtual bool pplx::details::_Task_impl< _ReturnType >::_CancelAndRunContinuations ( bool  _SynchronousCancel,
bool  _UserException,
bool  _PropagatedFromAncestor,
const std::shared_ptr< _ExceptionHolder > &  _ExHolder 
)
inlinevirtual

Requests cancellation on the task and schedules continuations if the task can be transitioned to a terminal state.

Parameters
_SynchronousCancel Set to true if the cancel takes place as a result of the task body encountering an exception, or because an ancestor or task_completion_event the task was registered with were canceled with an exception. A synchronous cancel is one that assures the task could not be running on a different thread at the time the cancellation is in progress. An asynchronous cancel is one where the thread performing the cancel has no control over the thread that could be executing the task, that is the task could execute concurrently while the cancellation is in progress.
_UserException Whether an exception other than the internal runtime cancellation exceptions caused this cancellation.
_PropagatedFromAncestor Whether this exception came from an ancestor task or a task_completion_event as opposed to an exception that was encountered by the task itself. Only valid when _UserException is set to true.
_ExHolder The exception holder that represents the exception. Only valid when _UserException is set to true.

Implements pplx::details::_Task_impl_base.


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

Generated by   doxygen 1.8.10

AltStyle によって変換されたページ (->オリジナル) /