ABossCommand.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using System.Threading.Tasks;
  3. using BossBase;
  4. using DataCenter;
  5. using Helper;
  6. using Log;
  7. namespace BossCommand
  8. {
  9. public abstract class ABossCommand
  10. {
  11. protected IMessageChannel IMessageChannel { get; set; }
  12. protected DataCenterEntities Entities { get; set; }
  13. protected void SendMessage(CMSG_Boss_Gm cmsgBossGm)
  14. {
  15. this.IMessageChannel.SendMessage(MessageOpcode.CMSG_BOSS_GM, cmsgBossGm);
  16. }
  17. protected async Task<T> RecvMessage<T>()
  18. {
  19. var result = await this.IMessageChannel.RecvMessage();
  20. ushort opcode = result.Item1;
  21. byte[] content = result.Item2;
  22. try
  23. {
  24. var message = ProtobufHelper.FromBytes<T>(content);
  25. return message;
  26. }
  27. catch (Exception)
  28. {
  29. Logger.Trace("parse message fail, opcode: {0}", opcode);
  30. throw;
  31. }
  32. }
  33. protected ABossCommand(IMessageChannel iMessageChannel, DataCenterEntities entities)
  34. {
  35. this.IMessageChannel = iMessageChannel;
  36. this.Entities = entities;
  37. }
  38. public virtual Task<object> DoAsync()
  39. {
  40. throw new NotImplementedException();
  41. }
  42. public virtual object Do()
  43. {
  44. throw new NotImplementedException();
  45. }
  46. public void Undo()
  47. {
  48. throw new NotImplementedException();
  49. }
  50. }
  51. }