EndpointContext.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Taobao.Top.Link.Channel;
  5. namespace Taobao.Top.Link.Endpoints
  6. {
  7. /// <summary>context for receiving message
  8. /// </summary>
  9. public class EndpointContext : EventArgs
  10. {
  11. private int _flag;
  12. private string _token;
  13. private EndpointHandler _handler;
  14. private ChannelContext _channelContext;
  15. /// <summary>get received message
  16. /// </summary>
  17. public IDictionary<string, object> Message { get; internal set; }
  18. /// <summary>get where the message sent from
  19. /// </summary>
  20. public Identity MessageFrom { get; internal set; }
  21. public EndpointContext(ChannelContext channelContext
  22. , EndpointHandler handler
  23. , Identity messageFrom
  24. , int flag
  25. , string token)
  26. {
  27. this._channelContext = channelContext;
  28. this._handler = handler;
  29. this.MessageFrom = messageFrom;
  30. this._flag = flag;
  31. this._token = token;
  32. }
  33. /// <summary>reply message
  34. /// </summary>
  35. /// <param name="message"></param>
  36. public void Reply(IDictionary<string, object> message)
  37. {
  38. this._handler.Send(this.CreateMessage(message), this._channelContext.Sender);
  39. }
  40. /// <summary>tell error occur
  41. /// </summary>
  42. /// <param name="statusCode"></param>
  43. /// <param name="statusPhase"></param>
  44. public void Error(int statusCode, string statusPhase)
  45. {
  46. Message msg = this.CreateMessage(null);
  47. msg.StatusCode = statusCode;
  48. msg.StatusPhase = statusPhase;
  49. this._handler.Send(msg, this._channelContext.Sender);
  50. }
  51. private Message CreateMessage(IDictionary<string, object> message)
  52. {
  53. Message msg = new Message();
  54. msg.MessageType = MessageType.SENDACK;
  55. msg.Content = message;
  56. msg.Flag = this._flag;
  57. msg.Token = this._token;
  58. return msg;
  59. }
  60. }
  61. }