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
- ContentFileHelper.cs
- MatcherBuilder.cs
- DelegatedStream.cs
- DefaultEventAttribute.cs
- CharacterBufferReference.cs
- DocumentScope.cs
- WorkItem.cs
- PropertyNames.cs
- RenderingEventArgs.cs
- OciHandle.cs
- EntityTypeBase.cs
- BuildProvider.cs
- TypeBuilder.cs
- WebPartVerbsEventArgs.cs
- FontFamilyValueSerializer.cs
- DataGridPreparingCellForEditEventArgs.cs
- IsolatedStoragePermission.cs
- GridView.cs
- RectangleConverter.cs
- SoapProcessingBehavior.cs
- ProfessionalColors.cs
- BatchParser.cs
- EmptyCollection.cs
- WriteLine.cs
- SequenceNumber.cs
- ConfigurationPropertyCollection.cs
- XsdBuilder.cs
- Help.cs
- Documentation.cs
- QueueProcessor.cs
- VariableExpressionConverter.cs
- DataFieldConverter.cs
- UpdateTracker.cs
- SmuggledIUnknown.cs
- ListViewInsertEventArgs.cs
- ExpressionBuilderContext.cs
- ReadContentAsBinaryHelper.cs
- ISAPIRuntime.cs
- DesignerAttribute.cs
- TemplateContainer.cs
- SynthesizerStateChangedEventArgs.cs
- VSWCFServiceContractGenerator.cs
- Zone.cs
- UdpMessageProperty.cs
- XmlEncodedRawTextWriter.cs
- LocalizationComments.cs
- NodeInfo.cs
- SslStream.cs
- ConfigurationSchemaErrors.cs
- GridViewEditEventArgs.cs
- WebPartAddingEventArgs.cs
- PeerNode.cs
- FixedDocument.cs
- AnonymousIdentificationSection.cs
- COM2ColorConverter.cs
- TripleDES.cs
- WizardStepBase.cs
- DataColumnCollection.cs
- RijndaelManaged.cs
- ColorTransform.cs
- WebPartZone.cs
- CharAnimationBase.cs
- BindingContext.cs
- ConfigurationStrings.cs
- FormsIdentity.cs
- CodeFieldReferenceExpression.cs
- SpanIndex.cs
- UserPersonalizationStateInfo.cs
- ImageCodecInfoPrivate.cs
- SizeConverter.cs
- SafeViewOfFileHandle.cs
- EnvelopedPkcs7.cs
- QueuePropertyVariants.cs
- WmpBitmapEncoder.cs
- WindowsScroll.cs
- RouteItem.cs
- Executor.cs
- CodeMemberField.cs
- precedingsibling.cs
- AuthenticationService.cs
- PaintValueEventArgs.cs
- HtmlSelect.cs
- SmtpNetworkElement.cs
- ObjectStateEntryDbDataRecord.cs
- EntityContainerRelationshipSet.cs
- FixedDocument.cs
- TypographyProperties.cs
- ColorIndependentAnimationStorage.cs
- SamlAssertion.cs
- MailMessage.cs
- CompositeDataBoundControl.cs
- XmlWhitespace.cs
- Variant.cs
- FunctionGenerator.cs
- XmlElementList.cs
- VerificationException.cs
- documentsequencetextpointer.cs
- ObjectDataSourceMethodEventArgs.cs
- StylusButtonEventArgs.cs
- WindowsScrollBar.cs