Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Messaging / System / Messaging / QueueAccessMode.cs / 1305376 / QueueAccessMode.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Messaging { using System.Diagnostics; using System; using System.Collections.Generic; using System.Messaging.Interop; ////// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue")] public enum QueueAccessMode { Send = NativeMethods.QUEUE_ACCESS_SEND, Peek = NativeMethods.QUEUE_ACCESS_PEEK, Receive = NativeMethods.QUEUE_ACCESS_RECEIVE, PeekAndAdmin = NativeMethods.QUEUE_ACCESS_PEEK | NativeMethods.QUEUE_ACCESS_ADMIN, ReceiveAndAdmin = NativeMethods.QUEUE_ACCESS_RECEIVE | NativeMethods.QUEUE_ACCESS_ADMIN, /// /// SendAndReceive is supported for compatibility only. /// SendAndReceive = NativeMethods.QUEUE_ACCESS_SEND | NativeMethods.QUEUE_ACCESS_RECEIVE, } internal class QueueAccessModeHolder { private QueueAccessMode accessMode; private static Dictionary/// Specifies what operations can be performed on the queue. /// ///holders = new Dictionary () ; private QueueAccessModeHolder(QueueAccessMode accessMode) { this.accessMode = accessMode; } /// /// public static QueueAccessModeHolder GetQueueAccessModeHolder(QueueAccessMode accessMode) { if (holders.ContainsKey(accessMode)) { return holders[accessMode]; } lock (holders) { QueueAccessModeHolder newHolder = new QueueAccessModeHolder(accessMode); holders[accessMode] = newHolder; return newHolder; } } public bool CanRead() { return (((accessMode & QueueAccessMode.Receive) != 0) || ((accessMode & QueueAccessMode.Peek) != 0)); } public bool CanWrite() { return ((accessMode & QueueAccessMode.Send) != 0); } public int GetReadAccessMode() { int result = (int)(accessMode & ~QueueAccessMode.Send); if (result != 0) return result; // this is fail-fast path, when we know right away that the operation is incompatible with access mode // AccessDenied can also happen in other cases, // (for example, when we try to receive on a queue opened only for peek. // We'll let MQReceiveMessage enforce these rules throw new MessageQueueException((int)MessageQueueErrorCode.AccessDenied); } public int GetWriteAccessMode() { int result = (int)(accessMode & QueueAccessMode.Send); if (result != 0) return result; // this is fail-fast path, when we know right away that the operation is incompatible with access mode // AccessDenied can also happen in other cases, // (for example, when we try to receive on a queue opened only for peek. // We'll let MQReceiveMessage enforce these rules throw new MessageQueueException((int)MessageQueueErrorCode.AccessDenied); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007./// Factory method for getting a QueueAccessModeHolder holder. For each accessMode, we want only one holder. /// ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EdmComplexTypeAttribute.cs
- configsystem.cs
- UshortList2.cs
- ProfileGroupSettingsCollection.cs
- ApplicationInfo.cs
- DirectoryRedirect.cs
- MarkupExtensionParser.cs
- XmlSchemaImport.cs
- CancelEventArgs.cs
- XmlToDatasetMap.cs
- HwndAppCommandInputProvider.cs
- SoundPlayerAction.cs
- URLMembershipCondition.cs
- WebSysDescriptionAttribute.cs
- PkcsMisc.cs
- ListBox.cs
- WizardPanelChangingEventArgs.cs
- ProcessInfo.cs
- DeploymentSection.cs
- FillRuleValidation.cs
- ReadWriteObjectLock.cs
- RegexParser.cs
- SafeSecurityHandles.cs
- Assembly.cs
- ClientRuntimeConfig.cs
- DataGridViewTextBoxCell.cs
- OdbcInfoMessageEvent.cs
- ToolboxItemCollection.cs
- XmlUnspecifiedAttribute.cs
- DisplayInformation.cs
- MembershipUser.cs
- ProcessModuleCollection.cs
- KeyInfo.cs
- Control.cs
- RandomNumberGenerator.cs
- Animatable.cs
- ButtonField.cs
- EqualityComparer.cs
- ContextMenuAutomationPeer.cs
- PasswordRecovery.cs
- WorkflowViewElement.cs
- ControlFilterExpression.cs
- CqlBlock.cs
- DeflateEmulationStream.cs
- UrlMappingsSection.cs
- EllipseGeometry.cs
- SmtpNtlmAuthenticationModule.cs
- M3DUtil.cs
- TemplateApplicationHelper.cs
- TimersDescriptionAttribute.cs
- _FixedSizeReader.cs
- LineVisual.cs
- AutoGeneratedFieldProperties.cs
- LongMinMaxAggregationOperator.cs
- StringReader.cs
- XpsFilter.cs
- TextSelection.cs
- MatrixKeyFrameCollection.cs
- AtomPub10CategoriesDocumentFormatter.cs
- WorkflowServiceAttributesTypeConverter.cs
- DesignSurfaceEvent.cs
- XmlSchemaDocumentation.cs
- BlockExpression.cs
- DataGridViewTextBoxColumn.cs
- DataGridViewRowConverter.cs
- BrowserDefinitionCollection.cs
- DataGridViewCellFormattingEventArgs.cs
- IdentityVerifier.cs
- BaseServiceProvider.cs
- RootNamespaceAttribute.cs
- DateTimeSerializationSection.cs
- CatalogZoneDesigner.cs
- EntityUtil.cs
- String.cs
- AssemblyCache.cs
- WebScriptMetadataMessageEncoderFactory.cs
- TextPatternIdentifiers.cs
- MeasureData.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- DataGridBoolColumn.cs
- DbConnectionPool.cs
- AlternationConverter.cs
- Composition.cs
- ProfileSettings.cs
- LinkedResourceCollection.cs
- HttpApplication.cs
- DebugHandleTracker.cs
- WebBrowserNavigatedEventHandler.cs
- XsdValidatingReader.cs
- FederatedMessageSecurityOverHttp.cs
- XPathNodeList.cs
- ObservableCollection.cs
- NativeMethods.cs
- EntityClassGenerator.cs
- RadioButtonFlatAdapter.cs
- TypeDependencyAttribute.cs
- ACE.cs
- BmpBitmapDecoder.cs
- x509store.cs
- SmiGettersStream.cs