using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using Taobao.Top.Link.Channel;
|
|
namespace Taobao.Top.Link.Endpoints
|
{
|
/// <summary>context for receiving message
|
/// </summary>
|
public class EndpointContext : EventArgs
|
{
|
private int _flag;
|
private string _token;
|
private EndpointHandler _handler;
|
private ChannelContext _channelContext;
|
|
/// <summary>get received message
|
/// </summary>
|
public IDictionary<string, object> Message { get; internal set; }
|
/// <summary>get where the message sent from
|
/// </summary>
|
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;
|
}
|
/// <summary>reply message
|
/// </summary>
|
/// <param name="message"></param>
|
public void Reply(IDictionary<string, object> message)
|
{
|
this._handler.Send(this.CreateMessage(message), this._channelContext.Sender);
|
}
|
/// <summary>tell error occur
|
/// </summary>
|
/// <param name="statusCode"></param>
|
/// <param name="statusPhase"></param>
|
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<string, object> message)
|
{
|
Message msg = new Message();
|
msg.MessageType = MessageType.SENDACK;
|
msg.Content = message;
|
msg.Flag = this._flag;
|
msg.Token = this._token;
|
return msg;
|
}
|
}
|
}
|