4#include <system/object.h>
5#include <system/nullable.h>
6#include <system/iequatable.h>
7#include <system/threading/tasks/async.h>
9namespace System {
namespace Runtime {
namespace CompilerServices {
11class ResultValueTaskAwaiter;
13class ConfiguredResultValueTaskAwaitable;
16namespace Threading {
namespace Tasks {
51 return m_task && m_task->get_IsFaulted();
63 return (m_task && m_task->get_IsCompleted()) || m_result.get_HasValue();
70 return m_task && m_task->get_IsCanceled();
80 m_result = m_task->get_Result();
84 return m_result.get_Value();
93 return m_task ? m_task : MakeObject<ResultTask<T>>(m_result.get_Value());
101 return {*
this, continueOnCapturedContext};
108 return *
this == other;
115 return System::ObjectExt::Is<ResultValueTask>(obj) &&
Equals(System::ExplicitCast<ResultValueTask>(obj));
133 if (m_result.get_HasValue() || other.m_result.get_HasValue())
135 return m_result == other.m_result;
138 return m_task == other.m_task;
157namespace Runtime {
namespace CompilerServices {
168 return m_task.get_IsCompleted();
175 m_task.m_task->AddContinuation(continuation);
181 return m_task.get_Result();
195 : m_task(task), m_continueOnCapturedContext(continueOnCapturedContext)
200 auto result = m_task.GetAwaiter();
201 result.continueOnCapturedContext = m_continueOnCapturedContext;
207 bool m_continueOnCapturedContext;
Defines a method that determines the equality of two objects. Objects of this class should only be al...
Definition: iequatable.h:16
Forward declaration.
Definition: nullable.h:75
Base class that enables using methods available for System.Object class in C#. All non-trivial classe...
Definition: object.h:62
Object()
Creates object. Initializes all internal data structures.
Definition: result_task.h:114
Definition: result_value_task.h:161
bool continueOnCapturedContext
Definition: result_value_task.h:184
bool get_IsCompleted() const
Definition: result_value_task.h:166
void OnCompleted(const Action<> &continuation)
Definition: result_value_task.h:171
ResultValueTaskAwaiter(Threading::Tasks::ResultValueTask< T > task)
Definition: result_value_task.h:163
T GetResult() const
Definition: result_value_task.h:179
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
Represents a hybrid task-like type that can wrap either a direct result value or a ResultTask<T>.
Definition: result_value_task.h:25
RTaskPtr< T > AsTask() const
Converts this ResultValueTask to a shared pointer to ResultTask<T>.
Definition: result_value_task.h:91
ResultValueTask()
Constructs an empty, uninitialized ResultValueTask.
Definition: result_value_task.h:33
bool get_IsCompleted() const
Gets a value indicating whether the task has completed.
Definition: result_value_task.h:61
T get_Result() const
Gets the result of the completed task.
Definition: result_value_task.h:76
bool get_IsCanceled() const
Gets a value indicating whether the task completed due to being canceled.
Definition: result_value_task.h:68
Runtime::CompilerServices::ConfiguredResultValueTaskAwaitable< T > ConfigureAwait(bool continueOnCapturedContext) const
Configures an awaiter for this task.
Definition: result_value_task.h:99
ResultValueTask(const T &result)
Constructs a completed ResultValueTask with the specified result.
Definition: result_value_task.h:38
bool Equals(System::SharedPtr< System::Object > obj) override
Determines whether this instance equals another object.
Definition: result_value_task.h:113
bool get_IsCompletedSuccessfully() const
Gets a value indicating whether the task completed successfully.
Definition: result_value_task.h:55
bool operator==(const ResultValueTask &other) const
Equality operator for ResultValueTask.
Definition: result_value_task.h:131
Runtime::CompilerServices::ResultValueTaskAwaiter< T > GetAwaiter() const
Gets an awaiter for this task to support await expressions.
Definition: result_value_task.h:120
bool get_IsFaulted() const
Gets a value indicating whether the task completed due to an unhandled exception.
Definition: result_value_task.h:49
bool operator!=(const ResultValueTask &other) const
Inequality operator for ResultValueTask.
Definition: result_value_task.h:143
bool Equals(ResultValueTask other) override
Determines whether this instance equals another ResultValueTask instance.
Definition: result_value_task.h:106
ResultValueTask(const RTaskPtr< T > &task)
Constructs a ResultValueTask from a shared pointer to a ResultTask<T>.
Definition: result_value_task.h:43
Definition: db_command.h:9
MulticastDelegate< void(Args...)> Action
Delegate type that references methods that have no return value.
Definition: action.h:40
Threading::Tasks::ResultValueTask< T > MakeValueAsync(const Details::ResultAsyncFunction< T > &fnc)
Definition: result_value_task.h:213