Example #1
0
        /// <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);
            }
        }
Example #2
0
        /// <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: 配置
        }