Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / TransactionFlowProperty.cs / 1 / TransactionFlowProperty.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Channels { using System; using System.Collections.Generic; using System.ServiceModel; using System.ServiceModel.Security; using System.Transactions; using System.Runtime.Remoting.Messaging; using System.ServiceModel.Transactions; using System.ServiceModel.Diagnostics; sealed public class TransactionMessageProperty { TransactionInfo flowedTransactionInfo; Transaction flowedTransaction; const string PropertyName = "TransactionMessageProperty"; private TransactionMessageProperty() { } public Transaction Transaction { get { if(this.flowedTransaction == null && this.flowedTransactionInfo != null) { try { this.flowedTransaction = this.flowedTransactionInfo.UnmarshalTransaction(); } catch(TransactionException e) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(e); } } return this.flowedTransaction; } } static internal TransactionMessageProperty TryGet(Message message) { if (message.Properties.ContainsKey(PropertyName)) return message.Properties[PropertyName] as TransactionMessageProperty; else return null; } static internal Transaction TryGetTransaction(Message message) { if (!message.Properties.ContainsKey(PropertyName)) return null; return ((TransactionMessageProperty)message.Properties[PropertyName]).Transaction; } static TransactionMessageProperty GetPropertyAndThrowIfAlreadySet(Message message) { if (message.Properties.ContainsKey(PropertyName)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new FaultException(SR.GetString(SR.SFxTryAddMultipleTransactionsOnMessage))); } return new TransactionMessageProperty(); } static public void Set(Transaction transaction, Message message) { TransactionMessageProperty property = GetPropertyAndThrowIfAlreadySet(message); property.flowedTransaction = transaction; message.Properties.Add(PropertyName, property); } static internal void Set(TransactionInfo transactionInfo, Message message) { TransactionMessageProperty property = GetPropertyAndThrowIfAlreadySet(message); property.flowedTransactionInfo = transactionInfo; message.Properties.Add(PropertyName, property); } } class TransactionFlowProperty { Transaction flowedTransaction; ListissuedTokens; const string PropertyName = "TransactionFlowProperty"; private TransactionFlowProperty() { } internal ICollection IssuedTokens { get { if (this.issuedTokens == null) { this.issuedTokens = new List (); } return this.issuedTokens; } } internal Transaction Transaction { get {return this.flowedTransaction;} } static internal TransactionFlowProperty Ensure(Message message) { if (message.Properties.ContainsKey(PropertyName)) return (TransactionFlowProperty)message.Properties[PropertyName]; TransactionFlowProperty property = new TransactionFlowProperty(); message.Properties.Add(PropertyName, property); return property; } static internal TransactionFlowProperty TryGet(Message message) { if (message.Properties.ContainsKey(PropertyName)) return message.Properties[PropertyName] as TransactionFlowProperty; else return null; } static internal ICollection TryGetIssuedTokens(Message message) { TransactionFlowProperty property = TransactionFlowProperty.TryGet(message); if (property == null) return null; // use this when reading only, consistently return null if no tokens. if (property.issuedTokens == null || property.issuedTokens.Count == 0) return null; return property.issuedTokens; } static internal Transaction TryGetTransaction(Message message) { if (!message.Properties.ContainsKey(PropertyName)) return null; return ((TransactionFlowProperty)message.Properties[PropertyName]).Transaction; } static TransactionFlowProperty GetPropertyAndThrowIfAlreadySet(Message message) { TransactionFlowProperty property = TryGet(message); if (property != null) { if(property.flowedTransaction != null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new FaultException(SR.GetString(SR.SFxTryAddMultipleTransactionsOnMessage))); } } else { property = new TransactionFlowProperty(); } return property; } static internal void Set(Transaction transaction, Message message) { TransactionFlowProperty property = GetPropertyAndThrowIfAlreadySet(message); property.flowedTransaction = transaction; message.Properties.Add(PropertyName, property); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MimeWriter.cs
- RegexMatch.cs
- Line.cs
- PrimaryKeyTypeConverter.cs
- UnmanagedMemoryStream.cs
- LayoutTable.cs
- Path.cs
- EventLogRecord.cs
- CharUnicodeInfo.cs
- CustomPopupPlacement.cs
- TTSEngineProxy.cs
- SoapSchemaExporter.cs
- ImageList.cs
- Axis.cs
- Automation.cs
- VisualSerializer.cs
- ListItemCollection.cs
- PersonalizationProviderCollection.cs
- HierarchicalDataSourceDesigner.cs
- RegexInterpreter.cs
- Transform.cs
- ElementsClipboardData.cs
- TypeBinaryExpression.cs
- HighContrastHelper.cs
- Tokenizer.cs
- DataRow.cs
- InstanceNotReadyException.cs
- InitializationEventAttribute.cs
- AbstractDataSvcMapFileLoader.cs
- ChildrenQuery.cs
- VideoDrawing.cs
- CanonicalFontFamilyReference.cs
- BinaryMethodMessage.cs
- _HeaderInfo.cs
- XamlPointCollectionSerializer.cs
- HierarchicalDataBoundControlAdapter.cs
- SynthesizerStateChangedEventArgs.cs
- OutputCacheSection.cs
- ObjectItemConventionAssemblyLoader.cs
- TransformerInfo.cs
- WindowsFormsSectionHandler.cs
- TrackBar.cs
- XmlSchemaGroup.cs
- SymDocumentType.cs
- DataGridrowEditEndingEventArgs.cs
- BindingListCollectionView.cs
- TCPListener.cs
- DocumentViewerConstants.cs
- SvcMapFile.cs
- ProtocolsConfiguration.cs
- MailDefinition.cs
- TogglePattern.cs
- StylusEditingBehavior.cs
- SoundPlayer.cs
- DetailsView.cs
- InputReport.cs
- controlskin.cs
- GenericAuthenticationEventArgs.cs
- SecurityHeaderLayout.cs
- SqlHelper.cs
- DataGridViewCellValueEventArgs.cs
- TemplatePropertyEntry.cs
- selecteditemcollection.cs
- VirtualDirectoryMapping.cs
- MetadataItemEmitter.cs
- SchemaAttDef.cs
- CompositionAdorner.cs
- ObjectSet.cs
- ArgumentException.cs
- ProxyAttribute.cs
- LoginName.cs
- PolicyUnit.cs
- oledbmetadatacolumnnames.cs
- InputMethodStateTypeInfo.cs
- AggregateNode.cs
- EventHandlingScope.cs
- DependencyStoreSurrogate.cs
- AppearanceEditorPart.cs
- Soap12ProtocolReflector.cs
- GetResponse.cs
- SignatureHelper.cs
- ButtonBase.cs
- RsaElement.cs
- TextComposition.cs
- WSFederationHttpSecurityElement.cs
- GroupDescription.cs
- LinearQuaternionKeyFrame.cs
- SchemaType.cs
- ComponentEvent.cs
- TagPrefixCollection.cs
- RightsManagementProvider.cs
- CodeSubDirectory.cs
- TagMapInfo.cs
- ArrayItemReference.cs
- HttpAsyncResult.cs
- BmpBitmapDecoder.cs
- RemotingConfigParser.cs
- ListItemParagraph.cs
- CommandHelper.cs
- _LocalDataStoreMgr.cs