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
- TableHeaderCell.cs
- _ListenerRequestStream.cs
- Operators.cs
- Bind.cs
- LogicalExpressionTypeConverter.cs
- CollectionTraceRecord.cs
- ChangeConflicts.cs
- SecurityDocument.cs
- oledbconnectionstring.cs
- UnSafeCharBuffer.cs
- MarkupCompiler.cs
- ObjectNotFoundException.cs
- CapiNative.cs
- CursorConverter.cs
- OptimalBreakSession.cs
- CommandBinding.cs
- TemplateColumn.cs
- Symbol.cs
- CodeAttributeArgument.cs
- WebPart.cs
- Rectangle.cs
- DoubleAnimationBase.cs
- CqlLexer.cs
- HttpProfileBase.cs
- BoolExpressionVisitors.cs
- panel.cs
- DictationGrammar.cs
- ByteAnimationBase.cs
- DesignerProperties.cs
- BasicExpandProvider.cs
- XmlSerializationReader.cs
- GuidelineCollection.cs
- TreeViewItem.cs
- ManagementEventArgs.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- WebPartHeaderCloseVerb.cs
- PathFigureCollection.cs
- CodeSpit.cs
- MultiPropertyDescriptorGridEntry.cs
- DiscoveryVersionConverter.cs
- SynchronizedMessageSource.cs
- TextEditorParagraphs.cs
- BrowserCapabilitiesFactory.cs
- XPathNodeInfoAtom.cs
- figurelength.cs
- SizeF.cs
- AccessedThroughPropertyAttribute.cs
- RawStylusInputReport.cs
- XmlDataSourceNodeDescriptor.cs
- InfoCardBaseException.cs
- XmlTextEncoder.cs
- NodeInfo.cs
- BreakRecordTable.cs
- ProgressBar.cs
- RadioButtonPopupAdapter.cs
- GeneralTransform3DTo2DTo3D.cs
- RecognizerBase.cs
- Material.cs
- BamlTreeMap.cs
- SSmlParser.cs
- RbTree.cs
- TablePattern.cs
- CriticalHandle.cs
- DomainUpDown.cs
- BaseResourcesBuildProvider.cs
- Menu.cs
- DocumentXPathNavigator.cs
- ContextInformation.cs
- TargetParameterCountException.cs
- DrawingContextDrawingContextWalker.cs
- TypeLibConverter.cs
- ImpersonationContext.cs
- UrlMappingCollection.cs
- Canvas.cs
- ListViewTableCell.cs
- VisualStyleInformation.cs
- GroupItemAutomationPeer.cs
- SymLanguageVendor.cs
- XmlAutoDetectWriter.cs
- RemoteWebConfigurationHostStream.cs
- XmlQueryStaticData.cs
- OleDbError.cs
- UpdateException.cs
- CdpEqualityComparer.cs
- FixedFlowMap.cs
- ZipIOModeEnforcingStream.cs
- ImageClickEventArgs.cs
- ColumnCollection.cs
- DesignTimeTemplateParser.cs
- DataTableTypeConverter.cs
- Polygon.cs
- DynamicPropertyHolder.cs
- DeviceContext2.cs
- List.cs
- ColorMatrix.cs
- StorageTypeMapping.cs
- TimeSpanConverter.cs
- MultiDataTrigger.cs
- CommandBindingCollection.cs
- bindurihelper.cs