using DotNetty.Buffers; using DotNetty.Codecs; using DotNetty.Transport.Channels; using HybirdFrameworkCore.Utils; using HybirdFrameworkDriver.Session; using log4net; using Newtonsoft.Json; using Service.Charger.Common; using Service.Charger.Msg; namespace Service.Charger.Codec; /// /// /// public class Encoder : MessageToByteEncoder { private static readonly ILog Log = LogManager.GetLogger(typeof(Encoder)); /// /// /// /// /// /// protected override void Encode(IChannelHandlerContext context, APCI obj, IByteBuffer output) { string? s = ChannelUtils.GetAttr(context.Channel, ChargerConst.DestAddr); if (s != null) { byte[] destAddr = s.Split(",").Select(b => Convert.ToByte(b)).ToArray(); obj.DestAddr = destAddr; } byte[] bytes = obj.ToBytes(); Log.Info($"send {JsonConvert.SerializeObject(obj)}:{BitUtls.BytesToHexStr(bytes)} to {ChannelUtils.GetAttr(context.Channel, ChargerConst.ChargerSn)}"); output.WriteBytes(bytes); } }