MessageTemplateLookup.cs 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. using Edge.Core.Parser.BinaryParser;
  2. using Edge.Core.Parser.BinaryParser.MessageEntity;
  3. using PetroChinaOnlineWatchPlugin.MessageEntity;
  4. using PetroChinaOnlineWatchPlugin.MessageEntity.Incoming;
  5. namespace PetroChinaOnlineWatchPlugin
  6. {
  7. public class MessageTemplateLookup : IMessageTemplateLookup
  8. {
  9. public MessageTemplateBase GetMessageTemplateByRawBytes(byte[] bytes)
  10. {
  11. var type = (MessageType)(bytes[5] & 0xE0);
  12. if (bytes.Length == 10
  13. && bytes[0] <= 254 && bytes[0] >= 0
  14. && bytes[1] <= 254 && bytes[1] >= 0
  15. && bytes[2] <= 254 && bytes[2] >= 0
  16. && bytes[3] <= 254 && bytes[3] >= 0
  17. && (((bytes[4] << 8) + bytes[5]) <= 65534))
  18. return new HeartBeatIn();
  19. else if (type == MessageType.IFSF_MESSAGE_TYPE_READ)
  20. return new ReadMessageIn();
  21. else if (type == MessageType.IFSF_MESSAGE_TYPE_UNSOLICITED_WITHOUT_ACK || type == MessageType.IFSF_MESSAGE_TYPE_ANSWER
  22. || type == MessageType.IFSF_MESSAGE_TYPE_WRITE)
  23. return new AnswerWriteUnsolicitedMessageIn();
  24. else if (type == MessageType.IFSF_MESSAGE_TYPE_ACK)
  25. return new AckMessageMessageIn();
  26. else
  27. return null;
  28. }
  29. }
  30. }