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
- CodeDelegateInvokeExpression.cs
- MD5.cs
- InProcStateClientManager.cs
- MessageAction.cs
- CredentialManagerDialog.cs
- Zone.cs
- RegexTree.cs
- MenuTracker.cs
- ElapsedEventArgs.cs
- SrgsOneOf.cs
- Run.cs
- CatalogZoneBase.cs
- AsymmetricKeyExchangeDeformatter.cs
- DivideByZeroException.cs
- HtmlHistory.cs
- MergablePropertyAttribute.cs
- DataGridClipboardCellContent.cs
- WebZone.cs
- WebPartConnection.cs
- PreApplicationStartMethodAttribute.cs
- UnlockCardRequest.cs
- SpellerError.cs
- KnownTypes.cs
- KeyFrames.cs
- HostedTransportConfigurationManager.cs
- ProcessInfo.cs
- ContainerSelectorActiveEvent.cs
- MergePropertyDescriptor.cs
- CrossContextChannel.cs
- StateMachine.cs
- Stackframe.cs
- ExecutionContext.cs
- FixedStringLookup.cs
- Matrix3D.cs
- EntityKeyElement.cs
- DataErrorValidationRule.cs
- UnsafeNativeMethods.cs
- Visual3D.cs
- Timer.cs
- ContainerActivationHelper.cs
- LocationUpdates.cs
- AutomationPeer.cs
- AdapterUtil.cs
- BoundPropertyEntry.cs
- HttpHostedTransportConfiguration.cs
- XmlTypeMapping.cs
- CodeFieldReferenceExpression.cs
- SqlRowUpdatedEvent.cs
- SqlDataSourceCache.cs
- DbProviderSpecificTypePropertyAttribute.cs
- PluggableProtocol.cs
- AliasedSlot.cs
- VectorAnimationBase.cs
- ShaderEffect.cs
- UnsafeNativeMethods.cs
- RNGCryptoServiceProvider.cs
- IntellisenseTextBox.cs
- TemplateApplicationHelper.cs
- ExternalException.cs
- ListViewAutomationPeer.cs
- XmlDocumentType.cs
- MenuItemAutomationPeer.cs
- WeakEventManager.cs
- ObjectIDGenerator.cs
- BaseDataListPage.cs
- Int32AnimationBase.cs
- SQLDouble.cs
- GridViewHeaderRowPresenter.cs
- ActiveXContainer.cs
- InvalidOleVariantTypeException.cs
- ObjectItemNoOpAssemblyLoader.cs
- TypeUsage.cs
- Shape.cs
- MessageDecoder.cs
- WebZone.cs
- PixelShader.cs
- BrowserCapabilitiesFactory35.cs
- GridViewDeleteEventArgs.cs
- DataGridViewCheckBoxCell.cs
- XmlSchemaAttributeGroup.cs
- DocumentSchemaValidator.cs
- NativeMethods.cs
- AdornerDecorator.cs
- SqlDataSourceCache.cs
- XmlJsonWriter.cs
- WebPartConnectionsDisconnectVerb.cs
- TextDecorations.cs
- LabelInfo.cs
- DocumentXPathNavigator.cs
- Stylus.cs
- WebPartExportVerb.cs
- StylusOverProperty.cs
- FamilyCollection.cs
- EntryPointNotFoundException.cs
- IfJoinedCondition.cs
- InstanceKeyView.cs
- LayoutDump.cs
- ChannelRequirements.cs
- SqlDependencyListener.cs
- WebPartEventArgs.cs