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
- SqlCommandBuilder.cs
- FormsAuthenticationConfiguration.cs
- HostDesigntimeLicenseContext.cs
- EventProxy.cs
- VSWCFServiceContractGenerator.cs
- Storyboard.cs
- EntityDataSourceWrapperCollection.cs
- ResourceReader.cs
- X509IssuerSerialKeyIdentifierClause.cs
- CodeLinePragma.cs
- StylusSystemGestureEventArgs.cs
- MessageQueue.cs
- InvalidEnumArgumentException.cs
- PositiveTimeSpanValidator.cs
- DesignerAdRotatorAdapter.cs
- SqlAliasesReferenced.cs
- DiscreteKeyFrames.cs
- PageStatePersister.cs
- SyndicationFeedFormatter.cs
- WmpBitmapDecoder.cs
- ColorAnimationBase.cs
- ObjectDataSource.cs
- CompressionTransform.cs
- SqlHelper.cs
- ExpandCollapsePattern.cs
- Deflater.cs
- ClientConfigurationSystem.cs
- ValueUtilsSmi.cs
- VisualBrush.cs
- WebPartCatalogAddVerb.cs
- Pair.cs
- Evidence.cs
- EditorBrowsableAttribute.cs
- ErrorItem.cs
- HeaderElement.cs
- WebAdminConfigurationHelper.cs
- Size.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- BaseValidatorDesigner.cs
- BufferModeSettings.cs
- PointLightBase.cs
- XmlReflectionImporter.cs
- PrivilegedConfigurationManager.cs
- FontFamily.cs
- View.cs
- KeyEventArgs.cs
- Item.cs
- DataGridViewCellStyleEditor.cs
- ColorContextHelper.cs
- KeyedPriorityQueue.cs
- CryptoConfig.cs
- DefaultMergeHelper.cs
- SingleStorage.cs
- DataExchangeServiceBinder.cs
- WindowsRegion.cs
- HMACRIPEMD160.cs
- WebResourceAttribute.cs
- UiaCoreTypesApi.cs
- HostSecurityManager.cs
- ResourceSet.cs
- Oid.cs
- WS2007FederationHttpBindingCollectionElement.cs
- SchemaObjectWriter.cs
- BrushMappingModeValidation.cs
- SystemWebSectionGroup.cs
- SmiEventSink.cs
- XmlBoundElement.cs
- ContentHostHelper.cs
- EventDescriptorCollection.cs
- Columns.cs
- WebContext.cs
- SymLanguageVendor.cs
- ServiceHttpHandlerFactory.cs
- IItemContainerGenerator.cs
- IndexOutOfRangeException.cs
- XsdBuilder.cs
- XmlMapping.cs
- SHA256.cs
- PageAsyncTask.cs
- SecurityContextSecurityToken.cs
- HostingEnvironment.cs
- DrawingBrush.cs
- HttpListenerContext.cs
- DocumentPageHost.cs
- PDBReader.cs
- basenumberconverter.cs
- TaiwanLunisolarCalendar.cs
- BitmapCacheBrush.cs
- XMLUtil.cs
- HtmlFormWrapper.cs
- SourceFileBuildProvider.cs
- ExpressionBuilder.cs
- NameValueSectionHandler.cs
- XsltArgumentList.cs
- ScriptRegistrationManager.cs
- WindowsListViewScroll.cs
- AutomationProperty.cs
- PropertyTabChangedEvent.cs
- LoginDesigner.cs
- AutomationPropertyInfo.cs