using System;
using System.Collections.Generic;
using System.Text;

namespace Taobao.Top.Link.Channel
{
    /// <summary>context used with channel event
    /// </summary>
    public class ChannelContext : EventArgs
    {
        /// <summary>error from channel
        /// </summary>
        public Exception Error { get; private set; }
        /// <summary>the channel used to sending message
        /// </summary>
        public IChannelSender Sender { get; private set; }
        /// <summary>received message
        /// </summary>
        public object Message { get; private set; }

        public ChannelContext(Exception error)
        {
            this.Error = error;
        }
        public ChannelContext(object message, IChannelSender sender)
        {
            this.Message = message;
            this.Sender = sender;
        }

        /// <summary>
        /// send data to channel where the message come from
        /// </summary>
        /// <param name="data"></param>
        public void Reply(byte[] data)
        {
            if (this.Sender == null)
                throw new LinkException("can not send");
            this.Sender.Send(data);
        }
    }
}