File: System\IO\Log\LogAppendAsyncResult.cs
Project: ndp\cdf\src\NetFx35\System.IO.Log\System.IO.Log.csproj (System.IO.Log)
//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace System.IO.Log
{
    using System;
    using System.Collections.Generic;
    using System.Runtime.InteropServices;
    using System.Security.Permissions;
    using System.Threading;
 
    using Microsoft.Win32.SafeHandles;
 
    sealed class LogAppendAsyncResult : OverlappedAsyncResult
    {
        LogReserveAndAppendState state;
 
        internal LogAppendAsyncResult(LogRecordSequence recordSequence,
                                      AsyncCallback callback,
                                      object state)
            : base(callback, state)
        {
            this.state = new LogReserveAndAppendState();
            this.state.RecordSequence = recordSequence;
            this.state.AsyncResult = this;
        }
        
        //============================================================
        // Parameters
        //============================================================        
        internal IList<ArraySegment<byte>> Data
        {
            /* get { return this.state.Data; } */
            set { this.state.Data = value; }
        }
 
        internal ulong PreviousLsn
        {
            /* get { return this.state.PreviousLsn; } */
            set { this.state.PreviousLsn = value; }
        }
        
        internal long[] Reservations
        {
            get { return this.state.Reservations; }
            set { this.state.Reservations = value; }
        }
 
        internal LogReservationCollection ReservationCollection
        {
            /* get { return this.state.ReservationCollection; } */
            set { this.state.ReservationCollection = value; }
        }
 
        internal long TotalRecordSize
        {
            /* get { return this.state.TotalRecordSize; } */
            set { this.state.TotalRecordSize = value; }
        }
 
        internal ulong UserLsn
        {
            /* get { return this.state.UserLsn; } */
            set { this.state.UserLsn = value; }
        }
        
        internal RecordAppendOptions RecordAppendOptions
        {
            /* get { return this.state.RecordAppendOptions; } */
            set { this.state.RecordAppendOptions = value; }
        }
 
        //============================================================
        // Result
        //============================================================        
        internal ulong ResultLsn
        {
            get { return this.state.ResultLsn; }
        }
        
        internal void Start()
        {
            this.state.Start();
        }
        
        internal override void IOCompleted(uint errorCode)
        {
            this.state.IOComplete(errorCode);
        }
    }
}