Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / InternalCompensate.cs / 1305376 / InternalCompensate.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Statements { using System; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Runtime; sealed class InternalCompensate : NativeActivity { public InternalCompensate() : base() { } public InArgumentTarget { get; set; } protected override bool CanInduceIdle { get { return true; } } protected override void CacheMetadata(NativeActivityMetadata metadata) { RuntimeArgument targetArgument = new RuntimeArgument("Target", typeof(CompensationToken), ArgumentDirection.In); metadata.Bind(this.Target, targetArgument); metadata.SetArgumentsCollection(new Collection { targetArgument }); } protected override void Execute(NativeActivityContext context) { CompensationExtension compensationExtension = context.GetExtension (); Fx.Assert(compensationExtension != null, "CompensationExtension must be valid"); CompensationToken compensationToken = Target.Get(context); Fx.Assert(compensationToken != null, "CompensationToken must be valid"); // The compensationToken should be a valid one at this point. Ensure its validated in Compensate activity. CompensationTokenData tokenData = compensationExtension.Get(compensationToken.CompensationId); Fx.Assert(tokenData != null, "The compensationToken should be a valid one at this point. Ensure its validated in Compensate activity."); Fx.Assert(tokenData.BookmarkTable[CompensationBookmarkName.Compensated] == null, "Bookmark should not be already initialized in the bookmark table."); tokenData.BookmarkTable[CompensationBookmarkName.Compensated] = context.CreateBookmark(new BookmarkCallback(OnCompensated)); tokenData.CompensationState = CompensationState.Compensating; compensationExtension.NotifyMessage(context, tokenData.CompensationId, CompensationBookmarkName.OnCompensation); } // Successfully received Compensated response. void OnCompensated(NativeActivityContext context, Bookmark bookmark, object value) { CompensationExtension compensationExtension = context.GetExtension (); Fx.Assert(compensationExtension != null, "CompensationExtension must be valid"); CompensationToken compensationToken = Target.Get(context); Fx.Assert(compensationToken != null, "CompensationToken must be valid"); CompensationTokenData tokenData = compensationExtension.Get(compensationToken.CompensationId); Fx.Assert(tokenData != null, "The compensationToken should be a valid one at this point. Ensure its validated in Compensate activity."); tokenData.CompensationState = CompensationState.Compensated; if(TD.CompensationStateIsEnabled()) { TD.CompensationState(tokenData.DisplayName, tokenData.CompensationState.ToString()); } // Remove the token from the parent! if (tokenData.ParentCompensationId != CompensationToken.RootCompensationId) { CompensationTokenData parentToken = compensationExtension.Get(tokenData.ParentCompensationId); Fx.Assert(parentToken != null, "parentToken must be valid"); parentToken.ExecutionTracker.Remove(tokenData); } else { // remove from workflow root... CompensationTokenData parentToken = compensationExtension.Get(CompensationToken.RootCompensationId); Fx.Assert(parentToken != null, "parentToken must be valid"); parentToken.ExecutionTracker.Remove(tokenData); } tokenData.RemoveBookmark(context, CompensationBookmarkName.Compensated); // Remove the token from the extension... compensationExtension.Remove(compensationToken.CompensationId); } protected override void Cancel(NativeActivityContext context) { // Suppress Cancel } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ISO2022Encoding.cs
- CodeMemberField.cs
- DefaultSection.cs
- IisTraceWebEventProvider.cs
- AdapterDictionary.cs
- Module.cs
- OleDbError.cs
- ConnectionManagementElement.cs
- SqlReferenceCollection.cs
- DoubleAnimationBase.cs
- TableItemPatternIdentifiers.cs
- LinqDataSource.cs
- CompositeScriptReferenceEventArgs.cs
- RegexCompilationInfo.cs
- BCLDebug.cs
- BuilderInfo.cs
- OleDbParameterCollection.cs
- WebServiceTypeData.cs
- DataGridViewCellStateChangedEventArgs.cs
- ObjectContext.cs
- GeneralTransform3D.cs
- ChildTable.cs
- BufferBuilder.cs
- WSDualHttpSecurity.cs
- ImageButton.cs
- ConfigXmlElement.cs
- ObjectQuery_EntitySqlExtensions.cs
- WorkflowItemPresenter.cs
- GenericTextProperties.cs
- StorageConditionPropertyMapping.cs
- TypeElement.cs
- WebHttpSecurity.cs
- CompositeActivityMarkupSerializer.cs
- DesignerSerializerAttribute.cs
- Transform3DGroup.cs
- Converter.cs
- ConversionContext.cs
- SHA256.cs
- TextTreeNode.cs
- ConsoleEntryPoint.cs
- TextTreeExtractElementUndoUnit.cs
- PermissionSetTriple.cs
- ForwardPositionQuery.cs
- SafeBitVector32.cs
- SHA512.cs
- ContentElementAutomationPeer.cs
- SqlCommandSet.cs
- CaseInsensitiveHashCodeProvider.cs
- EntityTypeBase.cs
- IIS7UserPrincipal.cs
- altserialization.cs
- TakeOrSkipQueryOperator.cs
- IISMapPath.cs
- SecurityKeyType.cs
- Graphics.cs
- Constants.cs
- EmbossBitmapEffect.cs
- BlockCollection.cs
- ExpressionBuilderCollection.cs
- SoapReflectionImporter.cs
- Pair.cs
- GridPatternIdentifiers.cs
- AdornedElementPlaceholder.cs
- ExeConfigurationFileMap.cs
- wgx_exports.cs
- UInt32Converter.cs
- Inflater.cs
- CallContext.cs
- ResourceDescriptionAttribute.cs
- StartUpEventArgs.cs
- EntitySetBase.cs
- GridViewEditEventArgs.cs
- SearchExpression.cs
- ReturnType.cs
- BooleanAnimationBase.cs
- NonBatchDirectoryCompiler.cs
- CodeNamespaceImport.cs
- wgx_commands.cs
- CheckBox.cs
- FileChangesMonitor.cs
- StaticResourceExtension.cs
- NetworkStream.cs
- DataGridViewIntLinkedList.cs
- ReadOnlyPropertyMetadata.cs
- GeometryHitTestParameters.cs
- ProtocolsConfigurationHandler.cs
- _AuthenticationState.cs
- ConfigurationStrings.cs
- FileEnumerator.cs
- ToolStripOverflow.cs
- CompilationUnit.cs
- SQLInt16Storage.cs
- ReflectPropertyDescriptor.cs
- SrgsItemList.cs
- EntityDataSourceReferenceGroup.cs
- HtmlAnchor.cs
- SafeSystemMetrics.cs
- BindingValueChangedEventArgs.cs
- UndoEngine.cs
- NameTable.cs