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
- IdleTimeoutMonitor.cs
- HashSet.cs
- RemoteWebConfigurationHostStream.cs
- SchemaNames.cs
- LongValidatorAttribute.cs
- HtmlTextArea.cs
- XmlElementCollection.cs
- GeneralTransform3DTo2D.cs
- SecureEnvironment.cs
- UInt32.cs
- HtmlInputPassword.cs
- CollectionBase.cs
- CatalogZoneDesigner.cs
- LocationEnvironment.cs
- TranslateTransform3D.cs
- EdmConstants.cs
- ResourceAttributes.cs
- SimpleWebHandlerParser.cs
- GraphicsContainer.cs
- CryptoStream.cs
- ContourSegment.cs
- WebPartEditorApplyVerb.cs
- BuildProvider.cs
- HtmlControlAdapter.cs
- TheQuery.cs
- _IPv6Address.cs
- SqlDelegatedTransaction.cs
- JapaneseLunisolarCalendar.cs
- OpenTypeLayout.cs
- IdentityManager.cs
- IdentityValidationException.cs
- EventLogQuery.cs
- DmlSqlGenerator.cs
- DataGridViewCellCancelEventArgs.cs
- GenericWebPart.cs
- RuntimeCompatibilityAttribute.cs
- WebPartDescriptionCollection.cs
- AnnotationAuthorChangedEventArgs.cs
- ProfessionalColorTable.cs
- ClientConfigurationSystem.cs
- DataSvcMapFileSerializer.cs
- RegexBoyerMoore.cs
- Duration.cs
- EventSinkHelperWriter.cs
- LinqDataSourceContextData.cs
- SerializationInfoEnumerator.cs
- GcHandle.cs
- OleDbConnectionFactory.cs
- Zone.cs
- Exceptions.cs
- XsltLibrary.cs
- ECDiffieHellmanCngPublicKey.cs
- HtmlElementCollection.cs
- BaseCodePageEncoding.cs
- precedingquery.cs
- __ConsoleStream.cs
- CodeComment.cs
- ViewGenResults.cs
- EditBehavior.cs
- WizardDesigner.cs
- WmlSelectionListAdapter.cs
- COM2ExtendedBrowsingHandler.cs
- CompositeDuplexBindingElementImporter.cs
- GregorianCalendar.cs
- SpecialNameAttribute.cs
- Vector3DValueSerializer.cs
- SplineKeyFrames.cs
- SiteMapProvider.cs
- PersistenceTask.cs
- HtmlHead.cs
- ComponentEvent.cs
- DataGridViewBindingCompleteEventArgs.cs
- PerformanceCounterPermissionAttribute.cs
- SuppressMergeCheckAttribute.cs
- TableLayoutSettings.cs
- TypeFieldSchema.cs
- DataServiceConfiguration.cs
- MetaType.cs
- RoutingExtension.cs
- ProcessHostFactoryHelper.cs
- ContainerFilterService.cs
- TextSyndicationContentKindHelper.cs
- ParsedAttributeCollection.cs
- ToolStripPanelRow.cs
- AccessibleObject.cs
- ADMembershipUser.cs
- GroupDescription.cs
- SpinLock.cs
- ParseChildrenAsPropertiesAttribute.cs
- ResourceReader.cs
- ControlBindingsCollection.cs
- HtmlSelect.cs
- TrailingSpaceComparer.cs
- CodeAccessSecurityEngine.cs
- CommonProperties.cs
- SQLMoney.cs
- ReflectionServiceProvider.cs
- DragSelectionMessageFilter.cs
- FileDialog.cs
- QuaternionAnimation.cs