1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using System;
- using Vinno.IUS.Common.IO;
- using Vinno.IUS.Common.Log;
- using Vinno.IUS.Common.Network.Leaf;
- namespace Vinno.IUS.Common.Network.Transfer
- {
- public sealed class TransferMessage:DictionaryMessage
- {
- /// <summary>
- /// Gets the token of this transfer message.
- /// </summary>
- public TransferToken Token { get; }
- /// <summary>
- /// Gets the data of this transfer message.
- /// </summary>
- public Message Data { get; }
- public TransferMessage(TransferToken token, Message data) :
- base(SystemTags.TransferMessage)
- {
- Token = token;
- Data = data;
- var tokenIdMessage = new Message(SystemTags.TransferTokenId, new StringElement(Token.Id));
- AddMessage(tokenIdMessage);
- var dataBuffer = data.GetBuffer();
- var dataMessage = new Message(SystemTags.TransferData,new BufferElement(dataBuffer));
- AddMessage(dataMessage);
- }
- private TransferMessage(Message message) : base(message)
- {
- var tokenIdElement = GetElement<StringElement>(SystemTags.TransferTokenId);
- var tokenId = tokenIdElement.Value;
- Token = new TransferToken(tokenId);
- var dataElement = GetElement<BufferElement>(SystemTags.TransferData);
- Data = FromBuffer(dataElement.Value);
- }
- public static TransferMessage Convert(IBuffer buffer)
- {
- Message message = null;
- try
- {
- message = FromBuffer(buffer);
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"Get message from buffer failed:{ex}");
- }
- if (message != null)
- {
- if (message.Tag != SystemTags.TransferMessage)
- {
- return null;
- }
- TransferMessage transferMessage = null;
- try
- {
- transferMessage = new TransferMessage(message);
- }
- catch (Exception ex)
- {
- var tagDes = message.Element == null ? "null" : message.Element.TransferType.ToString();
- var messageDetail = message.Element?.ToString();
- Logger.WriteLineError($"Convert TransferMessage failed:{ex},Message Element:{tagDes}, Message:{messageDetail}");
- }
- return transferMessage;
- }
- return null;
- }
- }
- }
|