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
- documentsequencetextpointer.cs
- TimeZone.cs
- InfoCardBaseException.cs
- FixedSOMElement.cs
- AttachedPropertyMethodSelector.cs
- ContextStack.cs
- WorkflowTimerService.cs
- DataListItemEventArgs.cs
- LinearGradientBrush.cs
- DispatchProxy.cs
- DoubleLinkListEnumerator.cs
- DesignerActionPropertyItem.cs
- GeometryGroup.cs
- CommonProperties.cs
- WebUtility.cs
- PrintDialog.cs
- PolyBezierSegmentFigureLogic.cs
- safex509handles.cs
- DependencyObject.cs
- CatalogZoneAutoFormat.cs
- DocumentPage.cs
- HandleRef.cs
- TypeToArgumentTypeConverter.cs
- TransactionContext.cs
- SelectionRange.cs
- SerializationEventsCache.cs
- RadialGradientBrush.cs
- GridItemPattern.cs
- SystemNetworkInterface.cs
- ColorTransformHelper.cs
- RegisteredDisposeScript.cs
- CheckedListBox.cs
- PageAdapter.cs
- PrimitiveCodeDomSerializer.cs
- LongValidatorAttribute.cs
- HotSpot.cs
- X509CertificateTrustedIssuerElement.cs
- OleDbConnectionInternal.cs
- TextServicesContext.cs
- ApplicationInterop.cs
- SafeNativeMethods.cs
- InvalidPrinterException.cs
- FilterException.cs
- ConfigurationSectionCollection.cs
- coordinator.cs
- SafeFileMappingHandle.cs
- SqlException.cs
- QueryableDataSourceEditData.cs
- ComplexPropertyEntry.cs
- SelectionProviderWrapper.cs
- GrammarBuilderWildcard.cs
- IpcServerChannel.cs
- ProjectionQueryOptionExpression.cs
- XmlStrings.cs
- LinkArea.cs
- NameTable.cs
- XmlTextReader.cs
- RequestSecurityTokenForGetBrowserToken.cs
- StringBuilder.cs
- MouseEvent.cs
- ExtendedPropertyCollection.cs
- ConfigurationStrings.cs
- HostingPreferredMapPath.cs
- CollaborationHelperFunctions.cs
- LinkClickEvent.cs
- ManualResetEvent.cs
- CategoryNameCollection.cs
- KnownColorTable.cs
- Vector3DAnimationUsingKeyFrames.cs
- filewebresponse.cs
- ConfigXmlElement.cs
- PlainXmlSerializer.cs
- ProcessHostMapPath.cs
- FontFamily.cs
- IndexedString.cs
- CategoryNameCollection.cs
- HitTestParameters3D.cs
- ResourceCodeDomSerializer.cs
- ResourcePermissionBaseEntry.cs
- EntityProviderFactory.cs
- StatusBar.cs
- ByteStreamMessageEncoderFactory.cs
- VirtualPath.cs
- PagesChangedEventArgs.cs
- VirtualizingStackPanel.cs
- WebPartChrome.cs
- WebHttpSecurityModeHelper.cs
- GridItemCollection.cs
- CodeExporter.cs
- RouteValueExpressionBuilder.cs
- RelationshipConstraintValidator.cs
- MsmqInputChannel.cs
- WebServiceEndpoint.cs
- QueryCursorEventArgs.cs
- ListViewInsertedEventArgs.cs
- SuspendDesigner.cs
- WebResourceAttribute.cs
- ContentPlaceHolderDesigner.cs
- XmlValidatingReaderImpl.cs
- ArraySortHelper.cs