using System;
using System.Runtime.InteropServices;
using System.Threading;
namespace System.Runtime.Remoting.Messaging
{
/// Encapsulates the results of an asynchronous operation on a delegate.
// Token: 0x020003D8 RID: 984
[ComVisible(true)]
public class AsyncResult : IAsyncResult, IMessageSink
{
// Token: 0x06002697 RID: 9879 RVA: 0x0007F13C File Offset: 0x0007D33C
internal AsyncResult()
{
}
/// Gets the object provided as the last parameter of a BeginInvoke method call.
/// The object provided as the last parameter of a BeginInvoke method call.
// Token: 0x1700073A RID: 1850
// (get) Token: 0x06002698 RID: 9880 RVA: 0x0007F144 File Offset: 0x0007D344
public virtual object AsyncState
{
get
{
return this.async_state;
}
}
/// Gets a that encapsulates Win32 synchronization handles, and allows the implementation of various synchronization schemes.
/// A that encapsulates Win32 synchronization handles, and allows the implementation of various synchronization schemes.
// Token: 0x1700073B RID: 1851
// (get) Token: 0x06002699 RID: 9881 RVA: 0x0007F14C File Offset: 0x0007D34C
public virtual WaitHandle AsyncWaitHandle
{
get
{
WaitHandle waitHandle;
lock (this)
{
if (this.handle == null)
{
this.handle = new ManualResetEvent(this.completed);
}
waitHandle = this.handle;
}
return waitHandle;
}
}
/// Gets a value indicating whether the BeginInvoke call completed synchronously.
/// true if the BeginInvoke call completed synchronously; otherwise, false.
// Token: 0x1700073C RID: 1852
// (get) Token: 0x0600269A RID: 9882 RVA: 0x0007F1B4 File Offset: 0x0007D3B4
public virtual bool CompletedSynchronously
{
get
{
return this.sync_completed;
}
}
/// Gets a value indicating whether the server has completed the call.
/// true after the server has completed the call; otherwise, false.
// Token: 0x1700073D RID: 1853
// (get) Token: 0x0600269B RID: 9883 RVA: 0x0007F1BC File Offset: 0x0007D3BC
public virtual bool IsCompleted
{
get
{
return this.completed;
}
}
/// Gets or sets a value indicating whether EndInvoke has been called on the current .
/// true if EndInvoke has been called on the current ; otherwise, false.
// Token: 0x1700073E RID: 1854
// (get) Token: 0x0600269C RID: 9884 RVA: 0x0007F1C4 File Offset: 0x0007D3C4
// (set) Token: 0x0600269D RID: 9885 RVA: 0x0007F1CC File Offset: 0x0007D3CC
public bool EndInvokeCalled
{
get
{
return this.endinvoke_called;
}
set
{
this.endinvoke_called = value;
}
}
/// Gets the delegate object on which the asynchronous call was invoked.
/// The delegate object on which the asynchronous call was invoked.
// Token: 0x1700073F RID: 1855
// (get) Token: 0x0600269E RID: 9886 RVA: 0x0007F1D8 File Offset: 0x0007D3D8
public virtual object AsyncDelegate
{
get
{
return this.async_delegate;
}
}
/// Gets the next message sink in the sink chain.
/// An interface that represents the next message sink in the sink chain.
// Token: 0x17000740 RID: 1856
// (get) Token: 0x0600269F RID: 9887 RVA: 0x0007F1E0 File Offset: 0x0007D3E0
public IMessageSink NextSink
{
get
{
return null;
}
}
/// Implements the interface.
/// No value is returned.
/// The request interface.
/// The response interface.
// Token: 0x060026A0 RID: 9888 RVA: 0x0007F1E4 File Offset: 0x0007D3E4
public virtual IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink)
{
throw new NotSupportedException();
}
/// Gets the response message for the asynchronous call.
/// A remoting message that should represent a response to a method call on a remote object.
// Token: 0x060026A1 RID: 9889 RVA: 0x0007F1EC File Offset: 0x0007D3EC
public virtual IMessage GetReplyMessage()
{
return this.reply_message;
}
/// Sets an for the current remote method call, which provides a way to control asynchronous messages after they have been dispatched.
/// The for the current remote method call.
// Token: 0x060026A2 RID: 9890 RVA: 0x0007F1F4 File Offset: 0x0007D3F4
public virtual void SetMessageCtrl(IMessageCtrl mc)
{
this.message_ctrl = mc;
}
// Token: 0x060026A3 RID: 9891 RVA: 0x0007F200 File Offset: 0x0007D400
internal void SetCompletedSynchronously(bool completed)
{
this.sync_completed = completed;
}
// Token: 0x060026A4 RID: 9892 RVA: 0x0007F20C File Offset: 0x0007D40C
internal IMessage EndInvoke()
{
lock (this)
{
if (this.completed)
{
return this.reply_message;
}
}
this.AsyncWaitHandle.WaitOne();
return this.reply_message;
}
/// Synchronously processes a response message returned by a method call on a remote object.
/// Returns null.
/// A response message to a method call on a remote object.
// Token: 0x060026A5 RID: 9893 RVA: 0x0007F274 File Offset: 0x0007D474
public virtual IMessage SyncProcessMessage(IMessage msg)
{
this.reply_message = msg;
lock (this)
{
this.completed = true;
if (this.handle != null)
{
((ManualResetEvent)this.AsyncWaitHandle).Set();
}
}
if (this.async_callback != null)
{
AsyncCallback asyncCallback = (AsyncCallback)this.async_callback;
asyncCallback(this);
}
return null;
}
// Token: 0x17000741 RID: 1857
// (get) Token: 0x060026A6 RID: 9894 RVA: 0x0007F2FC File Offset: 0x0007D4FC
// (set) Token: 0x060026A7 RID: 9895 RVA: 0x0007F304 File Offset: 0x0007D504
internal MonoMethodMessage CallMessage
{
get
{
return this.call_message;
}
set
{
this.call_message = value;
}
}
// Token: 0x04000F11 RID: 3857
private object async_state;
// Token: 0x04000F12 RID: 3858
private WaitHandle handle;
// Token: 0x04000F13 RID: 3859
private object async_delegate;
// Token: 0x04000F14 RID: 3860
private IntPtr data;
// Token: 0x04000F15 RID: 3861
private object object_data;
// Token: 0x04000F16 RID: 3862
private bool sync_completed;
// Token: 0x04000F17 RID: 3863
private bool completed;
// Token: 0x04000F18 RID: 3864
private bool endinvoke_called;
// Token: 0x04000F19 RID: 3865
private object async_callback;
// Token: 0x04000F1A RID: 3866
private ExecutionContext current;
// Token: 0x04000F1B RID: 3867
private ExecutionContext original;
// Token: 0x04000F1C RID: 3868
private int gchandle;
// Token: 0x04000F1D RID: 3869
private MonoMethodMessage call_message;
// Token: 0x04000F1E RID: 3870
private IMessageCtrl message_ctrl;
// Token: 0x04000F1F RID: 3871
private IMessage reply_message;
}
}