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
- ServiceHttpHandlerFactory.cs
- StorageBasedPackageProperties.cs
- Object.cs
- _LocalDataStoreMgr.cs
- UIElement3D.cs
- DrawTreeNodeEventArgs.cs
- FastEncoderWindow.cs
- EmbeddedMailObject.cs
- AdvancedBindingPropertyDescriptor.cs
- CryptoStream.cs
- CallbackValidator.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- Matrix.cs
- RadioButton.cs
- ParseChildrenAsPropertiesAttribute.cs
- MethodImplAttribute.cs
- MissingMethodException.cs
- AssociationSet.cs
- DesignerAttribute.cs
- SponsorHelper.cs
- ApplicationCommands.cs
- CipherData.cs
- relpropertyhelper.cs
- InputReferenceExpression.cs
- basenumberconverter.cs
- MailWebEventProvider.cs
- CommonObjectSecurity.cs
- EventListener.cs
- ExtendedPropertyDescriptor.cs
- RemotingConfigParser.cs
- MergeFailedEvent.cs
- ListViewItemMouseHoverEvent.cs
- StringAnimationUsingKeyFrames.cs
- BinaryConverter.cs
- GridPattern.cs
- MaskedTextBox.cs
- IPPacketInformation.cs
- BridgeDataRecord.cs
- HtmlInputSubmit.cs
- ParentQuery.cs
- RectangleHotSpot.cs
- ManagementScope.cs
- RNGCryptoServiceProvider.cs
- HttpCacheVaryByContentEncodings.cs
- MailAddressCollection.cs
- TypeLoadException.cs
- CompilerResults.cs
- ReadOnlyAttribute.cs
- VScrollBar.cs
- PageVisual.cs
- EventLogger.cs
- ReadOnlyDictionary.cs
- bindurihelper.cs
- BamlLocalizer.cs
- UpdatePanel.cs
- XmlSchemaAppInfo.cs
- XmlUTF8TextWriter.cs
- StringUtil.cs
- FilterableAttribute.cs
- GridViewSortEventArgs.cs
- RuleProcessor.cs
- ShimAsPublicXamlType.cs
- Quad.cs
- BitmapFrameDecode.cs
- DrawingContext.cs
- PeerInvitationResponse.cs
- sqlstateclientmanager.cs
- IdleTimeoutMonitor.cs
- CssStyleCollection.cs
- PtsHelper.cs
- NativeMethods.cs
- DocumentXPathNavigator.cs
- SynchronizedDispatch.cs
- SlotInfo.cs
- GroupDescription.cs
- InstanceKeyNotReadyException.cs
- VScrollBar.cs
- DataGridCellsPresenter.cs
- ViewLoader.cs
- CredentialSelector.cs
- _ConnectStream.cs
- OrthographicCamera.cs
- TreeViewItem.cs
- WebPartManagerInternals.cs
- ActivityStateQuery.cs
- Hex.cs
- Double.cs
- ListControlConvertEventArgs.cs
- ManipulationCompletedEventArgs.cs
- StringResourceManager.cs
- HttpVersion.cs
- BorderGapMaskConverter.cs
- ThrowHelper.cs
- UnsafeNativeMethods.cs
- WindowsFormsHostAutomationPeer.cs
- HtmlToClrEventProxy.cs
- BuildProviderCollection.cs
- ObfuscationAttribute.cs
- webbrowsersite.cs
- ProfileModule.cs