scripts
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
// Token: 0x0200038E RID: 910
|
||||
[ComVisible(true)]
|
||||
internal class AggregateDictionary : IEnumerable, ICollection, IDictionary
|
||||
{
|
||||
// Token: 0x06002526 RID: 9510 RVA: 0x0007B3A4 File Offset: 0x000795A4
|
||||
public AggregateDictionary(IDictionary[] dics)
|
||||
{
|
||||
this.dictionaries = dics;
|
||||
}
|
||||
|
||||
// Token: 0x06002527 RID: 9511 RVA: 0x0007B3B4 File Offset: 0x000795B4
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return new AggregateEnumerator(this.dictionaries);
|
||||
}
|
||||
|
||||
// Token: 0x170006DC RID: 1756
|
||||
// (get) Token: 0x06002528 RID: 9512 RVA: 0x0007B3C4 File Offset: 0x000795C4
|
||||
public bool IsFixedSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006DD RID: 1757
|
||||
// (get) Token: 0x06002529 RID: 9513 RVA: 0x0007B3C8 File Offset: 0x000795C8
|
||||
public bool IsReadOnly
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006DE RID: 1758
|
||||
public object this[object key]
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (IDictionary dictionary in this.dictionaries)
|
||||
{
|
||||
if (dictionary.Contains(key))
|
||||
{
|
||||
return dictionary[key];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006DF RID: 1759
|
||||
// (get) Token: 0x0600252C RID: 9516 RVA: 0x0007B418 File Offset: 0x00079618
|
||||
public ICollection Keys
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this._keys != null)
|
||||
{
|
||||
return this._keys;
|
||||
}
|
||||
this._keys = new ArrayList();
|
||||
foreach (IDictionary dictionary in this.dictionaries)
|
||||
{
|
||||
this._keys.AddRange(dictionary.Keys);
|
||||
}
|
||||
return this._keys;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006E0 RID: 1760
|
||||
// (get) Token: 0x0600252D RID: 9517 RVA: 0x0007B478 File Offset: 0x00079678
|
||||
public ICollection Values
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this._values != null)
|
||||
{
|
||||
return this._values;
|
||||
}
|
||||
this._values = new ArrayList();
|
||||
foreach (IDictionary dictionary in this.dictionaries)
|
||||
{
|
||||
this._values.AddRange(dictionary.Values);
|
||||
}
|
||||
return this._values;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600252E RID: 9518 RVA: 0x0007B4D8 File Offset: 0x000796D8
|
||||
public void Add(object key, object value)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
// Token: 0x0600252F RID: 9519 RVA: 0x0007B4E0 File Offset: 0x000796E0
|
||||
public void Clear()
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
// Token: 0x06002530 RID: 9520 RVA: 0x0007B4E8 File Offset: 0x000796E8
|
||||
public bool Contains(object ob)
|
||||
{
|
||||
foreach (IDictionary dictionary in this.dictionaries)
|
||||
{
|
||||
if (dictionary.Contains(ob))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Token: 0x06002531 RID: 9521 RVA: 0x0007B524 File Offset: 0x00079724
|
||||
public IDictionaryEnumerator GetEnumerator()
|
||||
{
|
||||
return new AggregateEnumerator(this.dictionaries);
|
||||
}
|
||||
|
||||
// Token: 0x06002532 RID: 9522 RVA: 0x0007B534 File Offset: 0x00079734
|
||||
public void Remove(object ob)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
// Token: 0x06002533 RID: 9523 RVA: 0x0007B53C File Offset: 0x0007973C
|
||||
public void CopyTo(Array array, int index)
|
||||
{
|
||||
foreach (object obj in this)
|
||||
{
|
||||
array.SetValue(obj, index++);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006E1 RID: 1761
|
||||
// (get) Token: 0x06002534 RID: 9524 RVA: 0x0007B5A8 File Offset: 0x000797A8
|
||||
public int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
int num = 0;
|
||||
foreach (IDictionary dictionary in this.dictionaries)
|
||||
{
|
||||
num += dictionary.Count;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006E2 RID: 1762
|
||||
// (get) Token: 0x06002535 RID: 9525 RVA: 0x0007B5E0 File Offset: 0x000797E0
|
||||
public bool IsSynchronized
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006E3 RID: 1763
|
||||
// (get) Token: 0x06002536 RID: 9526 RVA: 0x0007B5E4 File Offset: 0x000797E4
|
||||
public object SyncRoot
|
||||
{
|
||||
get
|
||||
{
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000E9E RID: 3742
|
||||
private IDictionary[] dictionaries;
|
||||
|
||||
// Token: 0x04000E9F RID: 3743
|
||||
private ArrayList _values;
|
||||
|
||||
// Token: 0x04000EA0 RID: 3744
|
||||
private ArrayList _keys;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
// Token: 0x0200038F RID: 911
|
||||
internal class AggregateEnumerator : IEnumerator, IDictionaryEnumerator
|
||||
{
|
||||
// Token: 0x06002537 RID: 9527 RVA: 0x0007B5E8 File Offset: 0x000797E8
|
||||
public AggregateEnumerator(IDictionary[] dics)
|
||||
{
|
||||
this.dictionaries = dics;
|
||||
this.Reset();
|
||||
}
|
||||
|
||||
// Token: 0x170006E4 RID: 1764
|
||||
// (get) Token: 0x06002538 RID: 9528 RVA: 0x0007B600 File Offset: 0x00079800
|
||||
public DictionaryEntry Entry
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.currente.Entry;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006E5 RID: 1765
|
||||
// (get) Token: 0x06002539 RID: 9529 RVA: 0x0007B610 File Offset: 0x00079810
|
||||
public object Key
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.currente.Key;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006E6 RID: 1766
|
||||
// (get) Token: 0x0600253A RID: 9530 RVA: 0x0007B620 File Offset: 0x00079820
|
||||
public object Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.currente.Value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006E7 RID: 1767
|
||||
// (get) Token: 0x0600253B RID: 9531 RVA: 0x0007B630 File Offset: 0x00079830
|
||||
public object Current
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.currente.Current;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600253C RID: 9532 RVA: 0x0007B640 File Offset: 0x00079840
|
||||
public bool MoveNext()
|
||||
{
|
||||
if (this.pos >= this.dictionaries.Length)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (this.currente.MoveNext())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
this.pos++;
|
||||
if (this.pos >= this.dictionaries.Length)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
this.currente = this.dictionaries[this.pos].GetEnumerator();
|
||||
return this.MoveNext();
|
||||
}
|
||||
|
||||
// Token: 0x0600253D RID: 9533 RVA: 0x0007B6B8 File Offset: 0x000798B8
|
||||
public void Reset()
|
||||
{
|
||||
this.pos = 0;
|
||||
if (this.dictionaries.Length > 0)
|
||||
{
|
||||
this.currente = this.dictionaries[0].GetEnumerator();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000EA1 RID: 3745
|
||||
private IDictionary[] dictionaries;
|
||||
|
||||
// Token: 0x04000EA2 RID: 3746
|
||||
private int pos;
|
||||
|
||||
// Token: 0x04000EA3 RID: 3747
|
||||
private IDictionaryEnumerator currente;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
// Token: 0x0200039E RID: 926
|
||||
internal class AsyncRequest
|
||||
{
|
||||
// Token: 0x0600259A RID: 9626 RVA: 0x0007CD44 File Offset: 0x0007AF44
|
||||
public AsyncRequest(IMessage msgRequest, IMessageSink replySink)
|
||||
{
|
||||
this.ReplySink = replySink;
|
||||
this.MsgRequest = msgRequest;
|
||||
}
|
||||
|
||||
// Token: 0x04000EC0 RID: 3776
|
||||
internal IMessageSink ReplySink;
|
||||
|
||||
// Token: 0x04000EC1 RID: 3777
|
||||
internal IMessage MsgRequest;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,240 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides a base implementation of a channel object that exposes a dictionary interface to its properties.</summary>
|
||||
// Token: 0x02000390 RID: 912
|
||||
[ComVisible(true)]
|
||||
public abstract class BaseChannelObjectWithProperties : IEnumerable, ICollection, IDictionary
|
||||
{
|
||||
/// <summary>Initializes a new instance of the <see cref="T:System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" /> class.</summary>
|
||||
// Token: 0x0600253E RID: 9534 RVA: 0x0007B6F0 File Offset: 0x000798F0
|
||||
protected BaseChannelObjectWithProperties()
|
||||
{
|
||||
this.table = new Hashtable();
|
||||
}
|
||||
|
||||
/// <summary>Returns a <see cref="T:System.Collections.IEnumerator" /> that enumerates over all the properties that are associated with the channel object.</summary>
|
||||
/// <returns>A <see cref="T:System.Collections.IEnumerator" /> that enumerates over all the properties that are associated with the channel object.</returns>
|
||||
// Token: 0x0600253F RID: 9535 RVA: 0x0007B704 File Offset: 0x00079904
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return this.table.GetEnumerator();
|
||||
}
|
||||
|
||||
/// <summary>Gets the number of properties associated with the channel object.</summary>
|
||||
/// <returns>The number of properties associated with the channel object.</returns>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006E8 RID: 1768
|
||||
// (get) Token: 0x06002540 RID: 9536 RVA: 0x0007B714 File Offset: 0x00079914
|
||||
public virtual int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.table.Count;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Gets a value that indicates whether the number of properties that can be entered into the channel object is fixed.</summary>
|
||||
/// <returns>true if the number of properties that can be entered into the channel object is fixed; otherwise, false.</returns>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006E9 RID: 1769
|
||||
// (get) Token: 0x06002541 RID: 9537 RVA: 0x0007B724 File Offset: 0x00079924
|
||||
public virtual bool IsFixedSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Gets a value that indicates whether the collection of properties in the channel object is read-only.</summary>
|
||||
/// <returns>true if the collection of properties in the channel object is read-only; otherwise, false.</returns>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006EA RID: 1770
|
||||
// (get) Token: 0x06002542 RID: 9538 RVA: 0x0007B728 File Offset: 0x00079928
|
||||
public virtual bool IsReadOnly
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Gets a value that indicates whether the dictionary of channel object properties is synchronized.</summary>
|
||||
/// <returns>true if the dictionary of channel object properties is synchronized; otherwise, false.</returns>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006EB RID: 1771
|
||||
// (get) Token: 0x06002543 RID: 9539 RVA: 0x0007B72C File Offset: 0x0007992C
|
||||
public virtual bool IsSynchronized
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>When overridden in a derived class, gets or sets the property that is associated with the specified key.</summary>
|
||||
/// <returns>The property that is associated with the specified key.</returns>
|
||||
/// <param name="key">The key of the property to get or set. </param>
|
||||
/// <exception cref="T:System.NotImplementedException">The property is accessed. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006EC RID: 1772
|
||||
public virtual object this[object key]
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>When overridden in a derived class, gets a <see cref="T:System.Collections.ICollection" /> of keys that the channel object properties are associated with.</summary>
|
||||
/// <returns>A <see cref="T:System.Collections.ICollection" /> of keys that the channel object properties are associated with.</returns>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006ED RID: 1773
|
||||
// (get) Token: 0x06002546 RID: 9542 RVA: 0x0007B740 File Offset: 0x00079940
|
||||
public virtual ICollection Keys
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.table.Keys;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Gets a <see cref="T:System.Collections.IDictionary" /> of the channel properties associated with the channel object.</summary>
|
||||
/// <returns>A <see cref="T:System.Collections.IDictionary" /> of the channel properties associated with the channel object.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x170006EE RID: 1774
|
||||
// (get) Token: 0x06002547 RID: 9543 RVA: 0x0007B750 File Offset: 0x00079950
|
||||
public virtual IDictionary Properties
|
||||
{
|
||||
get
|
||||
{
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Gets an object that is used to synchronize access to the <see cref="T:System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" />.</summary>
|
||||
/// <returns>An object that is used to synchronize access to the <see cref="T:System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" />.</returns>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006EF RID: 1775
|
||||
// (get) Token: 0x06002548 RID: 9544 RVA: 0x0007B754 File Offset: 0x00079954
|
||||
public virtual object SyncRoot
|
||||
{
|
||||
get
|
||||
{
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Gets a <see cref="T:System.Collections.ICollection" /> of the values of the properties associated with the channel object.</summary>
|
||||
/// <returns>A <see cref="T:System.Collections.ICollection" /> of the values of the properties associated with the channel object.</returns>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006F0 RID: 1776
|
||||
// (get) Token: 0x06002549 RID: 9545 RVA: 0x0007B758 File Offset: 0x00079958
|
||||
public virtual ICollection Values
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.table.Values;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Throws a <see cref="T:System.NotSupportedException" />.</summary>
|
||||
/// <param name="key">The key that is associated with the object in the <paramref name="value" /> parameter. </param>
|
||||
/// <param name="value">The value to add. </param>
|
||||
/// <exception cref="T:System.NotSupportedException">The method is called. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600254A RID: 9546 RVA: 0x0007B768 File Offset: 0x00079968
|
||||
public virtual void Add(object key, object value)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
/// <summary>Throws a <see cref="T:System.NotSupportedException" />.</summary>
|
||||
/// <exception cref="T:System.NotSupportedException">The method is called. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600254B RID: 9547 RVA: 0x0007B770 File Offset: 0x00079970
|
||||
public virtual void Clear()
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
/// <summary>Returns a value that indicates whether the channel object contains a property that is associated with the specified key.</summary>
|
||||
/// <returns>true if the channel object contains a property associated with the specified key; otherwise, false.</returns>
|
||||
/// <param name="key">The key of the property to look for. </param>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600254C RID: 9548 RVA: 0x0007B778 File Offset: 0x00079978
|
||||
public virtual bool Contains(object key)
|
||||
{
|
||||
return this.table.Contains(key);
|
||||
}
|
||||
|
||||
/// <summary>Throws a <see cref="T:System.NotSupportedException" />.</summary>
|
||||
/// <param name="array">The array to copy the properties to. </param>
|
||||
/// <param name="index">The index at which to begin copying. </param>
|
||||
/// <exception cref="T:System.NotSupportedException">The method is called. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600254D RID: 9549 RVA: 0x0007B788 File Offset: 0x00079988
|
||||
public virtual void CopyTo(Array array, int index)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
/// <summary>Returns a <see cref="T:System.Collections.IDictionaryEnumerator" /> that enumerates over all the properties associated with the channel object.</summary>
|
||||
/// <returns>A <see cref="T:System.Collections.IDictionaryEnumerator" /> that enumerates over all the properties associated with the channel object.</returns>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600254E RID: 9550 RVA: 0x0007B790 File Offset: 0x00079990
|
||||
public virtual IDictionaryEnumerator GetEnumerator()
|
||||
{
|
||||
return this.table.GetEnumerator();
|
||||
}
|
||||
|
||||
/// <summary>Throws a <see cref="T:System.NotSupportedException" />.</summary>
|
||||
/// <param name="key">The key of the object to be removed. </param>
|
||||
/// <exception cref="T:System.NotSupportedException">The method is called. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600254F RID: 9551 RVA: 0x0007B7A0 File Offset: 0x000799A0
|
||||
public virtual void Remove(object key)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
// Token: 0x04000EA4 RID: 3748
|
||||
private Hashtable table;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides a base implementation for channel sinks that want to expose a dictionary interface to their properties.</summary>
|
||||
// Token: 0x02000391 RID: 913
|
||||
[ComVisible(true)]
|
||||
public abstract class BaseChannelSinkWithProperties : BaseChannelObjectWithProperties
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides a base implementation for channels that want to expose a dictionary interface to their properties.</summary>
|
||||
// Token: 0x02000392 RID: 914
|
||||
[ComVisible(true)]
|
||||
public abstract class BaseChannelWithProperties : BaseChannelObjectWithProperties
|
||||
{
|
||||
/// <summary>Gets a <see cref="T:System.Collections.IDictionary" /> of the channel properties associated with the current channel object.</summary>
|
||||
/// <returns>A <see cref="T:System.Collections.IDictionary" /> of the channel properties associated with the current channel object.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x170006F1 RID: 1777
|
||||
// (get) Token: 0x06002552 RID: 9554 RVA: 0x0007B7B8 File Offset: 0x000799B8
|
||||
public override IDictionary Properties
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.SinksWithProperties == null || this.SinksWithProperties.Properties == null)
|
||||
{
|
||||
return base.Properties;
|
||||
}
|
||||
IDictionary[] array = new IDictionary[]
|
||||
{
|
||||
base.Properties,
|
||||
this.SinksWithProperties.Properties
|
||||
};
|
||||
return new AggregateDictionary(array);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Indicates the top channel sink in the channel sink stack.</summary>
|
||||
// Token: 0x04000EA5 RID: 3749
|
||||
protected IChannelSinkBase SinksWithProperties;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
// Token: 0x0200039D RID: 925
|
||||
internal class CADSerializer
|
||||
{
|
||||
// Token: 0x06002596 RID: 9622 RVA: 0x0007CC64 File Offset: 0x0007AE64
|
||||
internal static IMessage DeserializeMessage(MemoryStream mem, IMethodCallMessage msg)
|
||||
{
|
||||
BinaryFormatter binaryFormatter = new BinaryFormatter();
|
||||
binaryFormatter.SurrogateSelector = null;
|
||||
mem.Position = 0L;
|
||||
if (msg == null)
|
||||
{
|
||||
return (IMessage)binaryFormatter.Deserialize(mem, null);
|
||||
}
|
||||
return (IMessage)binaryFormatter.DeserializeMethodResponse(mem, null, msg);
|
||||
}
|
||||
|
||||
// Token: 0x06002597 RID: 9623 RVA: 0x0007CCA8 File Offset: 0x0007AEA8
|
||||
internal static MemoryStream SerializeMessage(IMessage msg)
|
||||
{
|
||||
MemoryStream memoryStream = new MemoryStream();
|
||||
new BinaryFormatter
|
||||
{
|
||||
SurrogateSelector = new RemotingSurrogateSelector()
|
||||
}.Serialize(memoryStream, msg);
|
||||
memoryStream.Position = 0L;
|
||||
return memoryStream;
|
||||
}
|
||||
|
||||
// Token: 0x06002598 RID: 9624 RVA: 0x0007CCE0 File Offset: 0x0007AEE0
|
||||
internal static MemoryStream SerializeObject(object obj)
|
||||
{
|
||||
MemoryStream memoryStream = new MemoryStream();
|
||||
new BinaryFormatter
|
||||
{
|
||||
SurrogateSelector = new RemotingSurrogateSelector()
|
||||
}.Serialize(memoryStream, obj);
|
||||
memoryStream.Position = 0L;
|
||||
return memoryStream;
|
||||
}
|
||||
|
||||
// Token: 0x06002599 RID: 9625 RVA: 0x0007CD18 File Offset: 0x0007AF18
|
||||
internal static object DeserializeObject(MemoryStream mem)
|
||||
{
|
||||
BinaryFormatter binaryFormatter = new BinaryFormatter();
|
||||
binaryFormatter.SurrogateSelector = null;
|
||||
mem.Position = 0L;
|
||||
return binaryFormatter.Deserialize(mem);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
// Token: 0x02000397 RID: 919
|
||||
internal class ChanelSinkStackEntry
|
||||
{
|
||||
// Token: 0x06002576 RID: 9590 RVA: 0x0007C724 File Offset: 0x0007A924
|
||||
public ChanelSinkStackEntry(IChannelSinkBase sink, object state, ChanelSinkStackEntry next)
|
||||
{
|
||||
this.Sink = sink;
|
||||
this.State = state;
|
||||
this.Next = next;
|
||||
}
|
||||
|
||||
// Token: 0x04000EB0 RID: 3760
|
||||
public IChannelSinkBase Sink;
|
||||
|
||||
// Token: 0x04000EB1 RID: 3761
|
||||
public object State;
|
||||
|
||||
// Token: 0x04000EB2 RID: 3762
|
||||
public ChanelSinkStackEntry Next;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Stores channel data for the remoting channels.</summary>
|
||||
// Token: 0x02000393 RID: 915
|
||||
[ComVisible(true)]
|
||||
[Serializable]
|
||||
public class ChannelDataStore : IChannelDataStore
|
||||
{
|
||||
/// <summary>Initializes a new instance of the <see cref="T:System.Runtime.Remoting.Channels.ChannelDataStore" /> class with the URIs that the current channel maps to.</summary>
|
||||
/// <param name="channelURIs">An array of channel URIs that the current channel maps to. </param>
|
||||
// Token: 0x06002553 RID: 9555 RVA: 0x0007B80C File Offset: 0x00079A0C
|
||||
public ChannelDataStore(string[] channelURIs)
|
||||
{
|
||||
this._channelURIs = channelURIs;
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets an array of channel URIs that the current channel maps to.</summary>
|
||||
/// <returns>An array of channel URIs that the current channel maps to.</returns>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006F2 RID: 1778
|
||||
// (get) Token: 0x06002554 RID: 9556 RVA: 0x0007B81C File Offset: 0x00079A1C
|
||||
// (set) Token: 0x06002555 RID: 9557 RVA: 0x0007B824 File Offset: 0x00079A24
|
||||
public string[] ChannelUris
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._channelURIs;
|
||||
}
|
||||
set
|
||||
{
|
||||
this._channelURIs = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the data object that is associated with the specified key for the implementing channel.</summary>
|
||||
/// <returns>The specified data object for the implementing channel.</returns>
|
||||
/// <param name="key">The key that the data object is associated with. </param>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006F3 RID: 1779
|
||||
public object this[object key]
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this._extraData == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
foreach (DictionaryEntry dictionaryEntry in this._extraData)
|
||||
{
|
||||
if (dictionaryEntry.Key.Equals(key))
|
||||
{
|
||||
return dictionaryEntry.Value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (this._extraData == null)
|
||||
{
|
||||
this._extraData = new DictionaryEntry[]
|
||||
{
|
||||
new DictionaryEntry(key, value)
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
DictionaryEntry[] array = new DictionaryEntry[this._extraData.Length + 1];
|
||||
this._extraData.CopyTo(array, 0);
|
||||
array[this._extraData.Length] = new DictionaryEntry(key, value);
|
||||
this._extraData = array;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000EA6 RID: 3750
|
||||
private string[] _channelURIs;
|
||||
|
||||
// Token: 0x04000EA7 RID: 3751
|
||||
private DictionaryEntry[] _extraData;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,599 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Remoting.Contexts;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides static methods to aid with remoting channel registration, resolution, and URL discovery. This class cannot be inherited.</summary>
|
||||
// Token: 0x02000395 RID: 917
|
||||
[ComVisible(true)]
|
||||
public sealed class ChannelServices
|
||||
{
|
||||
// Token: 0x0600255C RID: 9564 RVA: 0x0007B94C File Offset: 0x00079B4C
|
||||
private ChannelServices()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x170006F5 RID: 1781
|
||||
// (get) Token: 0x0600255E RID: 9566 RVA: 0x0007B9A4 File Offset: 0x00079BA4
|
||||
internal static CrossContextChannel CrossContextChannel
|
||||
{
|
||||
get
|
||||
{
|
||||
return ChannelServices._crossContextSink;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600255F RID: 9567 RVA: 0x0007B9AC File Offset: 0x00079BAC
|
||||
internal static IMessageSink CreateClientChannelSinkChain(string url, object remoteChannelData, out string objectUri)
|
||||
{
|
||||
object[] array = (object[])remoteChannelData;
|
||||
object syncRoot = ChannelServices.registeredChannels.SyncRoot;
|
||||
lock (syncRoot)
|
||||
{
|
||||
foreach (object obj in ChannelServices.registeredChannels)
|
||||
{
|
||||
IChannel channel = (IChannel)obj;
|
||||
IChannelSender channelSender = channel as IChannelSender;
|
||||
if (channelSender != null)
|
||||
{
|
||||
IMessageSink messageSink = ChannelServices.CreateClientChannelSinkChain(channelSender, url, array, out objectUri);
|
||||
if (messageSink != null)
|
||||
{
|
||||
return messageSink;
|
||||
}
|
||||
}
|
||||
}
|
||||
RemotingConfiguration.LoadDefaultDelayedChannels();
|
||||
foreach (object obj2 in ChannelServices.delayedClientChannels)
|
||||
{
|
||||
IChannelSender channelSender2 = (IChannelSender)obj2;
|
||||
IMessageSink messageSink2 = ChannelServices.CreateClientChannelSinkChain(channelSender2, url, array, out objectUri);
|
||||
if (messageSink2 != null)
|
||||
{
|
||||
ChannelServices.delayedClientChannels.Remove(channelSender2);
|
||||
ChannelServices.RegisterChannel(channelSender2);
|
||||
return messageSink2;
|
||||
}
|
||||
}
|
||||
}
|
||||
objectUri = null;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Token: 0x06002560 RID: 9568 RVA: 0x0007BB1C File Offset: 0x00079D1C
|
||||
internal static IMessageSink CreateClientChannelSinkChain(IChannelSender sender, string url, object[] channelDataArray, out string objectUri)
|
||||
{
|
||||
objectUri = null;
|
||||
if (channelDataArray == null)
|
||||
{
|
||||
return sender.CreateMessageSink(url, null, out objectUri);
|
||||
}
|
||||
foreach (object obj in channelDataArray)
|
||||
{
|
||||
IMessageSink messageSink;
|
||||
if (obj is IChannelDataStore)
|
||||
{
|
||||
messageSink = sender.CreateMessageSink(null, obj, out objectUri);
|
||||
}
|
||||
else
|
||||
{
|
||||
messageSink = sender.CreateMessageSink(url, obj, out objectUri);
|
||||
}
|
||||
if (messageSink != null)
|
||||
{
|
||||
return messageSink;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>Gets a list of currently registered channels.</summary>
|
||||
/// <returns>An array of all the currently registered channels.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006F6 RID: 1782
|
||||
// (get) Token: 0x06002561 RID: 9569 RVA: 0x0007BB84 File Offset: 0x00079D84
|
||||
public static IChannel[] RegisteredChannels
|
||||
{
|
||||
get
|
||||
{
|
||||
object syncRoot = ChannelServices.registeredChannels.SyncRoot;
|
||||
IChannel[] array;
|
||||
lock (syncRoot)
|
||||
{
|
||||
ArrayList arrayList = new ArrayList();
|
||||
for (int i = 0; i < ChannelServices.registeredChannels.Count; i++)
|
||||
{
|
||||
IChannel channel = (IChannel)ChannelServices.registeredChannels[i];
|
||||
if (!(channel is CrossAppDomainChannel))
|
||||
{
|
||||
arrayList.Add(channel);
|
||||
}
|
||||
}
|
||||
array = (IChannel[])arrayList.ToArray(typeof(IChannel));
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Creates a channel sink chain for the specified channel.</summary>
|
||||
/// <returns>A new channel sink chain for the specified channel.</returns>
|
||||
/// <param name="provider">The first provider in the chain of sink providers that will create the channel sink chain. </param>
|
||||
/// <param name="channel">The <see cref="T:System.Runtime.Remoting.Channels.IChannelReceiver" /> for which to create the channel sink chain. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x06002562 RID: 9570 RVA: 0x0007BC34 File Offset: 0x00079E34
|
||||
public static IServerChannelSink CreateServerChannelSinkChain(IServerChannelSinkProvider provider, IChannelReceiver channel)
|
||||
{
|
||||
IServerChannelSinkProvider serverChannelSinkProvider = provider;
|
||||
while (serverChannelSinkProvider.Next != null)
|
||||
{
|
||||
serverChannelSinkProvider = serverChannelSinkProvider.Next;
|
||||
}
|
||||
serverChannelSinkProvider.Next = new ServerDispatchSinkProvider();
|
||||
return provider.CreateSink(channel);
|
||||
}
|
||||
|
||||
/// <summary>Dispatches incoming remote calls.</summary>
|
||||
/// <returns>A <see cref="T:System.Runtime.Remoting.Channels.ServerProcessing" /> that gives the status of the server message processing.</returns>
|
||||
/// <param name="sinkStack">The stack of server channel sinks that the message already traversed. </param>
|
||||
/// <param name="msg">The message to dispatch. </param>
|
||||
/// <param name="replyMsg">When this method returns, contains a <see cref="T:System.Runtime.Remoting.Messaging.IMessage" /> that holds the reply from the server to the message that is contained in the <paramref name="msg" /> parameter. This parameter is passed uninitialized. </param>
|
||||
/// <exception cref="T:System.ArgumentNullException">The <paramref name="msg" /> parameter is null. </exception>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="MemberAccess" />
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x06002563 RID: 9571 RVA: 0x0007BC6C File Offset: 0x00079E6C
|
||||
public static ServerProcessing DispatchMessage(IServerChannelSinkStack sinkStack, IMessage msg, out IMessage replyMsg)
|
||||
{
|
||||
if (msg == null)
|
||||
{
|
||||
throw new ArgumentNullException("msg");
|
||||
}
|
||||
replyMsg = ChannelServices.SyncDispatchMessage(msg);
|
||||
if (RemotingServices.IsOneWay(((IMethodMessage)msg).MethodBase))
|
||||
{
|
||||
return ServerProcessing.OneWay;
|
||||
}
|
||||
return ServerProcessing.Complete;
|
||||
}
|
||||
|
||||
/// <summary>Returns a registered channel with the specified name.</summary>
|
||||
/// <returns>An interface to a registered channel, or null if the channel is not registered.</returns>
|
||||
/// <param name="name">The channel name. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x06002564 RID: 9572 RVA: 0x0007BCA0 File Offset: 0x00079EA0
|
||||
public static IChannel GetChannel(string name)
|
||||
{
|
||||
object syncRoot = ChannelServices.registeredChannels.SyncRoot;
|
||||
IChannel channel2;
|
||||
lock (syncRoot)
|
||||
{
|
||||
foreach (object obj in ChannelServices.registeredChannels)
|
||||
{
|
||||
IChannel channel = (IChannel)obj;
|
||||
if (channel.ChannelName == name && !(channel is CrossAppDomainChannel))
|
||||
{
|
||||
return channel;
|
||||
}
|
||||
}
|
||||
channel2 = null;
|
||||
}
|
||||
return channel2;
|
||||
}
|
||||
|
||||
/// <summary>Returns a <see cref="T:System.Collections.IDictionary" /> of properties for a given proxy.</summary>
|
||||
/// <returns>An interface to the dictionary of properties, or null if no properties were found.</returns>
|
||||
/// <param name="obj">The proxy to retrieve properties for. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">At least one of the callers that is higher in the callstack does not have permission to configure remoting types and channels. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="RemotingConfiguration" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x06002565 RID: 9573 RVA: 0x0007BD6C File Offset: 0x00079F6C
|
||||
public static IDictionary GetChannelSinkProperties(object obj)
|
||||
{
|
||||
if (!RemotingServices.IsTransparentProxy(obj))
|
||||
{
|
||||
throw new ArgumentException("obj must be a proxy", "obj");
|
||||
}
|
||||
ClientIdentity clientIdentity = (ClientIdentity)RemotingServices.GetRealProxy(obj).ObjectIdentity;
|
||||
IMessageSink messageSink = clientIdentity.ChannelSink;
|
||||
ArrayList arrayList = new ArrayList();
|
||||
while (messageSink != null && !(messageSink is IClientChannelSink))
|
||||
{
|
||||
messageSink = messageSink.NextSink;
|
||||
}
|
||||
if (messageSink == null)
|
||||
{
|
||||
return new Hashtable();
|
||||
}
|
||||
for (IClientChannelSink clientChannelSink = messageSink as IClientChannelSink; clientChannelSink != null; clientChannelSink = clientChannelSink.NextChannelSink)
|
||||
{
|
||||
arrayList.Add(clientChannelSink.Properties);
|
||||
}
|
||||
IDictionary[] array = (IDictionary[])arrayList.ToArray(typeof(IDictionary[]));
|
||||
return new AggregateDictionary(array);
|
||||
}
|
||||
|
||||
/// <summary>Returns an array of all the URLs that can be used to reach the specified object.</summary>
|
||||
/// <returns>An array of strings that contains the URLs that can be used to remotely identify the object, or null if none were found.</returns>
|
||||
/// <param name="obj">The object to retrieve the URL array for. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x06002566 RID: 9574 RVA: 0x0007BE20 File Offset: 0x0007A020
|
||||
public static string[] GetUrlsForObject(MarshalByRefObject obj)
|
||||
{
|
||||
string objectUri = RemotingServices.GetObjectUri(obj);
|
||||
if (objectUri == null)
|
||||
{
|
||||
return new string[0];
|
||||
}
|
||||
ArrayList arrayList = new ArrayList();
|
||||
object syncRoot = ChannelServices.registeredChannels.SyncRoot;
|
||||
lock (syncRoot)
|
||||
{
|
||||
foreach (object obj2 in ChannelServices.registeredChannels)
|
||||
{
|
||||
if (!(obj2 is CrossAppDomainChannel))
|
||||
{
|
||||
IChannelReceiver channelReceiver = obj2 as IChannelReceiver;
|
||||
if (channelReceiver != null)
|
||||
{
|
||||
arrayList.AddRange(channelReceiver.GetUrlsForUri(objectUri));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return (string[])arrayList.ToArray(typeof(string));
|
||||
}
|
||||
|
||||
/// <summary>Registers a channel with the channel services. <see cref="M:System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(System.Runtime.Remoting.Channels.IChannel)" /> is obsolete. Please use <see cref="M:System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(System.Runtime.Remoting.Channels.IChannel,System.Boolean)" /> instead.</summary>
|
||||
/// <param name="chnl">The channel to register. </param>
|
||||
/// <exception cref="T:System.ArgumentNullException">The <paramref name="chnl" /> parameter is null. </exception>
|
||||
/// <exception cref="T:System.Runtime.Remoting.RemotingException">The channel has already been registered. </exception>
|
||||
/// <exception cref="T:System.Security.SecurityException">At least one of the callers higher in the callstack does not have permission to configure remoting types and channels. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="RemotingConfiguration" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x06002567 RID: 9575 RVA: 0x0007BF1C File Offset: 0x0007A11C
|
||||
[Obsolete("Use RegisterChannel(IChannel,Boolean)")]
|
||||
public static void RegisterChannel(IChannel chnl)
|
||||
{
|
||||
ChannelServices.RegisterChannel(chnl, false);
|
||||
}
|
||||
|
||||
/// <summary>Registers a channel with the channel services.</summary>
|
||||
/// <param name="chnl">The channel to register.</param>
|
||||
/// <param name="ensureSecurity">true ensures that security is enabled; otherwise false. Setting the value to false will not nullify the security setting done on the TCP or IPC channel. For details, see Remarks.</param>
|
||||
/// <exception cref="T:System.ArgumentNullException">The <paramref name="chnl" /> parameter is null. </exception>
|
||||
/// <exception cref="T:System.Runtime.Remoting.RemotingException">The channel has already been registered. </exception>
|
||||
/// <exception cref="T:System.Security.SecurityException">At least one of the callers higher in the call stack does not have permission to configure remoting types and channels. </exception>
|
||||
/// <exception cref="T:System.NotSupportedException">Not supported in Windows 98 for <see cref="T:System.Runtime.Remoting.Channels.Tcp.TcpServerChannel" /> and on all platforms for <see cref="T:System.Runtime.Remoting.Channels.Http.HttpServerChannel" />. Host the service using Internet Information Services (IIS) if you require a secure HTTP channel.</exception>
|
||||
// Token: 0x06002568 RID: 9576 RVA: 0x0007BF28 File Offset: 0x0007A128
|
||||
public static void RegisterChannel(IChannel chnl, bool ensureSecurity)
|
||||
{
|
||||
if (chnl == null)
|
||||
{
|
||||
throw new ArgumentNullException("chnl");
|
||||
}
|
||||
if (ensureSecurity)
|
||||
{
|
||||
ISecurableChannel securableChannel = chnl as ISecurableChannel;
|
||||
if (securableChannel == null)
|
||||
{
|
||||
throw new RemotingException(string.Format("Channel {0} is not securable while ensureSecurity is specified as true", chnl.ChannelName));
|
||||
}
|
||||
securableChannel.IsSecured = true;
|
||||
}
|
||||
object syncRoot = ChannelServices.registeredChannels.SyncRoot;
|
||||
lock (syncRoot)
|
||||
{
|
||||
int num = -1;
|
||||
for (int i = 0; i < ChannelServices.registeredChannels.Count; i++)
|
||||
{
|
||||
IChannel channel = (IChannel)ChannelServices.registeredChannels[i];
|
||||
if (channel.ChannelName == chnl.ChannelName && chnl.ChannelName != string.Empty)
|
||||
{
|
||||
throw new RemotingException("Channel " + channel.ChannelName + " already registered");
|
||||
}
|
||||
if (channel.ChannelPriority < chnl.ChannelPriority && num == -1)
|
||||
{
|
||||
num = i;
|
||||
}
|
||||
}
|
||||
if (num != -1)
|
||||
{
|
||||
ChannelServices.registeredChannels.Insert(num, chnl);
|
||||
}
|
||||
else
|
||||
{
|
||||
ChannelServices.registeredChannels.Add(chnl);
|
||||
}
|
||||
IChannelReceiver channelReceiver = chnl as IChannelReceiver;
|
||||
if (channelReceiver != null && ChannelServices.oldStartModeTypes.Contains(chnl.GetType().ToString()))
|
||||
{
|
||||
channelReceiver.StartListening(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06002569 RID: 9577 RVA: 0x0007C098 File Offset: 0x0007A298
|
||||
internal static void RegisterChannelConfig(ChannelData channel)
|
||||
{
|
||||
IServerChannelSinkProvider serverChannelSinkProvider = null;
|
||||
IClientChannelSinkProvider clientChannelSinkProvider = null;
|
||||
for (int i = channel.ServerProviders.Count - 1; i >= 0; i--)
|
||||
{
|
||||
ProviderData providerData = channel.ServerProviders[i] as ProviderData;
|
||||
IServerChannelSinkProvider serverChannelSinkProvider2 = (IServerChannelSinkProvider)ChannelServices.CreateProvider(providerData);
|
||||
serverChannelSinkProvider2.Next = serverChannelSinkProvider;
|
||||
serverChannelSinkProvider = serverChannelSinkProvider2;
|
||||
}
|
||||
for (int j = channel.ClientProviders.Count - 1; j >= 0; j--)
|
||||
{
|
||||
ProviderData providerData2 = channel.ClientProviders[j] as ProviderData;
|
||||
IClientChannelSinkProvider clientChannelSinkProvider2 = (IClientChannelSinkProvider)ChannelServices.CreateProvider(providerData2);
|
||||
clientChannelSinkProvider2.Next = clientChannelSinkProvider;
|
||||
clientChannelSinkProvider = clientChannelSinkProvider2;
|
||||
}
|
||||
Type type = Type.GetType(channel.Type);
|
||||
if (type == null)
|
||||
{
|
||||
throw new RemotingException("Type '" + channel.Type + "' not found");
|
||||
}
|
||||
bool flag = typeof(IChannelSender).IsAssignableFrom(type);
|
||||
bool flag2 = typeof(IChannelReceiver).IsAssignableFrom(type);
|
||||
Type[] array;
|
||||
object[] array2;
|
||||
if (flag && flag2)
|
||||
{
|
||||
array = new Type[]
|
||||
{
|
||||
typeof(IDictionary),
|
||||
typeof(IClientChannelSinkProvider),
|
||||
typeof(IServerChannelSinkProvider)
|
||||
};
|
||||
array2 = new object[] { channel.CustomProperties, clientChannelSinkProvider, serverChannelSinkProvider };
|
||||
}
|
||||
else if (flag)
|
||||
{
|
||||
array = new Type[]
|
||||
{
|
||||
typeof(IDictionary),
|
||||
typeof(IClientChannelSinkProvider)
|
||||
};
|
||||
array2 = new object[] { channel.CustomProperties, clientChannelSinkProvider };
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!flag2)
|
||||
{
|
||||
throw new RemotingException(type + " is not a valid channel type");
|
||||
}
|
||||
array = new Type[]
|
||||
{
|
||||
typeof(IDictionary),
|
||||
typeof(IServerChannelSinkProvider)
|
||||
};
|
||||
array2 = new object[] { channel.CustomProperties, serverChannelSinkProvider };
|
||||
}
|
||||
ConstructorInfo constructor = type.GetConstructor(array);
|
||||
if (constructor == null)
|
||||
{
|
||||
throw new RemotingException(type + " does not have a valid constructor");
|
||||
}
|
||||
IChannel channel2;
|
||||
try
|
||||
{
|
||||
channel2 = (IChannel)constructor.Invoke(array2);
|
||||
}
|
||||
catch (TargetInvocationException ex)
|
||||
{
|
||||
throw ex.InnerException;
|
||||
}
|
||||
object syncRoot = ChannelServices.registeredChannels.SyncRoot;
|
||||
lock (syncRoot)
|
||||
{
|
||||
if (channel.DelayLoadAsClientChannel == "true" && !(channel2 is IChannelReceiver))
|
||||
{
|
||||
ChannelServices.delayedClientChannels.Add(channel2);
|
||||
}
|
||||
else
|
||||
{
|
||||
ChannelServices.RegisterChannel(channel2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600256A RID: 9578 RVA: 0x0007C360 File Offset: 0x0007A560
|
||||
private static object CreateProvider(ProviderData prov)
|
||||
{
|
||||
Type type = Type.GetType(prov.Type);
|
||||
if (type == null)
|
||||
{
|
||||
throw new RemotingException("Type '" + prov.Type + "' not found");
|
||||
}
|
||||
object[] array = new object[] { prov.CustomProperties, prov.CustomData };
|
||||
object obj;
|
||||
try
|
||||
{
|
||||
obj = Activator.CreateInstance(type, array);
|
||||
}
|
||||
catch (Exception innerException)
|
||||
{
|
||||
if (innerException is TargetInvocationException)
|
||||
{
|
||||
innerException = ((TargetInvocationException)innerException).InnerException;
|
||||
}
|
||||
throw new RemotingException(string.Concat(new object[] { "An instance of provider '", type, "' could not be created: ", innerException.Message }));
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
/// <summary>Synchronously dispatches the incoming message to the server-side chain(s) based on the URI embedded in the message.</summary>
|
||||
/// <returns>A reply message is returned by the call to the server-side chain.</returns>
|
||||
/// <param name="msg">The message to dispatch. </param>
|
||||
/// <exception cref="T:System.ArgumentNullException">The <paramref name="msg" /> parameter is null. </exception>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="MemberAccess" />
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600256B RID: 9579 RVA: 0x0007C430 File Offset: 0x0007A630
|
||||
public static IMessage SyncDispatchMessage(IMessage msg)
|
||||
{
|
||||
IMessage message = ChannelServices.CheckIncomingMessage(msg);
|
||||
if (message != null)
|
||||
{
|
||||
return ChannelServices.CheckReturnMessage(msg, message);
|
||||
}
|
||||
message = ChannelServices._crossContextSink.SyncProcessMessage(msg);
|
||||
return ChannelServices.CheckReturnMessage(msg, message);
|
||||
}
|
||||
|
||||
/// <summary>Asynchronously dispatches the given message to the server-side chain(s) based on the URI embedded in the message.</summary>
|
||||
/// <returns>A <see cref="T:System.Runtime.Remoting.Messaging.IMessageCtrl" /> object used to control the asynchronously dispatched message.</returns>
|
||||
/// <param name="msg">The message to dispatch. </param>
|
||||
/// <param name="replySink">The sink that will process the return message if it is not null. </param>
|
||||
/// <exception cref="T:System.ArgumentNullException">The <paramref name="msg" /> parameter is null. </exception>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="MemberAccess" />
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600256C RID: 9580 RVA: 0x0007C468 File Offset: 0x0007A668
|
||||
public static IMessageCtrl AsyncDispatchMessage(IMessage msg, IMessageSink replySink)
|
||||
{
|
||||
IMessage message = ChannelServices.CheckIncomingMessage(msg);
|
||||
if (message != null)
|
||||
{
|
||||
replySink.SyncProcessMessage(ChannelServices.CheckReturnMessage(msg, message));
|
||||
return null;
|
||||
}
|
||||
if (RemotingConfiguration.CustomErrorsEnabled(ChannelServices.IsLocalCall(msg)))
|
||||
{
|
||||
replySink = new ExceptionFilterSink(msg, replySink);
|
||||
}
|
||||
return ChannelServices._crossContextSink.AsyncProcessMessage(msg, replySink);
|
||||
}
|
||||
|
||||
// Token: 0x0600256D RID: 9581 RVA: 0x0007C4B8 File Offset: 0x0007A6B8
|
||||
private static ReturnMessage CheckIncomingMessage(IMessage msg)
|
||||
{
|
||||
IMethodMessage methodMessage = (IMethodMessage)msg;
|
||||
ServerIdentity serverIdentity = RemotingServices.GetIdentityForUri(methodMessage.Uri) as ServerIdentity;
|
||||
if (serverIdentity == null)
|
||||
{
|
||||
return new ReturnMessage(new RemotingException("No receiver for uri " + methodMessage.Uri), (IMethodCallMessage)msg);
|
||||
}
|
||||
RemotingServices.SetMessageTargetIdentity(msg, serverIdentity);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Token: 0x0600256E RID: 9582 RVA: 0x0007C50C File Offset: 0x0007A70C
|
||||
internal static IMessage CheckReturnMessage(IMessage callMsg, IMessage retMsg)
|
||||
{
|
||||
IMethodReturnMessage methodReturnMessage = retMsg as IMethodReturnMessage;
|
||||
if (methodReturnMessage != null && methodReturnMessage.Exception != null && RemotingConfiguration.CustomErrorsEnabled(ChannelServices.IsLocalCall(callMsg)))
|
||||
{
|
||||
Exception ex = new Exception("Server encountered an internal error. For more information, turn off customErrors in the server's .config file.");
|
||||
retMsg = new MethodResponse(ex, (IMethodCallMessage)callMsg);
|
||||
}
|
||||
return retMsg;
|
||||
}
|
||||
|
||||
// Token: 0x0600256F RID: 9583 RVA: 0x0007C55C File Offset: 0x0007A75C
|
||||
private static bool IsLocalCall(IMessage callMsg)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>Unregisters a particular channel from the registered channels list.</summary>
|
||||
/// <param name="chnl">The channel to unregister. </param>
|
||||
/// <exception cref="T:System.ArgumentNullException">The <paramref name="chnl" /> parameter is null. </exception>
|
||||
/// <exception cref="T:System.Runtime.Remoting.RemotingException">The channel is not registered. </exception>
|
||||
/// <exception cref="T:System.Security.SecurityException">At least one of the callers higher in the callstack does not have permission to configure remoting types and channels. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="RemotingConfiguration" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x06002570 RID: 9584 RVA: 0x0007C560 File Offset: 0x0007A760
|
||||
public static void UnregisterChannel(IChannel chnl)
|
||||
{
|
||||
if (chnl == null)
|
||||
{
|
||||
throw new ArgumentNullException();
|
||||
}
|
||||
object syncRoot = ChannelServices.registeredChannels.SyncRoot;
|
||||
lock (syncRoot)
|
||||
{
|
||||
for (int i = 0; i < ChannelServices.registeredChannels.Count; i++)
|
||||
{
|
||||
if (ChannelServices.registeredChannels[i] == chnl)
|
||||
{
|
||||
ChannelServices.registeredChannels.RemoveAt(i);
|
||||
IChannelReceiver channelReceiver = chnl as IChannelReceiver;
|
||||
if (channelReceiver != null)
|
||||
{
|
||||
channelReceiver.StopListening(null);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new RemotingException("Channel not registered");
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06002571 RID: 9585 RVA: 0x0007C610 File Offset: 0x0007A810
|
||||
internal static object[] GetCurrentChannelInfo()
|
||||
{
|
||||
ArrayList arrayList = new ArrayList();
|
||||
object syncRoot = ChannelServices.registeredChannels.SyncRoot;
|
||||
lock (syncRoot)
|
||||
{
|
||||
foreach (object obj in ChannelServices.registeredChannels)
|
||||
{
|
||||
IChannelReceiver channelReceiver = obj as IChannelReceiver;
|
||||
if (channelReceiver != null)
|
||||
{
|
||||
object channelData = channelReceiver.ChannelData;
|
||||
if (channelData != null)
|
||||
{
|
||||
arrayList.Add(channelData);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return arrayList.ToArray();
|
||||
}
|
||||
|
||||
// Token: 0x04000EA9 RID: 3753
|
||||
private static ArrayList registeredChannels = new ArrayList();
|
||||
|
||||
// Token: 0x04000EAA RID: 3754
|
||||
private static ArrayList delayedClientChannels = new ArrayList();
|
||||
|
||||
// Token: 0x04000EAB RID: 3755
|
||||
private static CrossContextChannel _crossContextSink = new CrossContextChannel();
|
||||
|
||||
// Token: 0x04000EAC RID: 3756
|
||||
internal static string CrossContextUrl = "__CrossContext";
|
||||
|
||||
// Token: 0x04000EAD RID: 3757
|
||||
private static IList oldStartModeTypes = new string[] { "Novell.Zenworks.Zmd.Public.UnixServerChannel", "Novell.Zenworks.Zmd.Public.UnixChannel" };
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Holds the stack of client channel sinks that must be invoked during an asynchronous message response decoding.</summary>
|
||||
// Token: 0x02000398 RID: 920
|
||||
[ComVisible(true)]
|
||||
public class ClientChannelSinkStack : IClientChannelSinkStack, IClientResponseChannelSinkStack
|
||||
{
|
||||
/// <summary>Initializes a new instance of the <see cref="T:System.Runtime.Remoting.Channels.ClientChannelSinkStack" /> class with default values.</summary>
|
||||
// Token: 0x06002577 RID: 9591 RVA: 0x0007C744 File Offset: 0x0007A944
|
||||
public ClientChannelSinkStack()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>Initializes a new instance of the <see cref="T:System.Runtime.Remoting.Channels.ClientChannelSinkStack" /> class with the specified reply sink.</summary>
|
||||
/// <param name="replySink">The <see cref="T:System.Runtime.Remoting.Messaging.IMessageSink" /> that the current stack can use to reply to messages. </param>
|
||||
// Token: 0x06002578 RID: 9592 RVA: 0x0007C74C File Offset: 0x0007A94C
|
||||
public ClientChannelSinkStack(IMessageSink replySink)
|
||||
{
|
||||
this._replySink = replySink;
|
||||
}
|
||||
|
||||
/// <summary>Requests asynchronous processing of a method call on the sinks that are in the current sink stack.</summary>
|
||||
/// <param name="headers">The headers that are retrieved from the server response stream. </param>
|
||||
/// <param name="stream">The stream that is returning from the transport sink. </param>
|
||||
/// <exception cref="T:System.Runtime.Remoting.RemotingException">The current sink stack is empty. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x06002579 RID: 9593 RVA: 0x0007C75C File Offset: 0x0007A95C
|
||||
public void AsyncProcessResponse(ITransportHeaders headers, Stream stream)
|
||||
{
|
||||
if (this._sinkStack == null)
|
||||
{
|
||||
throw new RemotingException("The current sink stack is empty");
|
||||
}
|
||||
ChanelSinkStackEntry sinkStack = this._sinkStack;
|
||||
this._sinkStack = this._sinkStack.Next;
|
||||
((IClientChannelSink)sinkStack.Sink).AsyncProcessResponse(this, sinkStack.State, headers, stream);
|
||||
}
|
||||
|
||||
/// <summary>Dispatches the specified exception on the reply sink.</summary>
|
||||
/// <param name="e">The exception to dispatch to the server. </param>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600257A RID: 9594 RVA: 0x0007C7B0 File Offset: 0x0007A9B0
|
||||
public void DispatchException(Exception e)
|
||||
{
|
||||
this.DispatchReplyMessage(new ReturnMessage(e, null));
|
||||
}
|
||||
|
||||
/// <summary>Dispatches the specified reply message on the reply sink.</summary>
|
||||
/// <param name="msg">The <see cref="T:System.Runtime.Remoting.Messaging.IMessage" /> to dispatch. </param>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600257B RID: 9595 RVA: 0x0007C7C0 File Offset: 0x0007A9C0
|
||||
public void DispatchReplyMessage(IMessage msg)
|
||||
{
|
||||
if (this._replySink != null)
|
||||
{
|
||||
this._replySink.SyncProcessMessage(msg);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Pops the information that is associated with all the sinks from the sink stack up to and including the specified sink.</summary>
|
||||
/// <returns>Information generated on the request side and associated with the specified sink.</returns>
|
||||
/// <param name="sink">The sink to remove and return from the sink stack. </param>
|
||||
/// <exception cref="T:System.Runtime.Remoting.RemotingException">The current sink stack is empty, or the specified sink was never pushed onto the current stack. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600257C RID: 9596 RVA: 0x0007C7DC File Offset: 0x0007A9DC
|
||||
public object Pop(IClientChannelSink sink)
|
||||
{
|
||||
while (this._sinkStack != null)
|
||||
{
|
||||
ChanelSinkStackEntry sinkStack = this._sinkStack;
|
||||
this._sinkStack = this._sinkStack.Next;
|
||||
if (sinkStack.Sink == sink)
|
||||
{
|
||||
return sinkStack.State;
|
||||
}
|
||||
}
|
||||
throw new RemotingException("The current sink stack is empty, or the specified sink was never pushed onto the current stack");
|
||||
}
|
||||
|
||||
/// <summary>Pushes the specified sink and information that is associated with it onto the sink stack.</summary>
|
||||
/// <param name="sink">The sink to push onto the sink stack. </param>
|
||||
/// <param name="state">Information generated on the request side that is needed on the response side. </param>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x0600257D RID: 9597 RVA: 0x0007C830 File Offset: 0x0007AA30
|
||||
public void Push(IClientChannelSink sink, object state)
|
||||
{
|
||||
this._sinkStack = new ChanelSinkStackEntry(sink, state, this._sinkStack);
|
||||
}
|
||||
|
||||
// Token: 0x04000EB3 RID: 3763
|
||||
private IMessageSink _replySink;
|
||||
|
||||
// Token: 0x04000EB4 RID: 3764
|
||||
private ChanelSinkStackEntry _sinkStack;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
using System;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
using System.Threading;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
// Token: 0x0200039A RID: 922
|
||||
[Serializable]
|
||||
internal class CrossAppDomainChannel : IChannel, IChannelReceiver, IChannelSender
|
||||
{
|
||||
// Token: 0x06002583 RID: 9603 RVA: 0x0007C8A0 File Offset: 0x0007AAA0
|
||||
internal static void RegisterCrossAppDomainChannel()
|
||||
{
|
||||
object obj = CrossAppDomainChannel.s_lock;
|
||||
lock (obj)
|
||||
{
|
||||
CrossAppDomainChannel crossAppDomainChannel = new CrossAppDomainChannel();
|
||||
ChannelServices.RegisterChannel(crossAppDomainChannel);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006FA RID: 1786
|
||||
// (get) Token: 0x06002584 RID: 9604 RVA: 0x0007C8F0 File Offset: 0x0007AAF0
|
||||
public virtual string ChannelName
|
||||
{
|
||||
get
|
||||
{
|
||||
return "MONOCAD";
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006FB RID: 1787
|
||||
// (get) Token: 0x06002585 RID: 9605 RVA: 0x0007C8F8 File Offset: 0x0007AAF8
|
||||
public virtual int ChannelPriority
|
||||
{
|
||||
get
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06002586 RID: 9606 RVA: 0x0007C8FC File Offset: 0x0007AAFC
|
||||
public string Parse(string url, out string objectURI)
|
||||
{
|
||||
objectURI = url;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Token: 0x170006FC RID: 1788
|
||||
// (get) Token: 0x06002587 RID: 9607 RVA: 0x0007C904 File Offset: 0x0007AB04
|
||||
public virtual object ChannelData
|
||||
{
|
||||
get
|
||||
{
|
||||
return new CrossAppDomainData(Thread.GetDomainID());
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06002588 RID: 9608 RVA: 0x0007C910 File Offset: 0x0007AB10
|
||||
public virtual string[] GetUrlsForUri(string objectURI)
|
||||
{
|
||||
throw new NotSupportedException("CrossAppdomain channel dont support UrlsForUri");
|
||||
}
|
||||
|
||||
// Token: 0x06002589 RID: 9609 RVA: 0x0007C91C File Offset: 0x0007AB1C
|
||||
public virtual void StartListening(object data)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600258A RID: 9610 RVA: 0x0007C920 File Offset: 0x0007AB20
|
||||
public virtual void StopListening(object data)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0600258B RID: 9611 RVA: 0x0007C924 File Offset: 0x0007AB24
|
||||
public virtual IMessageSink CreateMessageSink(string url, object data, out string uri)
|
||||
{
|
||||
uri = null;
|
||||
if (data != null)
|
||||
{
|
||||
CrossAppDomainData crossAppDomainData = data as CrossAppDomainData;
|
||||
if (crossAppDomainData != null && crossAppDomainData.ProcessID == RemotingConfiguration.ProcessId)
|
||||
{
|
||||
return CrossAppDomainSink.GetSink(crossAppDomainData.DomainID);
|
||||
}
|
||||
}
|
||||
if (url != null && url.StartsWith("MONOCAD"))
|
||||
{
|
||||
throw new NotSupportedException("Can't create a named channel via crossappdomain");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Token: 0x04000EB8 RID: 3768
|
||||
private const string _strName = "MONOCAD";
|
||||
|
||||
// Token: 0x04000EB9 RID: 3769
|
||||
private const string _strBaseURI = "MONOCADURI";
|
||||
|
||||
// Token: 0x04000EBA RID: 3770
|
||||
private static object s_lock = new object();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
using System;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
// Token: 0x02000399 RID: 921
|
||||
[Serializable]
|
||||
internal class CrossAppDomainData
|
||||
{
|
||||
// Token: 0x0600257E RID: 9598 RVA: 0x0007C848 File Offset: 0x0007AA48
|
||||
internal CrossAppDomainData(int domainId)
|
||||
{
|
||||
this._ContextID = 0;
|
||||
this._DomainID = domainId;
|
||||
this._processGuid = RemotingConfiguration.ProcessId;
|
||||
}
|
||||
|
||||
// Token: 0x170006F8 RID: 1784
|
||||
// (get) Token: 0x0600257F RID: 9599 RVA: 0x0007C87C File Offset: 0x0007AA7C
|
||||
internal int DomainID
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._DomainID;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170006F9 RID: 1785
|
||||
// (get) Token: 0x06002580 RID: 9600 RVA: 0x0007C884 File Offset: 0x0007AA84
|
||||
internal string ProcessID
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._processGuid;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000EB5 RID: 3765
|
||||
private object _ContextID;
|
||||
|
||||
// Token: 0x04000EB6 RID: 3766
|
||||
private int _DomainID;
|
||||
|
||||
// Token: 0x04000EB7 RID: 3767
|
||||
private string _processGuid;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Remoting.Contexts;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
using System.Threading;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
// Token: 0x0200039B RID: 923
|
||||
[MonoTODO("Handle domain unloading?")]
|
||||
internal class CrossAppDomainSink : IMessageSink
|
||||
{
|
||||
// Token: 0x0600258C RID: 9612 RVA: 0x0007C98C File Offset: 0x0007AB8C
|
||||
internal CrossAppDomainSink(int domainID)
|
||||
{
|
||||
this._domainID = domainID;
|
||||
}
|
||||
|
||||
// Token: 0x0600258E RID: 9614 RVA: 0x0007C9C4 File Offset: 0x0007ABC4
|
||||
internal static CrossAppDomainSink GetSink(int domainID)
|
||||
{
|
||||
object syncRoot = CrossAppDomainSink.s_sinks.SyncRoot;
|
||||
CrossAppDomainSink crossAppDomainSink;
|
||||
lock (syncRoot)
|
||||
{
|
||||
if (CrossAppDomainSink.s_sinks.ContainsKey(domainID))
|
||||
{
|
||||
crossAppDomainSink = (CrossAppDomainSink)CrossAppDomainSink.s_sinks[domainID];
|
||||
}
|
||||
else
|
||||
{
|
||||
CrossAppDomainSink crossAppDomainSink2 = new CrossAppDomainSink(domainID);
|
||||
CrossAppDomainSink.s_sinks[domainID] = crossAppDomainSink2;
|
||||
crossAppDomainSink = crossAppDomainSink2;
|
||||
}
|
||||
}
|
||||
return crossAppDomainSink;
|
||||
}
|
||||
|
||||
// Token: 0x170006FD RID: 1789
|
||||
// (get) Token: 0x0600258F RID: 9615 RVA: 0x0007CA5C File Offset: 0x0007AC5C
|
||||
internal int TargetDomainId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._domainID;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06002590 RID: 9616 RVA: 0x0007CA64 File Offset: 0x0007AC64
|
||||
private static CrossAppDomainSink.ProcessMessageRes ProcessMessageInDomain(byte[] arrRequest, CADMethodCallMessage cadMsg)
|
||||
{
|
||||
CrossAppDomainSink.ProcessMessageRes processMessageRes = default(CrossAppDomainSink.ProcessMessageRes);
|
||||
try
|
||||
{
|
||||
AppDomain.CurrentDomain.ProcessMessageInDomain(arrRequest, cadMsg, out processMessageRes.arrResponse, out processMessageRes.cadMrm);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
IMessage message = new MethodResponse(ex, new ErrorMessage());
|
||||
processMessageRes.arrResponse = CADSerializer.SerializeMessage(message).GetBuffer();
|
||||
}
|
||||
return processMessageRes;
|
||||
}
|
||||
|
||||
// Token: 0x06002591 RID: 9617 RVA: 0x0007CADC File Offset: 0x0007ACDC
|
||||
public virtual IMessage SyncProcessMessage(IMessage msgRequest)
|
||||
{
|
||||
IMessage message = null;
|
||||
try
|
||||
{
|
||||
byte[] array = null;
|
||||
byte[] array2 = null;
|
||||
CADMethodReturnMessage cadmethodReturnMessage = null;
|
||||
CADMethodCallMessage cadmethodCallMessage = CADMethodCallMessage.Create(msgRequest);
|
||||
if (cadmethodCallMessage == null)
|
||||
{
|
||||
MemoryStream memoryStream = CADSerializer.SerializeMessage(msgRequest);
|
||||
array2 = memoryStream.GetBuffer();
|
||||
}
|
||||
Context currentContext = Thread.CurrentContext;
|
||||
try
|
||||
{
|
||||
CrossAppDomainSink.ProcessMessageRes processMessageRes = (CrossAppDomainSink.ProcessMessageRes)AppDomain.InvokeInDomainByID(this._domainID, CrossAppDomainSink.processMessageMethod, null, new object[] { array2, cadmethodCallMessage });
|
||||
array = processMessageRes.arrResponse;
|
||||
cadmethodReturnMessage = processMessageRes.cadMrm;
|
||||
}
|
||||
finally
|
||||
{
|
||||
AppDomain.InternalSetContext(currentContext);
|
||||
}
|
||||
if (array != null)
|
||||
{
|
||||
MemoryStream memoryStream2 = new MemoryStream(array);
|
||||
message = CADSerializer.DeserializeMessage(memoryStream2, msgRequest as IMethodCallMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
message = new MethodResponse(msgRequest as IMethodCallMessage, cadmethodReturnMessage);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
try
|
||||
{
|
||||
message = new ReturnMessage(ex, msgRequest as IMethodCallMessage);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
// Token: 0x06002592 RID: 9618 RVA: 0x0007CBFC File Offset: 0x0007ADFC
|
||||
public virtual IMessageCtrl AsyncProcessMessage(IMessage reqMsg, IMessageSink replySink)
|
||||
{
|
||||
AsyncRequest asyncRequest = new AsyncRequest(reqMsg, replySink);
|
||||
ThreadPool.QueueUserWorkItem(new WaitCallback(this.SendAsyncMessage), asyncRequest);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Token: 0x06002593 RID: 9619 RVA: 0x0007CC28 File Offset: 0x0007AE28
|
||||
public void SendAsyncMessage(object data)
|
||||
{
|
||||
AsyncRequest asyncRequest = (AsyncRequest)data;
|
||||
IMessage message = this.SyncProcessMessage(asyncRequest.MsgRequest);
|
||||
asyncRequest.ReplySink.SyncProcessMessage(message);
|
||||
}
|
||||
|
||||
// Token: 0x170006FE RID: 1790
|
||||
// (get) Token: 0x06002594 RID: 9620 RVA: 0x0007CC58 File Offset: 0x0007AE58
|
||||
public IMessageSink NextSink
|
||||
{
|
||||
get
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000EBB RID: 3771
|
||||
private static Hashtable s_sinks = new Hashtable();
|
||||
|
||||
// Token: 0x04000EBC RID: 3772
|
||||
private static MethodInfo processMessageMethod = typeof(CrossAppDomainSink).GetMethod("ProcessMessageInDomain", BindingFlags.Static | BindingFlags.NonPublic);
|
||||
|
||||
// Token: 0x04000EBD RID: 3773
|
||||
private int _domainID;
|
||||
|
||||
// Token: 0x0200039C RID: 924
|
||||
private struct ProcessMessageRes
|
||||
{
|
||||
// Token: 0x04000EBE RID: 3774
|
||||
public byte[] arrResponse;
|
||||
|
||||
// Token: 0x04000EBF RID: 3775
|
||||
public CADMethodReturnMessage cadMrm;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
// Token: 0x02000396 RID: 918
|
||||
internal class ExceptionFilterSink : IMessageSink
|
||||
{
|
||||
// Token: 0x06002572 RID: 9586 RVA: 0x0007C6E0 File Offset: 0x0007A8E0
|
||||
public ExceptionFilterSink(IMessage call, IMessageSink next)
|
||||
{
|
||||
this._call = call;
|
||||
this._next = next;
|
||||
}
|
||||
|
||||
// Token: 0x06002573 RID: 9587 RVA: 0x0007C6F8 File Offset: 0x0007A8F8
|
||||
public IMessage SyncProcessMessage(IMessage msg)
|
||||
{
|
||||
return this._next.SyncProcessMessage(ChannelServices.CheckReturnMessage(this._call, msg));
|
||||
}
|
||||
|
||||
// Token: 0x06002574 RID: 9588 RVA: 0x0007C714 File Offset: 0x0007A914
|
||||
public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
|
||||
// Token: 0x170006F7 RID: 1783
|
||||
// (get) Token: 0x06002575 RID: 9589 RVA: 0x0007C71C File Offset: 0x0007A91C
|
||||
public IMessageSink NextSink
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._next;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000EAE RID: 3758
|
||||
private IMessageSink _next;
|
||||
|
||||
// Token: 0x04000EAF RID: 3759
|
||||
private IMessage _call;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides conduits for messages that cross remoting boundaries.</summary>
|
||||
// Token: 0x0200039F RID: 927
|
||||
[ComVisible(true)]
|
||||
public interface IChannel
|
||||
{
|
||||
/// <summary>Gets the name of the channel.</summary>
|
||||
/// <returns>The name of the channel.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x170006FF RID: 1791
|
||||
// (get) Token: 0x0600259B RID: 9627
|
||||
string ChannelName { get; }
|
||||
|
||||
/// <summary>Gets the priority of the channel.</summary>
|
||||
/// <returns>An integer that indicates the priority of the channel.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x17000700 RID: 1792
|
||||
// (get) Token: 0x0600259C RID: 9628
|
||||
int ChannelPriority { get; }
|
||||
|
||||
/// <summary>Returns the object URI as an out parameter, and the URI of the current channel as the return value.</summary>
|
||||
/// <returns>The URI of the current channel, or null if the URI does not belong to this channel.</returns>
|
||||
/// <param name="url">The URL of the object. </param>
|
||||
/// <param name="objectURI">When this method returns, contains a <see cref="T:System.String" /> that holds the object URI. This parameter is passed uninitialized. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x0600259D RID: 9629
|
||||
string Parse(string url, out string objectURI);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Stores channel data for the remoting channels.</summary>
|
||||
// Token: 0x020003A0 RID: 928
|
||||
[ComVisible(true)]
|
||||
public interface IChannelDataStore
|
||||
{
|
||||
/// <summary>Gets an array of channel URIs to which the current channel maps.</summary>
|
||||
/// <returns>An array of channel URIs to which the current channel maps.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x17000701 RID: 1793
|
||||
// (get) Token: 0x0600259E RID: 9630
|
||||
string[] ChannelUris { get; }
|
||||
|
||||
/// <summary>Gets or sets the data object associated with the specified key for the implementing channel.</summary>
|
||||
/// <returns>The specified data object for the implementing channel.</returns>
|
||||
/// <param name="key">The key the data object is associated with. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x17000702 RID: 1794
|
||||
object this[object key] { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides required functions and properties for the receiver channels.</summary>
|
||||
// Token: 0x020003A1 RID: 929
|
||||
[ComVisible(true)]
|
||||
public interface IChannelReceiver : IChannel
|
||||
{
|
||||
/// <summary>Gets the channel-specific data.</summary>
|
||||
/// <returns>The channel data.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x17000703 RID: 1795
|
||||
// (get) Token: 0x060025A1 RID: 9633
|
||||
object ChannelData { get; }
|
||||
|
||||
/// <summary>Returns an array of all the URLs for a URI.</summary>
|
||||
/// <returns>An array of the URLs.</returns>
|
||||
/// <param name="objectURI">The URI for which URLs are required. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025A2 RID: 9634
|
||||
string[] GetUrlsForUri(string objectURI);
|
||||
|
||||
/// <summary>Instructs the current channel to start listening for requests.</summary>
|
||||
/// <param name="data">Optional initialization information. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025A3 RID: 9635
|
||||
void StartListening(object data);
|
||||
|
||||
/// <summary>Instructs the current channel to stop listening for requests.</summary>
|
||||
/// <param name="data">Optional state information for the channel. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025A4 RID: 9636
|
||||
void StopListening(object data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Indicates that the implementing channel wants to hook into the outside listener service.</summary>
|
||||
// Token: 0x020003A2 RID: 930
|
||||
[ComVisible(true)]
|
||||
public interface IChannelReceiverHook
|
||||
{
|
||||
/// <summary>Gets the type of listener to hook into.</summary>
|
||||
/// <returns>The type of listener to hook into (for example, "http").</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x17000704 RID: 1796
|
||||
// (get) Token: 0x060025A5 RID: 9637
|
||||
string ChannelScheme { get; }
|
||||
|
||||
/// <summary>Gets the channel sink chain that the current channel is using.</summary>
|
||||
/// <returns>The channel sink chain that the current channel is using.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x17000705 RID: 1797
|
||||
// (get) Token: 0x060025A6 RID: 9638
|
||||
IServerChannelSink ChannelSinkChain { get; }
|
||||
|
||||
/// <summary>Gets a Boolean value that indicates whether <see cref="T:System.Runtime.Remoting.Channels.IChannelReceiverHook" /> needs to be hooked into the outside listener service.</summary>
|
||||
/// <returns>A Boolean value that indicates whether <see cref="T:System.Runtime.Remoting.Channels.IChannelReceiverHook" /> needs to be hooked into the outside listener service.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x17000706 RID: 1798
|
||||
// (get) Token: 0x060025A7 RID: 9639
|
||||
bool WantsToListen { get; }
|
||||
|
||||
/// <summary>Adds a URI on which the channel hook will listen.</summary>
|
||||
/// <param name="channelUri">A URI on which the channel hook will listen. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025A8 RID: 9640
|
||||
void AddHookChannelUri(string channelUri);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides required functions and properties for the sender channels.</summary>
|
||||
// Token: 0x020003A3 RID: 931
|
||||
[ComVisible(true)]
|
||||
public interface IChannelSender : IChannel
|
||||
{
|
||||
/// <summary>Returns a channel message sink that delivers messages to the specified URL or channel data object.</summary>
|
||||
/// <returns>A channel message sink that delivers messages to the specified URL or channel data object, or null if the channel cannot connect to the given endpoint.</returns>
|
||||
/// <param name="url">The URL to which the new sink will deliver messages. Can be null. </param>
|
||||
/// <param name="remoteChannelData">The channel data object of the remote host to which the new sink will deliver messages. Can be null. </param>
|
||||
/// <param name="objectURI">When this method returns, contains a URI of the new channel message sink that delivers messages to the specified URL or channel data object. This parameter is passed uninitialized. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025A9 RID: 9641
|
||||
IMessageSink CreateMessageSink(string url, object remoteChannelData, out string objectURI);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides the base interface for channel sinks.</summary>
|
||||
// Token: 0x020003A4 RID: 932
|
||||
[ComVisible(true)]
|
||||
public interface IChannelSinkBase
|
||||
{
|
||||
/// <summary>Gets a dictionary through which properties on the sink can be accessed.</summary>
|
||||
/// <returns>A dictionary through which properties on the sink can be accessed, or null if the channel sink does not support properties.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x17000707 RID: 1799
|
||||
// (get) Token: 0x060025AA RID: 9642
|
||||
IDictionary Properties { get; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides required functions and properties for client channel sinks.</summary>
|
||||
// Token: 0x020003A5 RID: 933
|
||||
[ComVisible(true)]
|
||||
public interface IClientChannelSink : IChannelSinkBase
|
||||
{
|
||||
/// <summary>Gets the next client channel sink in the client sink chain.</summary>
|
||||
/// <returns>The next client channel sink in the client sink chain.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x17000708 RID: 1800
|
||||
// (get) Token: 0x060025AB RID: 9643
|
||||
IClientChannelSink NextChannelSink { get; }
|
||||
|
||||
/// <summary>Requests asynchronous processing of a method call on the current sink.</summary>
|
||||
/// <param name="sinkStack">A stack of channel sinks that called this sink. </param>
|
||||
/// <param name="msg">The message to process. </param>
|
||||
/// <param name="headers">The headers to add to the outgoing message heading to the server. </param>
|
||||
/// <param name="stream">The stream headed to the transport sink. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025AC RID: 9644
|
||||
void AsyncProcessRequest(IClientChannelSinkStack sinkStack, IMessage msg, ITransportHeaders headers, Stream stream);
|
||||
|
||||
/// <summary>Requests asynchronous processing of a response to a method call on the current sink.</summary>
|
||||
/// <param name="sinkStack">A stack of sinks that called this sink. </param>
|
||||
/// <param name="state">Information generated on the request side that is associated with this sink. </param>
|
||||
/// <param name="headers">The headers retrieved from the server response stream. </param>
|
||||
/// <param name="stream">The stream coming back from the transport sink. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025AD RID: 9645
|
||||
void AsyncProcessResponse(IClientResponseChannelSinkStack sinkStack, object state, ITransportHeaders headers, Stream stream);
|
||||
|
||||
/// <summary>Returns the <see cref="T:System.IO.Stream" /> onto which the provided message is to be serialized.</summary>
|
||||
/// <returns>The <see cref="T:System.IO.Stream" /> onto which the provided message is to be serialized.</returns>
|
||||
/// <param name="msg">The <see cref="T:System.Runtime.Remoting.Messaging.IMethodCallMessage" /> containing details about the method call. </param>
|
||||
/// <param name="headers">The headers to add to the outgoing message heading to the server. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025AE RID: 9646
|
||||
Stream GetRequestStream(IMessage msg, ITransportHeaders headers);
|
||||
|
||||
/// <summary>Requests message processing from the current sink.</summary>
|
||||
/// <param name="msg">The message to process. </param>
|
||||
/// <param name="requestHeaders">The headers to add to the outgoing message heading to the server. </param>
|
||||
/// <param name="requestStream">The stream headed to the transport sink. </param>
|
||||
/// <param name="responseHeaders">When this method returns, contains a <see cref="T:System.Runtime.Remoting.Channels.ITransportHeaders" /> interface that holds the headers that the server returned. This parameter is passed uninitialized. </param>
|
||||
/// <param name="responseStream">When this method returns, contains a <see cref="T:System.IO.Stream" /> coming back from the transport sink. This parameter is passed uninitialized. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025AF RID: 9647
|
||||
void ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, out ITransportHeaders responseHeaders, out Stream responseStream);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Creates client channel sinks for the client channel through which remoting messages flow.</summary>
|
||||
// Token: 0x020003A6 RID: 934
|
||||
[ComVisible(true)]
|
||||
public interface IClientChannelSinkProvider
|
||||
{
|
||||
/// <summary>Gets or sets the next sink provider in the channel sink provider chain.</summary>
|
||||
/// <returns>The next sink provider in the channel sink provider chain.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x17000709 RID: 1801
|
||||
// (get) Token: 0x060025B0 RID: 9648
|
||||
// (set) Token: 0x060025B1 RID: 9649
|
||||
IClientChannelSinkProvider Next { get; set; }
|
||||
|
||||
/// <summary>Creates a sink chain.</summary>
|
||||
/// <returns>The first sink of the newly formed channel sink chain, or null, which indicates that this provider will not or cannot provide a connection for this endpoint.</returns>
|
||||
/// <param name="channel">Channel for which the current sink chain is being constructed. </param>
|
||||
/// <param name="url">The URL of the object to connect to. This parameter can be null if the connection is based entirely on the information contained in the <paramref name="remoteChannelData" /> parameter. </param>
|
||||
/// <param name="remoteChannelData">A channel data object that describes a channel on the remote server. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025B2 RID: 9650
|
||||
IClientChannelSink CreateSink(IChannelSender channel, string url, object remoteChannelData);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides functionality for a stack of client channel sinks that must be invoked during an asynchronous message response decoding.</summary>
|
||||
// Token: 0x020003A7 RID: 935
|
||||
[ComVisible(true)]
|
||||
public interface IClientChannelSinkStack : IClientResponseChannelSinkStack
|
||||
{
|
||||
/// <summary>Pops the information associated with all the sinks from the sink stack up to and including the specified sink.</summary>
|
||||
/// <returns>Information generated on the request side and associated with the specified sink.</returns>
|
||||
/// <param name="sink">The sink to remove and return from the sink stack. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025B3 RID: 9651
|
||||
object Pop(IClientChannelSink sink);
|
||||
|
||||
/// <summary>Pushes the specified sink and information associated with it onto the sink stack.</summary>
|
||||
/// <param name="sink">The sink to push onto the sink stack. </param>
|
||||
/// <param name="state">Information generated on the request side that is needed on the response side. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025B4 RID: 9652
|
||||
void Push(IClientChannelSink sink, object state);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Marks a sink as a client formatter sink that serializes messages into a stream.</summary>
|
||||
// Token: 0x020003A8 RID: 936
|
||||
[ComVisible(true)]
|
||||
public interface IClientFormatterSink : IChannelSinkBase, IClientChannelSink, IMessageSink
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Marks a client channel sink provider as a client formatter sink provider.</summary>
|
||||
// Token: 0x020003A9 RID: 937
|
||||
[ComVisible(true)]
|
||||
public interface IClientFormatterSinkProvider : IClientChannelSinkProvider
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides the stack functionality for a stack of client response channel sinks that must be invoked during an asynchronous message response decoding.</summary>
|
||||
// Token: 0x020003AA RID: 938
|
||||
[ComVisible(true)]
|
||||
public interface IClientResponseChannelSinkStack
|
||||
{
|
||||
/// <summary>Requests asynchronous processing of a method call on the sinks in the current sink stack.</summary>
|
||||
/// <param name="headers">The headers retrieved from the server response stream. </param>
|
||||
/// <param name="stream">The stream coming back from the transport sink. </param>
|
||||
/// <exception cref="T:System.Runtime.Remoting.RemotingException">The current sink stack is empty. </exception>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025B5 RID: 9653
|
||||
void AsyncProcessResponse(ITransportHeaders headers, Stream stream);
|
||||
|
||||
/// <summary>Dispatches the specified exception on the reply sink.</summary>
|
||||
/// <param name="e">The exception to dispatch to the server. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025B6 RID: 9654
|
||||
void DispatchException(Exception e);
|
||||
|
||||
/// <summary>Dispatches the specified reply message on the reply sink.</summary>
|
||||
/// <param name="msg">The <see cref="T:System.Runtime.Remoting.Messaging.IMessage" /> to dispatch. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025B7 RID: 9655
|
||||
void DispatchReplyMessage(IMessage msg);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>The <see cref="T:System.Runtime.Remoting.Channels.ISecurableChannel" /> contains one property, <see cref="P:System.Runtime.Remoting.Channels.ISecurableChannel.IsSecured" />, which gets or sets a Boolean value that indicates whether the current channel is secure.</summary>
|
||||
// Token: 0x020003AB RID: 939
|
||||
public interface ISecurableChannel
|
||||
{
|
||||
/// <summary>Gets or sets a Boolean value that indicates whether the current channel is secure.</summary>
|
||||
/// <returns>A Boolean value that indicates whether the current channel is secure.</returns>
|
||||
// Token: 0x1700070A RID: 1802
|
||||
// (get) Token: 0x060025B8 RID: 9656
|
||||
// (set) Token: 0x060025B9 RID: 9657
|
||||
bool IsSecured { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides methods used for security and transport sinks.</summary>
|
||||
// Token: 0x020003AC RID: 940
|
||||
[ComVisible(true)]
|
||||
public interface IServerChannelSink : IChannelSinkBase
|
||||
{
|
||||
/// <summary>Gets the next server channel sink in the server sink chain.</summary>
|
||||
/// <returns>The next server channel sink in the server sink chain.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have the required <see cref="F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure" /> permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x1700070B RID: 1803
|
||||
// (get) Token: 0x060025BA RID: 9658
|
||||
IServerChannelSink NextChannelSink { get; }
|
||||
|
||||
/// <summary>Requests processing from the current sink of the response from a method call sent asynchronously.</summary>
|
||||
/// <param name="sinkStack">A stack of sinks leading back to the server transport sink. </param>
|
||||
/// <param name="state">Information generated on the request side that is associated with this sink. </param>
|
||||
/// <param name="msg">The response message. </param>
|
||||
/// <param name="headers">The headers to add to the return message heading to the client. </param>
|
||||
/// <param name="stream">The stream heading back to the transport sink. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025BB RID: 9659
|
||||
void AsyncProcessResponse(IServerResponseChannelSinkStack sinkStack, object state, IMessage msg, ITransportHeaders headers, Stream stream);
|
||||
|
||||
/// <summary>Returns the <see cref="T:System.IO.Stream" /> onto which the provided response message is to be serialized.</summary>
|
||||
/// <returns>The <see cref="T:System.IO.Stream" /> onto which the provided response message is to be serialized.</returns>
|
||||
/// <param name="sinkStack">A stack of sinks leading back to the server transport sink. </param>
|
||||
/// <param name="state">The state that has been pushed to the stack by this sink. </param>
|
||||
/// <param name="msg">The response message to serialize. </param>
|
||||
/// <param name="headers">The headers to put in the response stream to the client. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025BC RID: 9660
|
||||
Stream GetResponseStream(IServerResponseChannelSinkStack sinkStack, object state, IMessage msg, ITransportHeaders headers);
|
||||
|
||||
/// <summary>Requests message processing from the current sink.</summary>
|
||||
/// <returns>A <see cref="T:System.Runtime.Remoting.Channels.ServerProcessing" /> status value that provides information about how message was processed.</returns>
|
||||
/// <param name="sinkStack">A stack of channel sinks that called the current sink. </param>
|
||||
/// <param name="requestMsg">The message that contains the request. </param>
|
||||
/// <param name="requestHeaders">Headers retrieved from the incoming message from the client. </param>
|
||||
/// <param name="requestStream">The stream that needs to be to processed and passed on to the deserialization sink. </param>
|
||||
/// <param name="responseMsg">When this method returns, contains a <see cref="T:System.Runtime.Remoting.Messaging.IMessage" /> that holds the response message. This parameter is passed uninitialized. </param>
|
||||
/// <param name="responseHeaders">When this method returns, contains a <see cref="T:System.Runtime.Remoting.Channels.ITransportHeaders" /> that holds the headers that are to be added to return message heading to the client. This parameter is passed uninitialized. </param>
|
||||
/// <param name="responseStream">When this method returns, contains a <see cref="T:System.IO.Stream" /> that is heading back to the transport sink. This parameter is passed uninitialized. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025BD RID: 9661
|
||||
ServerProcessing ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, out IMessage responseMsg, out ITransportHeaders responseHeaders, out Stream responseStream);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Creates server channel sinks for the server channel through which remoting messages flow.</summary>
|
||||
// Token: 0x020003AD RID: 941
|
||||
[ComVisible(true)]
|
||||
public interface IServerChannelSinkProvider
|
||||
{
|
||||
/// <summary>Gets or sets the next sink provider in the channel sink provider chain.</summary>
|
||||
/// <returns>The next sink provider in the channel sink provider chain.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x1700070C RID: 1804
|
||||
// (get) Token: 0x060025BE RID: 9662
|
||||
// (set) Token: 0x060025BF RID: 9663
|
||||
IServerChannelSinkProvider Next { get; set; }
|
||||
|
||||
/// <summary>Creates a sink chain.</summary>
|
||||
/// <returns>The first sink of the newly formed channel sink chain, or null, which indicates that this provider will not or cannot provide a connection for this endpoint.</returns>
|
||||
/// <param name="channel">The channel for which to create the channel sink chain. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025C0 RID: 9664
|
||||
IServerChannelSink CreateSink(IChannelReceiver channel);
|
||||
|
||||
/// <summary>Returns the channel data for the channel that the current sink is associated with.</summary>
|
||||
/// <param name="channelData">A <see cref="T:System.Runtime.Remoting.Channels.IChannelDataStore" /> object in which the channel data is to be returned. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025C1 RID: 9665
|
||||
void GetChannelData(IChannelDataStore channelData);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides the stack functionality for a stack of server channel sinks.</summary>
|
||||
// Token: 0x020003AE RID: 942
|
||||
[ComVisible(true)]
|
||||
public interface IServerChannelSinkStack : IServerResponseChannelSinkStack
|
||||
{
|
||||
/// <summary>Pops the information associated with all the sinks from the sink stack up to and including the specified sink.</summary>
|
||||
/// <returns>Information generated on the request side and associated with the specified sink.</returns>
|
||||
/// <param name="sink">The sink to remove and return from the sink stack. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025C2 RID: 9666
|
||||
object Pop(IServerChannelSink sink);
|
||||
|
||||
/// <summary>Pushes the specified sink and information associated with it onto the sink stack.</summary>
|
||||
/// <param name="sink">The sink to push onto the sink stack. </param>
|
||||
/// <param name="state">Information generated on the request side that is needed on the response side. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025C3 RID: 9667
|
||||
void Push(IServerChannelSink sink, object state);
|
||||
|
||||
/// <summary>Presents a callback delegate to handle a callback after a message has been dispatched asynchronously. </summary>
|
||||
/// <param name="ar">The status and state of an asynchronous operation on a remote object.</param>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x060025C4 RID: 9668
|
||||
void ServerCallback(IAsyncResult ar);
|
||||
|
||||
/// <summary>Stores a message sink and its associated state for later asynchronous processing. </summary>
|
||||
/// <param name="sink">A server channel sink.</param>
|
||||
/// <param name="state">The state associated with <paramref name="sink" />.</param>
|
||||
// Token: 0x060025C5 RID: 9669
|
||||
void Store(IServerChannelSink sink, object state);
|
||||
|
||||
/// <summary>Stores a message sink and its associated state, and then dispatches a message asynchronously, using the sink just stored and any other stored sinks. </summary>
|
||||
/// <param name="sink">A server channel sink.</param>
|
||||
/// <param name="state">The state associated with <paramref name="sink" />.</param>
|
||||
// Token: 0x060025C6 RID: 9670
|
||||
void StoreAndDispatch(IServerChannelSink sink, object state);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Marks a server channel sink provider as a server formatter sink provider.</summary>
|
||||
// Token: 0x020003AF RID: 943
|
||||
[ComVisible(true)]
|
||||
public interface IServerFormatterSinkProvider : IServerChannelSinkProvider
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Provides the stack functionality for a stack of server response channel sinks.</summary>
|
||||
// Token: 0x020003B0 RID: 944
|
||||
[ComVisible(true)]
|
||||
public interface IServerResponseChannelSinkStack
|
||||
{
|
||||
/// <summary>Requests asynchronous processing of a method call on the sinks in the current sink stack.</summary>
|
||||
/// <param name="msg">The response message.</param>
|
||||
/// <param name="headers">The headers retrieved from the server response stream.</param>
|
||||
/// <param name="stream">The stream coming back from the transport sink.</param>
|
||||
// Token: 0x060025C7 RID: 9671
|
||||
void AsyncProcessResponse(IMessage msg, ITransportHeaders headers, Stream stream);
|
||||
|
||||
/// <summary>Returns the <see cref="T:System.IO.Stream" /> onto which the specified message is to be serialized.</summary>
|
||||
/// <returns>The <see cref="T:System.IO.Stream" /> onto which the specified message is to be serialized.</returns>
|
||||
/// <param name="msg">The message to be serialized onto the requested stream. </param>
|
||||
/// <param name="headers">The headers retrieved from the server response stream. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x060025C8 RID: 9672
|
||||
Stream GetResponseStream(IMessage msg, ITransportHeaders headers);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Stores a collection of headers used in the channel sinks.</summary>
|
||||
// Token: 0x020003B1 RID: 945
|
||||
[ComVisible(true)]
|
||||
public interface ITransportHeaders
|
||||
{
|
||||
/// <summary>Gets or sets a transport header associated with the given key.</summary>
|
||||
/// <returns>A transport header associated with the given key.</returns>
|
||||
/// <param name="key">The key the requested transport header is associated with. </param>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
// Token: 0x1700070D RID: 1805
|
||||
object this[object key] { get; set; }
|
||||
|
||||
/// <summary>Returns a <see cref="T:System.Collections.IEnumerator" /> that iterates over all entries in the <see cref="T:System.Runtime.Remoting.Channels.ITransportHeaders" /> object.</summary>
|
||||
/// <returns>A <see cref="T:System.Collections.IEnumerator" /> that iterates over all entries in the <see cref="T:System.Runtime.Remoting.Channels.ITransportHeaders" /> object.</returns>
|
||||
/// <exception cref="T:System.Security.SecurityException">The immediate caller does not have infrastructure permission. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x060025CB RID: 9675
|
||||
IEnumerator GetEnumerator();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Holds the stack of server channel sinks.</summary>
|
||||
// Token: 0x020003B2 RID: 946
|
||||
[ComVisible(true)]
|
||||
public class ServerChannelSinkStack : IServerChannelSinkStack, IServerResponseChannelSinkStack
|
||||
{
|
||||
/// <summary>Returns the <see cref="T:System.IO.Stream" /> onto which the specified message is to be serialized.</summary>
|
||||
/// <returns>The <see cref="T:System.IO.Stream" /> onto which the specified message is to be serialized.</returns>
|
||||
/// <param name="msg">The message to be serialized onto the requested stream. </param>
|
||||
/// <param name="headers">The headers retrieved from the server response stream. </param>
|
||||
/// <exception cref="T:System.Runtime.Remoting.RemotingException">The sink stack is empty. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x060025CD RID: 9677 RVA: 0x0007CD64 File Offset: 0x0007AF64
|
||||
public Stream GetResponseStream(IMessage msg, ITransportHeaders headers)
|
||||
{
|
||||
if (this._sinkStack == null)
|
||||
{
|
||||
throw new RemotingException("The sink stack is empty");
|
||||
}
|
||||
return ((IServerChannelSink)this._sinkStack.Sink).GetResponseStream(this, this._sinkStack.State, msg, headers);
|
||||
}
|
||||
|
||||
/// <summary>Pops the information associated with all the sinks from the sink stack up to and including the specified sink.</summary>
|
||||
/// <returns>Information generated on the request side and associated with the specified sink.</returns>
|
||||
/// <param name="sink">The sink to remove and return from the sink stack. </param>
|
||||
/// <exception cref="T:System.Runtime.Remoting.RemotingException">The current sink stack is empty, or the specified sink was never pushed onto the current stack. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x060025CE RID: 9678 RVA: 0x0007CDA0 File Offset: 0x0007AFA0
|
||||
public object Pop(IServerChannelSink sink)
|
||||
{
|
||||
while (this._sinkStack != null)
|
||||
{
|
||||
ChanelSinkStackEntry sinkStack = this._sinkStack;
|
||||
this._sinkStack = this._sinkStack.Next;
|
||||
if (sinkStack.Sink == sink)
|
||||
{
|
||||
return sinkStack.State;
|
||||
}
|
||||
}
|
||||
throw new RemotingException("The current sink stack is empty, or the specified sink was never pushed onto the current stack");
|
||||
}
|
||||
|
||||
/// <summary>Pushes the specified sink and information associated with it onto the sink stack.</summary>
|
||||
/// <param name="sink">The sink to push onto the sink stack. </param>
|
||||
/// <param name="state">Information generated on the request side that is needed on the response side. </param>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x060025CF RID: 9679 RVA: 0x0007CDF4 File Offset: 0x0007AFF4
|
||||
public void Push(IServerChannelSink sink, object state)
|
||||
{
|
||||
this._sinkStack = new ChanelSinkStackEntry(sink, state, this._sinkStack);
|
||||
}
|
||||
|
||||
/// <summary>Provides a <see cref="T:System.AsyncCallback" /> delegate to handle a callback after a message has been dispatched asynchronously. </summary>
|
||||
/// <param name="ar">The status and state of an asynchronous operation on a remote object.</param>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="MemberAccess" />
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x060025D0 RID: 9680 RVA: 0x0007CE0C File Offset: 0x0007B00C
|
||||
[MonoTODO]
|
||||
public void ServerCallback(IAsyncResult ar)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <summary>Stores a message sink and its associated state for later asynchronous processing. </summary>
|
||||
/// <param name="sink">A server channel sink.</param>
|
||||
/// <param name="state">The state associated with <paramref name="sink" />.</param>
|
||||
/// <exception cref="T:System.Runtime.Remoting.RemotingException">The current sink stack is empty.-or-The specified sink was never pushed onto the current stack. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x060025D1 RID: 9681 RVA: 0x0007CE14 File Offset: 0x0007B014
|
||||
[MonoTODO]
|
||||
public void Store(IServerChannelSink sink, object state)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <summary>Stores a message sink and its associated state, and then dispatches a message asynchronously, using the sink just stored and any other stored sinks. </summary>
|
||||
/// <param name="sink">A server channel sink.</param>
|
||||
/// <param name="state">The state associated with <paramref name="sink" />.</param>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x060025D2 RID: 9682 RVA: 0x0007CE1C File Offset: 0x0007B01C
|
||||
[MonoTODO]
|
||||
public void StoreAndDispatch(IServerChannelSink sink, object state)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <summary>Requests asynchronous processing of a method call on the sinks in the current sink stack.</summary>
|
||||
/// <param name="msg">The message to be serialized onto the requested stream.</param>
|
||||
/// <param name="headers">The headers retrieved from the server response stream. </param>
|
||||
/// <param name="stream">The stream coming back from the transport sink. </param>
|
||||
/// <exception cref="T:System.Runtime.Remoting.RemotingException">The current sink stack is empty. </exception>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x060025D3 RID: 9683 RVA: 0x0007CE24 File Offset: 0x0007B024
|
||||
public void AsyncProcessResponse(IMessage msg, ITransportHeaders headers, Stream stream)
|
||||
{
|
||||
if (this._sinkStack == null)
|
||||
{
|
||||
throw new RemotingException("The current sink stack is empty");
|
||||
}
|
||||
ChanelSinkStackEntry sinkStack = this._sinkStack;
|
||||
this._sinkStack = this._sinkStack.Next;
|
||||
((IServerChannelSink)sinkStack.Sink).AsyncProcessResponse(this, sinkStack.State, msg, headers, stream);
|
||||
}
|
||||
|
||||
// Token: 0x04000EC2 RID: 3778
|
||||
private ChanelSinkStackEntry _sinkStack;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
// Token: 0x020003B3 RID: 947
|
||||
internal class ServerDispatchSink : IChannelSinkBase, IServerChannelSink
|
||||
{
|
||||
// Token: 0x1700070E RID: 1806
|
||||
// (get) Token: 0x060025D5 RID: 9685 RVA: 0x0007CE84 File Offset: 0x0007B084
|
||||
public IServerChannelSink NextChannelSink
|
||||
{
|
||||
get
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700070F RID: 1807
|
||||
// (get) Token: 0x060025D6 RID: 9686 RVA: 0x0007CE88 File Offset: 0x0007B088
|
||||
public IDictionary Properties
|
||||
{
|
||||
get
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060025D7 RID: 9687 RVA: 0x0007CE8C File Offset: 0x0007B08C
|
||||
public void AsyncProcessResponse(IServerResponseChannelSinkStack sinkStack, object state, IMessage msg, ITransportHeaders headers, Stream stream)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
// Token: 0x060025D8 RID: 9688 RVA: 0x0007CE94 File Offset: 0x0007B094
|
||||
public Stream GetResponseStream(IServerResponseChannelSinkStack sinkStack, object state, IMessage msg, ITransportHeaders headers)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Token: 0x060025D9 RID: 9689 RVA: 0x0007CE98 File Offset: 0x0007B098
|
||||
public ServerProcessing ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, out IMessage responseMsg, out ITransportHeaders responseHeaders, out Stream responseStream)
|
||||
{
|
||||
responseHeaders = null;
|
||||
responseStream = null;
|
||||
return ChannelServices.DispatchMessage(sinkStack, requestMsg, out responseMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
// Token: 0x020003B4 RID: 948
|
||||
internal class ServerDispatchSinkProvider : IServerChannelSinkProvider, IServerFormatterSinkProvider
|
||||
{
|
||||
// Token: 0x060025DA RID: 9690 RVA: 0x0007CEAC File Offset: 0x0007B0AC
|
||||
public ServerDispatchSinkProvider()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x060025DB RID: 9691 RVA: 0x0007CEB4 File Offset: 0x0007B0B4
|
||||
public ServerDispatchSinkProvider(IDictionary properties, ICollection providerData)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x17000710 RID: 1808
|
||||
// (get) Token: 0x060025DC RID: 9692 RVA: 0x0007CEBC File Offset: 0x0007B0BC
|
||||
// (set) Token: 0x060025DD RID: 9693 RVA: 0x0007CEC0 File Offset: 0x0007B0C0
|
||||
public IServerChannelSinkProvider Next
|
||||
{
|
||||
get
|
||||
{
|
||||
return null;
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x060025DE RID: 9694 RVA: 0x0007CEC8 File Offset: 0x0007B0C8
|
||||
public IServerChannelSink CreateSink(IChannelReceiver channel)
|
||||
{
|
||||
return new ServerDispatchSink();
|
||||
}
|
||||
|
||||
// Token: 0x060025DF RID: 9695 RVA: 0x0007CED0 File Offset: 0x0007B0D0
|
||||
public void GetChannelData(IChannelDataStore channelData)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Indicates the status of the server message processing.</summary>
|
||||
// Token: 0x020003B5 RID: 949
|
||||
[ComVisible(true)]
|
||||
[Serializable]
|
||||
public enum ServerProcessing
|
||||
{
|
||||
/// <summary>The server synchronously processed the message.</summary>
|
||||
// Token: 0x04000EC4 RID: 3780
|
||||
Complete,
|
||||
/// <summary>The message was dispatched and no response can be sent.</summary>
|
||||
// Token: 0x04000EC5 RID: 3781
|
||||
OneWay,
|
||||
/// <summary>The call was dispatched asynchronously, which indicates that the sink must store response data on the stack for later processing.</summary>
|
||||
// Token: 0x04000EC6 RID: 3782
|
||||
Async
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Stores sink provider data for sink providers.</summary>
|
||||
// Token: 0x020003B6 RID: 950
|
||||
[ComVisible(true)]
|
||||
public class SinkProviderData
|
||||
{
|
||||
/// <summary>Initializes a new instance of the <see cref="T:System.Runtime.Remoting.Channels.SinkProviderData" /> class.</summary>
|
||||
/// <param name="name">The name of the sink provider that the data in the current <see cref="T:System.Runtime.Remoting.Channels.SinkProviderData" /> object is associated with. </param>
|
||||
// Token: 0x060025E0 RID: 9696 RVA: 0x0007CED4 File Offset: 0x0007B0D4
|
||||
public SinkProviderData(string name)
|
||||
{
|
||||
this.sinkName = name;
|
||||
this.children = new ArrayList();
|
||||
this.properties = new Hashtable();
|
||||
}
|
||||
|
||||
/// <summary>Gets a list of the child <see cref="T:System.Runtime.Remoting.Channels.SinkProviderData" /> nodes.</summary>
|
||||
/// <returns>A <see cref="T:System.Collections.IList" /> of the child <see cref="T:System.Runtime.Remoting.Channels.SinkProviderData" /> nodes.</returns>
|
||||
// Token: 0x17000711 RID: 1809
|
||||
// (get) Token: 0x060025E1 RID: 9697 RVA: 0x0007CEFC File Offset: 0x0007B0FC
|
||||
public IList Children
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.children;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Gets the name of the sink provider that the data in the current <see cref="T:System.Runtime.Remoting.Channels.SinkProviderData" /> object is associated with.</summary>
|
||||
/// <returns>A <see cref="T:System.String" /> with the name of the XML node that the data in the current <see cref="T:System.Runtime.Remoting.Channels.SinkProviderData" /> object is associated with.</returns>
|
||||
// Token: 0x17000712 RID: 1810
|
||||
// (get) Token: 0x060025E2 RID: 9698 RVA: 0x0007CF04 File Offset: 0x0007B104
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.sinkName;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Gets a dictionary through which properties on the sink provider can be accessed.</summary>
|
||||
/// <returns>A dictionary through which properties on the sink provider can be accessed.</returns>
|
||||
// Token: 0x17000713 RID: 1811
|
||||
// (get) Token: 0x060025E3 RID: 9699 RVA: 0x0007CF0C File Offset: 0x0007B10C
|
||||
public IDictionary Properties
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.properties;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000EC7 RID: 3783
|
||||
private string sinkName;
|
||||
|
||||
// Token: 0x04000EC8 RID: 3784
|
||||
private ArrayList children;
|
||||
|
||||
// Token: 0x04000EC9 RID: 3785
|
||||
private Hashtable properties;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Runtime.Remoting.Channels
|
||||
{
|
||||
/// <summary>Stores a collection of headers used in the channel sinks.</summary>
|
||||
// Token: 0x020003B7 RID: 951
|
||||
[ComVisible(true)]
|
||||
[MonoTODO("Serialization format not compatible with .NET")]
|
||||
[Serializable]
|
||||
public class TransportHeaders : ITransportHeaders
|
||||
{
|
||||
/// <summary>Initializes a new instance of the <see cref="T:System.Runtime.Remoting.Channels.TransportHeaders" /> class.</summary>
|
||||
// Token: 0x060025E4 RID: 9700 RVA: 0x0007CF14 File Offset: 0x0007B114
|
||||
public TransportHeaders()
|
||||
{
|
||||
this.hash_table = new Hashtable(CaseInsensitiveHashCodeProvider.DefaultInvariant, CaseInsensitiveComparer.DefaultInvariant);
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets a transport header that is associated with the given key.</summary>
|
||||
/// <returns>A transport header that is associated with the given key, or null if the key was not found.</returns>
|
||||
/// <param name="key">The <see cref="T:System.String" /> that the requested header is associated with. </param>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x17000714 RID: 1812
|
||||
public object this[object key]
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.hash_table[key];
|
||||
}
|
||||
set
|
||||
{
|
||||
this.hash_table[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Returns an enumerator of the stored transport headers.</summary>
|
||||
/// <returns>An enumerator of the stored transport headers.</returns>
|
||||
/// <PermissionSet>
|
||||
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Infrastructure" />
|
||||
/// </PermissionSet>
|
||||
// Token: 0x060025E7 RID: 9703 RVA: 0x0007CF54 File Offset: 0x0007B154
|
||||
public IEnumerator GetEnumerator()
|
||||
{
|
||||
return this.hash_table.GetEnumerator();
|
||||
}
|
||||
|
||||
// Token: 0x04000ECA RID: 3786
|
||||
private Hashtable hash_table;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user