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
- oledbmetadatacollectionnames.cs
- MethodBuilder.cs
- ErrorStyle.cs
- ChangeTracker.cs
- CompModSwitches.cs
- UMPAttributes.cs
- SequentialActivityDesigner.cs
- New.cs
- DecoderExceptionFallback.cs
- CrossContextChannel.cs
- DictionarySectionHandler.cs
- DateTime.cs
- SafeSecurityHelper.cs
- ListDictionaryInternal.cs
- ScaleTransform.cs
- ParameterElement.cs
- TypeDescriptionProvider.cs
- InvokeProviderWrapper.cs
- ThicknessAnimation.cs
- ChtmlMobileTextWriter.cs
- CodeMethodInvokeExpression.cs
- HandlerElementCollection.cs
- StorageMappingFragment.cs
- ServicesUtilities.cs
- NotificationContext.cs
- WeakReference.cs
- ColumnMapVisitor.cs
- ManifestSignedXml.cs
- JoinElimination.cs
- WebPartDeleteVerb.cs
- TextRunProperties.cs
- ProviderUtil.cs
- Sequence.cs
- EventLogPermissionEntry.cs
- XamlPoint3DCollectionSerializer.cs
- EntityClientCacheKey.cs
- OrderedParallelQuery.cs
- WebServiceResponse.cs
- UnknownWrapper.cs
- ComAdminWrapper.cs
- Delay.cs
- EventBuilder.cs
- EntityRecordInfo.cs
- ChangePasswordAutoFormat.cs
- RolePrincipal.cs
- ExternalFile.cs
- ThemeableAttribute.cs
- ResolvedKeyFrameEntry.cs
- TimeSpanStorage.cs
- ControlHelper.cs
- URL.cs
- ToolBarTray.cs
- BinaryParser.cs
- ReflectionUtil.cs
- SafeHandles.cs
- JapaneseCalendar.cs
- SafeEventLogWriteHandle.cs
- SqlNodeTypeOperators.cs
- TreeNodeCollectionEditor.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- Quad.cs
- ResXResourceSet.cs
- UnitySerializationHolder.cs
- EncryptedKey.cs
- PermissionToken.cs
- HuffmanTree.cs
- UpdateException.cs
- SmtpFailedRecipientException.cs
- BulletChrome.cs
- UriWriter.cs
- GridViewUpdatedEventArgs.cs
- EllipseGeometry.cs
- DataSourceXmlElementAttribute.cs
- CodeDelegateCreateExpression.cs
- Span.cs
- Msmq.cs
- SqlEnums.cs
- Graph.cs
- PeerResolver.cs
- ThreadExceptionDialog.cs
- SqlCacheDependencySection.cs
- TextTreeText.cs
- WebPartCollection.cs
- InfoCardBaseException.cs
- Control.cs
- ConfigXmlDocument.cs
- IOException.cs
- Model3DGroup.cs
- OpCellTreeNode.cs
- HtmlInputReset.cs
- WSHttpTransportSecurityElement.cs
- TreeNodeEventArgs.cs
- XmlParser.cs
- AssertFilter.cs
- BinaryCommonClasses.cs
- CriticalFinalizerObject.cs
- ConditionCollection.cs
- XmlNodeList.cs
- RuntimeCompatibilityAttribute.cs
- FontDriver.cs