using DotNetty.Transport.Channels; using HybirdFrameworkCore.Autofac.Attribute; using HybirdFrameworkDriver.Session; using Service.Car.Msg.Car.Req; using Service.Car.Msg.Host.Resp; using Service.Car.Server; namespace Service.Car.Handler; /// /// /// [Order(8)] [Scope("InstancePerDependency")] public class HeartBeatMsgHandler : SimpleChannelInboundHandler, IBaseHandler { /// /// /// /// /// /// protected override void ChannelRead0(IChannelHandlerContext ctx, HeartBeatMsg msg) { CarServerMgr.CarServer.Connected = true; IoSession? ioSession = SessionMgr.GetSession(ctx.Channel.Id.ToString()); if (ioSession != null && ioSession.Key != msg.CarNo) { SessionMgr.ChangeSessionKey(ioSession, msg.CarNo); } CarServerMgr.CarServer.CarNo = msg.CarNo; CarServerMgr.CarServer.HeartBeatMsg = msg; HeartBeatMsgResp resp = new HeartBeatMsgResp( CarServerMgr.CarServer.StationStatus) { CarNo = msg.CarNo }; resp.InitCurrentTime(); ctx.Channel.WriteAndFlushAsync(resp); } }