12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using System;
- namespace Vinno.IUS.Common.Network.Transfer
- {
- public sealed class SequenceMessage : DictionaryMessage, INoEncryptionMessage, ISystemMessage
- {
- /// <summary>
- /// Gets the index of the Message in this sequence
- /// </summary>
- public int Index { get; }
- /// <summary>
- /// Gets the total count of this sequence.
- /// </summary>
- public int Count { get; }
- /// <summary>
- /// Get the message of this time.
- /// </summary>
- public Message Data { get; }
- public SequenceMessage(int index, int count, Message data) :
- base(SystemTags.SequenceMessage)
- {
- Index = index;
- Count = count;
- Data = data;
- var countMessage = new Message(SystemTags.SequenceCount, new IntegerElement(Count));
- AddMessage(countMessage);
- var indexMessage = new Message(SystemTags.SequenceIndex, new IntegerElement(Index));
- AddMessage(indexMessage);
- if (TransferMessageHelper.IsDictionaryMessage(Data))
- {
- TransferMessageHelper.SetMessageProperties(Data);
- }
- var dataBuffer = data.GetBuffer();
- var dataMessage = new Message(SystemTags.SequenceData, new BufferElement(dataBuffer));
- AddMessage(dataMessage);
- }
- private SequenceMessage(Message message) : base(message)
- {
- Index = GetElement<IntegerElement>(SystemTags.SequenceIndex).Value;
- Count = GetElement<IntegerElement>(SystemTags.SequenceCount).Value;
- Data = FromBuffer(GetElement<BufferElement>(SystemTags.SequenceData).Value);
- }
- public static SequenceMessage Convert(Message message)
- {
- SequenceMessage sequenceMessage = null;
- try
- {
- if (message.Tag != SystemTags.SequenceMessage)
- {
- return null;
- }
- sequenceMessage = new SequenceMessage(message);
- }
- catch (Exception)
- {
- //DoNothing
- }
- return sequenceMessage;
- }
- }
- }
|