using System;
using System.Collections.Generic;
using System.Text;
using Taobao.Top.Link.Channel;
namespace Taobao.Top.Link.Endpoints
{
/// context for receiving message
///
public class EndpointContext : EventArgs
{
private int _flag;
private string _token;
private EndpointHandler _handler;
private ChannelContext _channelContext;
/// get received message
///
public IDictionary Message { get; internal set; }
/// get where the message sent from
///
public Identity MessageFrom { get; internal set; }
public EndpointContext(ChannelContext channelContext
, EndpointHandler handler
, Identity messageFrom
, int flag
, string token)
{
this._channelContext = channelContext;
this._handler = handler;
this.MessageFrom = messageFrom;
this._flag = flag;
this._token = token;
}
/// reply message
///
///
public void Reply(IDictionary message)
{
this._handler.Send(this.CreateMessage(message), this._channelContext.Sender);
}
/// tell error occur
///
///
///
public void Error(int statusCode, string statusPhase)
{
Message msg = this.CreateMessage(null);
msg.StatusCode = statusCode;
msg.StatusPhase = statusPhase;
this._handler.Send(msg, this._channelContext.Sender);
}
private Message CreateMessage(IDictionary message)
{
Message msg = new Message();
msg.MessageType = MessageType.SENDACK;
msg.Content = message;
msg.Flag = this._flag;
msg.Token = this._token;
return msg;
}
}
}