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
- OdbcRowUpdatingEvent.cs
- Int32RectValueSerializer.cs
- OleDbEnumerator.cs
- shaperfactoryquerycacheentry.cs
- WindowsPrincipal.cs
- columnmapfactory.cs
- ClientScriptItem.cs
- XmlUrlResolver.cs
- ActiveXSerializer.cs
- CodeSnippetTypeMember.cs
- InternalDispatchObject.cs
- ToolStripLabel.cs
- AppDomainProtocolHandler.cs
- ListControlStringCollectionEditor.cs
- HttpModulesSection.cs
- Object.cs
- RandomNumberGenerator.cs
- CommonDialog.cs
- ListParagraph.cs
- AttributeUsageAttribute.cs
- DataGridViewCell.cs
- Win32NamedPipes.cs
- IriParsingElement.cs
- InputScope.cs
- EventsTab.cs
- CircleHotSpot.cs
- SourceSwitch.cs
- NativeMsmqMessage.cs
- StorageFunctionMapping.cs
- HandleCollector.cs
- SQLString.cs
- ScriptingAuthenticationServiceSection.cs
- BinaryMethodMessage.cs
- OptimalTextSource.cs
- SetterBase.cs
- FrameworkContentElement.cs
- MethodAccessException.cs
- RewritingProcessor.cs
- XPathNavigatorReader.cs
- GridViewColumnHeader.cs
- BinaryWriter.cs
- WindowsStatic.cs
- DateBoldEvent.cs
- DebuggerAttributes.cs
- AssemblyFilter.cs
- QilTernary.cs
- DefaultTextStore.cs
- SqlDataSource.cs
- PauseStoryboard.cs
- AsymmetricSignatureDeformatter.cs
- KeyFrames.cs
- RectangleHotSpot.cs
- Visual3D.cs
- WorkflowRuntimeServiceElement.cs
- DetailsViewPagerRow.cs
- DropDownList.cs
- WorkflowInstance.cs
- PassportAuthentication.cs
- PathFigureCollectionValueSerializer.cs
- TrackPoint.cs
- CodeStatementCollection.cs
- PowerModeChangedEventArgs.cs
- MatchingStyle.cs
- DataObject.cs
- parserscommon.cs
- PointAnimationUsingKeyFrames.cs
- IntPtr.cs
- ThemeDirectoryCompiler.cs
- StrongNameUtility.cs
- Configuration.cs
- Control.cs
- PeerCollaboration.cs
- StructureChangedEventArgs.cs
- ContextMenuService.cs
- PersonalizationProviderCollection.cs
- TextInfo.cs
- SQLMembershipProvider.cs
- DataGridViewCellStyleChangedEventArgs.cs
- NetSectionGroup.cs
- AnnotationResourceCollection.cs
- HtmlButton.cs
- ResizeGrip.cs
- ListViewContainer.cs
- CodeLinePragma.cs
- Span.cs
- LineSegment.cs
- Point3DAnimation.cs
- ParameterElement.cs
- ValidationManager.cs
- Grant.cs
- TracedNativeMethods.cs
- DbConnectionHelper.cs
- CheckBox.cs
- RawStylusInputReport.cs
- PerformanceCounterCategory.cs
- GroupDescription.cs
- _AutoWebProxyScriptHelper.cs
- MultiplexingFormatMapping.cs
- WSSecurityOneDotZeroSendSecurityHeader.cs
- GenericAuthenticationEventArgs.cs