using System;
using Wayne.Lib;

namespace Wayne.ForecourtControl.OptBridge
{
    /// <summary>
    /// The EventArgs is used when a Opt write has completed.
    /// </summary>
    public class OptWriteCompletedEventArgs : AsyncCompletedEventArgs
    {
        #region Fields

        private int retransmitCount;

        #endregion

        #region Construction

        /// <summary>
        /// Construction.
        /// </summary>
        /// <param name="success"></param>
        /// <param name="userToken"></param>       
        /// <param name="retransmitCount"></param>
        public OptWriteCompletedEventArgs(bool success, object userToken, int retransmitCount)
            : base(success, userToken)
        {
            this.retransmitCount = retransmitCount;
        }

        #endregion

        #region Properties

        /// <summary>
        /// Number of times that the message was retransmitted before it came through or it was cancelled.
        /// </summary>
        public int RetransmitCount
        {
            get { return retransmitCount; }
        }

        #endregion

        #region Debug methods

        /// <summary>
        /// Presents the class as a string.
        /// </summary>
        /// <param name="format"></param>
        /// <param name="provider"></param>
        /// <returns></returns>        
        public override string ToString(string format, IFormatProvider provider)
        {
            return string.Format("OptWriteCompletedEventArgs, success={0}, retransmitCount={1}", Success,retransmitCount);
        }

        #endregion
    }

}