File: System\Activities\Statements\CompensationTokenData.cs
Project: ndp\cdf\src\NetFx40\System.Activities\System.Activities.csproj (System.Activities)
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//----------------------------------------------------------------
 
namespace System.Activities.Statements
{
    using System;
    using System.Collections.Generic;
    using System.Runtime.Serialization;
    using System.Runtime;
    using System.Diagnostics.CodeAnalysis;
    using System.ComponentModel;
 
    [Fx.Tag.XamlVisible(false)]
    [DataContract]
    class CompensationTokenData
    {
        internal CompensationTokenData(long compensationId, long parentCompensationId)
        {
            this.CompensationId = compensationId;
            this.ParentCompensationId = parentCompensationId;
            this.BookmarkTable = new BookmarkTable();
            this.ExecutionTracker = new ExecutionTracker();
            this.CompensationState = CompensationState.Creating;
        }
 
        [DataMember(EmitDefaultValue = false)]
        internal long CompensationId
        {
            get;
            set;
        }
 
        [DataMember(EmitDefaultValue = false)]
        internal long ParentCompensationId
        {
            get;
            set;
        }
 
        [DataMember]
        internal BookmarkTable BookmarkTable
        {
            get;
            set;
        }
 
        [DataMember]
        internal ExecutionTracker ExecutionTracker
        {
            get;
            set;
        }
 
        [DefaultValue(CompensationState.Active)]
        [DataMember(EmitDefaultValue = false)]
        internal CompensationState CompensationState
        {
            get;
            set;
        }
 
        [DataMember(EmitDefaultValue = false)]
        internal string DisplayName
        {
            get;
            set;
        }
        
        [DataMember(EmitDefaultValue = false)]
        internal bool IsTokenValidInSecondaryRoot
        {
            get;
            set;
        }
 
        internal void RemoveBookmark(NativeActivityContext context, CompensationBookmarkName bookmarkName)
        {
            Bookmark bookmark = this.BookmarkTable[bookmarkName];
 
            if (bookmark != null)
            {
                context.RemoveBookmark(bookmark); 
                this.BookmarkTable[bookmarkName] = null;
            }
        }
    }
}