using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
namespace BansheeEngine
{
///
/// Object you may use to check on the results of an asynchronous operation. Contains uninitialized data until
/// returns true.
///
public class AsyncOp : ScriptObject
{
///
/// Constructs a new async operation.
///
internal AsyncOp() // Note: For internal runtime use only
{
Internal_CreateInstance(this);
}
///
/// Checks has the asynchronous operation completed.
///
public bool IsCompleted
{
get
{
bool value;
Internal_IsComplete(mCachedPtr, out value);
return value;
}
}
///
/// Retrieves the value returned by the async operation. Only valid if returns true.
///
/// Type of the return value. Caller must ensure to provide the valid type.
/// Return value of the async operation.
public T GetReturnValue()
{
return (T)Internal_GetReturnValue(mCachedPtr);
}
///
/// Blocks the calling thread until asynchronous operation completes.
///
public void BlockUntilComplete()
{
Internal_BlockUntilComplete(mCachedPtr);
}
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void Internal_CreateInstance(AsyncOp managedInstance);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void Internal_IsComplete(IntPtr thisPtr, out bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern object Internal_GetReturnValue(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void Internal_BlockUntilComplete(IntPtr thisPtr);
}
}