Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / ThreadSafeMessageFilterTable.cs / 1 / ThreadSafeMessageFilterTable.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Dispatcher
{
using System;
using System.Threading;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Collections;
using System.Collections.Generic;
internal class ThreadSafeMessageFilterTable : IMessageFilterTable
{
MessageFilterTable table;
object syncRoot;
internal ThreadSafeMessageFilterTable()
{
this.table = new MessageFilterTable();
this.syncRoot = new object();
}
internal object SyncRoot
{
get { return this.syncRoot; }
}
public int DefaultPriority
{
get
{
lock (this.syncRoot)
{
return this.table.DefaultPriority;
}
}
set
{
lock (this.syncRoot)
{
this.table.DefaultPriority = value;
}
}
}
internal void Add(MessageFilter filter, FilterData data, int priority)
{
lock (this.syncRoot)
{
this.table.Add(filter, data, priority);
}
}
//
// IMessageFilterTable methods
//
public int Count
{
get
{
lock (this.syncRoot)
{
return this.table.Count;
}
}
}
public void Clear()
{
lock (this.syncRoot)
{
this.table.Clear();
}
}
public bool GetMatchingValue(Message message, out FilterData data)
{
lock (this.syncRoot)
{
return this.table.GetMatchingValue(message, out data);
}
}
public bool GetMatchingValue(MessageBuffer buffer, out FilterData data)
{
lock (this.syncRoot)
{
return this.table.GetMatchingValue(buffer, out data);
}
}
public bool GetMatchingValues(Message message, ICollection results)
{
lock (this.syncRoot)
{
return this.table.GetMatchingValues(message, results);
}
}
public bool GetMatchingValues(MessageBuffer buffer, ICollection results)
{
lock (this.syncRoot)
{
return this.table.GetMatchingValues(buffer, results);
}
}
public bool GetMatchingFilter(Message message, out MessageFilter filter)
{
lock (this.syncRoot)
{
return this.table.GetMatchingFilter(message, out filter);
}
}
public bool GetMatchingFilter(MessageBuffer buffer, out MessageFilter filter)
{
lock (this.syncRoot)
{
return this.table.GetMatchingFilter(buffer, out filter);
}
}
public bool GetMatchingFilters(Message message, ICollection results)
{
lock (this.syncRoot)
{
return this.table.GetMatchingFilters(message, results);
}
}
public bool GetMatchingFilters(MessageBuffer buffer, ICollection results)
{
lock (this.syncRoot)
{
return this.table.GetMatchingFilters(buffer, results);
}
}
//
// IDictionary methods
//
public FilterData this[MessageFilter key]
{
get
{
lock (this.syncRoot)
{
return this.table[key];
}
}
set
{
lock (this.syncRoot)
{
this.table[key] = value;
}
}
}
public ICollection Keys
{
get
{
lock (this.syncRoot)
{
return this.table.Keys;
}
}
}
public ICollection Values
{
get
{
lock (this.syncRoot)
{
return this.table.Values;
}
}
}
public bool ContainsKey(MessageFilter key)
{
lock (this.syncRoot)
{
return this.table.ContainsKey(key);
}
}
public void Add(MessageFilter key, FilterData value)
{
lock (this.syncRoot)
{
this.table.Add(key, value);
}
}
public bool Remove(MessageFilter key)
{
lock (this.syncRoot)
{
return this.table.Remove(key);
}
}
//
// ICollection> methods
//
bool ICollection>.IsReadOnly
{
get
{
lock (this.syncRoot)
{
return ((ICollection>)this.table).IsReadOnly;
}
}
}
void ICollection>.Add(KeyValuePair item)
{
lock (this.syncRoot)
{
((ICollection>)this.table).Add(item);
}
}
bool ICollection>.Contains(KeyValuePair item)
{
lock (this.syncRoot)
{
return ((ICollection>)this.table).Contains(item);
}
}
void ICollection>.CopyTo(KeyValuePair[] array, int arrayIndex)
{
lock (this.syncRoot)
{
((ICollection>)this.table).CopyTo(array, arrayIndex);
}
}
bool ICollection>.Remove(KeyValuePair item)
{
lock (this.syncRoot)
{
return ((ICollection>)this.table).Remove(item);
}
}
IEnumerator IEnumerable.GetEnumerator()
{
lock (this.syncRoot)
{
return ((IEnumerable>)this).GetEnumerator();
}
}
IEnumerator> IEnumerable>.GetEnumerator()
{
lock (this.syncRoot)
{
return ((ICollection>)this.table).GetEnumerator();
}
}
public bool TryGetValue(MessageFilter filter, out FilterData data)
{
lock (this.syncRoot)
{
return this.table.TryGetValue(filter, out data);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- IncrementalHitTester.cs
- DeviceSpecificChoiceCollection.cs
- UmAlQuraCalendar.cs
- OptimalBreakSession.cs
- RefreshPropertiesAttribute.cs
- DateTimeOffsetConverter.cs
- XhtmlBasicCommandAdapter.cs
- PenCursorManager.cs
- HttpModuleActionCollection.cs
- ClientScriptItem.cs
- ContentPlaceHolder.cs
- SqlTypeSystemProvider.cs
- Rect3DConverter.cs
- TargetFrameworkUtil.cs
- Table.cs
- XmlFileEditor.cs
- OptionUsage.cs
- ShadowGlyph.cs
- MailDefinitionBodyFileNameEditor.cs
- WorkflowItemPresenter.cs
- Bold.cs
- BinaryParser.cs
- ConfigurationStrings.cs
- _Rfc2616CacheValidators.cs
- FtpWebRequest.cs
- DoubleAnimationClockResource.cs
- CategoryNameCollection.cs
- AuthenticationModulesSection.cs
- ButtonBaseDesigner.cs
- HandleCollector.cs
- CommandExpr.cs
- UdpTransportSettings.cs
- RIPEMD160Managed.cs
- XmlLanguageConverter.cs
- MulticastOption.cs
- SSmlParser.cs
- DataRecordInternal.cs
- DetailsViewRow.cs
- smtppermission.cs
- ClientSettingsSection.cs
- CallSite.cs
- GlobalProxySelection.cs
- EntityDesignerUtils.cs
- Effect.cs
- ProviderBase.cs
- Expression.cs
- SelectionProviderWrapper.cs
- OleDbSchemaGuid.cs
- Model3DCollection.cs
- SymbolType.cs
- MethodToken.cs
- BaseDataBoundControl.cs
- Propagator.cs
- CodeActivityMetadata.cs
- LicenseException.cs
- DataGridLinkButton.cs
- IpcServerChannel.cs
- InstanceCreationEditor.cs
- HMACMD5.cs
- IncrementalHitTester.cs
- Margins.cs
- FilterQuery.cs
- ISO2022Encoding.cs
- SecurityAlgorithmSuiteConverter.cs
- LineSegment.cs
- InputElement.cs
- JsonFormatReaderGenerator.cs
- XmlSchemas.cs
- Base64Decoder.cs
- ItemsControl.cs
- ImmutableObjectAttribute.cs
- AttributeCollection.cs
- sqlnorm.cs
- HtmlMeta.cs
- SQLBinary.cs
- NamespaceEmitter.cs
- SelectionService.cs
- entityreference_tresulttype.cs
- InstanceLockTracking.cs
- KeyInterop.cs
- QueryConverter.cs
- DataGridViewDataConnection.cs
- MDIControlStrip.cs
- TripleDES.cs
- BinHexDecoder.cs
- VScrollBar.cs
- SQLDoubleStorage.cs
- CodeIdentifier.cs
- AssemblyAttributes.cs
- GlobalProxySelection.cs
- SortedSetDebugView.cs
- BitStack.cs
- BoolLiteral.cs
- SessionPageStateSection.cs
- SystemUnicastIPAddressInformation.cs
- BaseCodePageEncoding.cs
- MD5.cs
- EventKeyword.cs
- ObjectTokenCategory.cs
- StyleXamlTreeBuilder.cs