12345678910111213141516171819202122232425262728293031 |
- using Edge.Core.Parser.BinaryParser;
- using Edge.Core.Parser.BinaryParser.MessageEntity;
- using PetroChinaOnlineWatchPlugin.MessageEntity;
- using PetroChinaOnlineWatchPlugin.MessageEntity.Incoming;
- namespace PetroChinaOnlineWatchPlugin
- {
- public class MessageTemplateLookup : IMessageTemplateLookup
- {
- public MessageTemplateBase GetMessageTemplateByRawBytes(byte[] bytes)
- {
- var type = (MessageType)(bytes[5] & 0xE0);
- if (bytes.Length == 10
- && bytes[0] <= 254 && bytes[0] >= 0
- && bytes[1] <= 254 && bytes[1] >= 0
- && bytes[2] <= 254 && bytes[2] >= 0
- && bytes[3] <= 254 && bytes[3] >= 0
- && (((bytes[4] << 8) + bytes[5]) <= 65534))
- return new HeartBeatIn();
- else if (type == MessageType.IFSF_MESSAGE_TYPE_READ)
- return new ReadMessageIn();
- else if (type == MessageType.IFSF_MESSAGE_TYPE_UNSOLICITED_WITHOUT_ACK || type == MessageType.IFSF_MESSAGE_TYPE_ANSWER
- || type == MessageType.IFSF_MESSAGE_TYPE_WRITE)
- return new AnswerWriteUnsolicitedMessageIn();
- else if (type == MessageType.IFSF_MESSAGE_TYPE_ACK)
- return new AckMessageMessageIn();
- else
- return null;
- }
- }
- }
|