protected override void ChannelRead0(IChannelHandlerContext ctx, CmppMessageReceiveArgs <CmppHead, CmppActiveTest> msg) { logger.Info($"receive active request: {msg}", ctx.Channel.ToString()); SmsPacket activeResp = GetActiveRespPacket(msg.Header); CmppTools.SendAsync(ctx, activeResp); }
private void SendActiveTest(IChannelHandlerContext context) { IMessage message = new CmppActiveTest(); CmppTools.GroupPacket(message); SmsPacket connect = CmppTools.GroupPacket(message); CmppTools.SendAsync(context, connect); }
public override void ChannelActive(IChannelHandlerContext context) { logger.Info($"start login user:{config.UserName}, pwd:{config.Password}"); this.context = context; SmsPacket connect = GetConnectRequestPacket(config.UserName, config.Password); CmppTools.SendAsync(context, connect); var delay = new TimeSpan(0, 0, disconnectSecond); timer.NewTimeout(this, delay); base.ChannelActive(context); }
internal static SmsPacket GroupPacket(IMessage message, uint sequenceId) { var smsPacket = new SmsPacket { Head = new CmppHead { SequenceId = sequenceId, CommandId = message.GetCommandId() }, Message = message }; return(smsPacket); }
internal static async Task SendAsync(IChannel channel, SmsPacket packet) { if (!channel.Active) { throw new Exception($"channel未激活:{channel.ToString()}, data:{packet}"); } //等待水位下降 while (!channel.IsWritable) { await Task.Delay(5); } await channel.WriteAndFlushAsync(packet); }
internal static Task SendAsync(IChannelHandlerContext context, SmsPacket packet) { return(SendAsync(context.Channel, packet)); }