/// <summary> /// 解析请求报文 /// </summary> /// <param name="buffer"></param> /// <returns></returns> protected override SmsMessage Handle(byte[] buffer) { uint requestId = BitHelper.SubUInt32(buffer, SmgpMessage.RequestIdIndex); switch (requestId) { case SmgpRequestId.Active_Test: { var message = new SmgpActiveTestMessage(buffer); var ack = new SmgpActiveTestRespMessage { SequenceId = message.SequenceId }; return(ack); } case SmgpRequestId.Deliver: { var message = new SmgpDeliverMessage(buffer); var ack = new SmgpDeliverRespMessage { SequenceId = message.SequenceId, MsgId = message.MsgId, Status = 0 }; return(ack); } default: return(null); // throw new NotImplementedException("UnHandleRequest: " + requestId); } }
/// <summary> /// 向运营商发送链路检测包保持连接 /// </summary> /// <param name="smsSocket"></param> protected override void Heartbeat(SmsSocket smsSocket) { var message = new SmgpActiveTestMessage { SequenceId = NextSequenceId() }; var resp = new SmgpActiveTestRespMessage(SendAndWait(smsSocket, message)); Assert.AreEqual(message.SequenceId, resp.SequenceId); Thread.Sleep(3 * 60 * 1000); // TODO: 配置 }