This commit is contained in:
niko
2026-06-04 11:42:34 +02:00
parent f39ba70a9f
commit e720b98cd1
7488 changed files with 2493818 additions and 0 deletions
@@ -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;
}
}