Beispiel #1
0
        /// <summary>
        /// 获取无效的网关数数据回复
        /// </summary>
        /// <param name="request">网关请求对象</param>
        /// <param name="bizRespBytes">业务返回字节数</param>
        public static NetworkSwitchResponse GetInvalidSwitchResponse(NetworkSwitchRequest request, byte[] bizRespBytes)
        {
            NetworkSwitchResponse resp = new NetworkSwitchResponse();

            resp.ESP_SuccessFlag = EaseSuccessFlag.Error;

            resp.ESP_CustomCode  = request.ESP_CustomeCode;
            resp.ESP_LeaveLength = bizRespBytes.Length;

            if (request.ESP_SuccessFlag != EaseSuccessFlag.SuccessExpress)
            {
                resp.ESP_DataTotalLength = bizRespBytes.Length;
                resp.ESP_DataIndex       = 0;
                resp.ESP_DateEndIndex    = 0;
                resp.ESP_LeaveLength    += 4 * 3;
            }

            resp.ESP_TransferData = bizRespBytes;
            return(resp);
        }
Beispiel #2
0
 /// <summary>
 /// 填充绑定词典
 /// </summary>
 public override void CustomPropertyBindAction()
 {
     BindBuilder.Instance()
     .Add((NetworkSwitchRequest req) => req.ESP_SocketParamCount,     //SOCKET头参数个数(7)
          (s, p, obj) =>
     {
         NetworkSwitchRequest cRequest = (NetworkSwitchRequest)obj;
         PropertyBindState state       = new PropertyBindState();
         if (cRequest.ESP_SuccessFlag == EaseSuccessFlag.Success || cRequest.ESP_SuccessFlag == EaseSuccessFlag.SuccessUserAgent)
         {
             state.StreamBind = true;
             cRequest.ESP_SocketParamCount = s.ReadNetworkStreamAsEntity <short>(2);
             state.PropertyValue           = cRequest.ESP_SocketParamCount;
         }
         return(state);
     })
     .Add((NetworkSwitchRequest req) => req.ESP_EncodeType,        //客户端编码(9)
          (s, p, obj) =>
     {
         NetworkSwitchRequest cRequest = (NetworkSwitchRequest)obj;
         PropertyBindState state       = new PropertyBindState();
         if (cRequest.ESP_SuccessFlag == EaseSuccessFlag.Success || cRequest.ESP_SuccessFlag == EaseSuccessFlag.SuccessUserAgent)
         {
             state.StreamBind        = true;
             cRequest.ESP_EncodeType = s.ReadNetworkStreamAsEntity <EaseEncode>(1);
             state.PropertyValue     = cRequest.ESP_EncodeType;
         }
         return(state);
     })
     .Add((NetworkSwitchRequest req) => req.ESP_DataIndex,        //返回数据起始位置(11)
          (s, p, obj) =>
     {
         NetworkSwitchRequest cRequest = (NetworkSwitchRequest)obj;
         PropertyBindState state       = new PropertyBindState();
         if (cRequest.ESP_SuccessFlag == EaseSuccessFlag.Success || cRequest.ESP_SuccessFlag == EaseSuccessFlag.SuccessUserAgent)
         {
             state.StreamBind       = true;
             cRequest.ESP_DataIndex = s.ReadNetworkStreamAsEntity <int>(4);
             state.PropertyValue    = cRequest.ESP_DataIndex;
         }
         return(state);
     })
     .Add((NetworkSwitchRequest req) => req.ESP_DateEndIndex,        //数据终止位置(13)
          (s, p, obj) =>
     {
         NetworkSwitchRequest cRequest = (NetworkSwitchRequest)obj;
         PropertyBindState state       = new PropertyBindState();
         if (cRequest.ESP_SuccessFlag == EaseSuccessFlag.Success || cRequest.ESP_SuccessFlag == EaseSuccessFlag.SuccessUserAgent)
         {
             state.StreamBind          = true;
             cRequest.ESP_DateEndIndex = s.ReadNetworkStreamAsEntity <int>(4);
             state.PropertyValue       = cRequest.ESP_DateEndIndex;
         }
         return(state);
     })
     .Add((NetworkSwitchRequest req) => req.ESP_AppServerID,        //应用服务器的地址ID(15)
          (s, p, obj) =>
     {
         NetworkSwitchRequest cRequest = (NetworkSwitchRequest)obj;
         PropertyBindState state       = new PropertyBindState();
         if (cRequest.ESP_SuccessFlag == EaseSuccessFlag.Success || cRequest.ESP_SuccessFlag == EaseSuccessFlag.SuccessUserAgent)
         {
             state.StreamBind         = true;
             cRequest.ESP_AppServerID = s.ReadNetworkStreamAsEntity <short>(2);
             state.PropertyValue      = cRequest.ESP_AppServerID;
         }
         return(state);
     })
     .Add((NetworkSwitchRequest req) => req.ESP_Link,        //请求链接(17)
          (s, p, obj) =>
     {
         NetworkSwitchRequest cRequest = (NetworkSwitchRequest)obj;
         //45
         PropertyBindState state = new PropertyBindState();
         if (cRequest.ESP_SuccessFlag == EaseSuccessFlag.Success || cRequest.ESP_SuccessFlag == EaseSuccessFlag.SuccessUserAgent)
         {
             state.StreamBind    = true;
             cRequest.ESP_Link   = s.DataBind <EaseString>(p);
             state.PropertyValue = cRequest.ESP_Link;
         }
         return(state);
     })
     .Add((NetworkSwitchRequest req) => req.ESP_TransferLength,        //应用请求数据(19)
          (s, p, obj) =>
     {
         NetworkSwitchRequest cRequest = (NetworkSwitchRequest)obj;
         PropertyBindState state       = new PropertyBindState();
         if (cRequest.ESP_SuccessFlag == EaseSuccessFlag.Success || cRequest.ESP_SuccessFlag == EaseSuccessFlag.SuccessUserAgent)
         {
             state.StreamBind            = true;
             cRequest.ESP_TransferLength = s.ReadNetworkStreamAsEntity <int>(4);
             state.PropertyValue         = cRequest.ESP_TransferLength;
         }
         return(state);
     })
     .Add((NetworkSwitchRequest req) => req.ESP_TransferData,        /*ESP_TransferData*/
          (s, p, obj) =>
     {
         NetworkSwitchRequest cRequest = (NetworkSwitchRequest)obj;
         int readLen = (cRequest.ESP_SuccessFlag == EaseSuccessFlag.Success || cRequest.ESP_SuccessFlag == EaseSuccessFlag.SuccessUserAgent) ? cRequest.ESP_TransferLength : cRequest.ESP_LeaveLength;
         cRequest.ESP_TransferData = s.ReadNetworkStreamBytes(readLen, true);
         return(new PropertyBindState {
             PropertyValue = cRequest.ESP_TransferData, StreamBind = true
         });
     })
     .End <NetworkSwitchRequest>();
 }
Beispiel #3
0
        public void DoTest()
        {
            int i = 0;

start:

            NetworkSwitchRequest request = new NetworkSwitchRequest();

            request.ESP_SuccessFlag = (i == 0) ? EaseSuccessFlag.SuccessExpress : EaseSuccessFlag.Success;
            request.ESP_CustomeCode = 0;

            request.ESP_TransferData = Encoding.UTF8.GetBytes("123456");

            if (request.ESP_SuccessFlag == EaseSuccessFlag.Success)
            {
                byte[] testLinkBytes = Encoding.UTF8.GetBytes("http://118.123.205.218:888/images/testpic.gif");
                #region 设置完整参数
                request.ESP_SocketParamCount = 3;
                request.ESP_EncodeType       = EaseEncode.UTF8;
                request.ESP_DataIndex        = 0;
                request.ESP_DateEndIndex     = 0;
                request.ESP_AppServerID      = 1;
                request.ESP_Link             = new EaseString {
                    ESP_Data = testLinkBytes, ESP_Length = (ushort)testLinkBytes.Length
                };
                request.ESP_TransferLength = request.ESP_TransferData.Length;
                #endregion
            }

            if (request.ESP_SuccessFlag == EaseSuccessFlag.SuccessExpress)
            {
                request.ESP_LeaveLength = request.ESP_TransferData.Length;
            }
            else
            {
                request.ESP_LeaveLength = 2 + 1 + 4 + 4 + 2 + 4 + (int)request.ESP_Link.GetContentLength(); //后续长度
            }
            //Console.WriteLine("后续长度:{0}", request.ESP_LeaveLength);

            byte[] networkBytes = request.GetNetworkBytes();

            //Console.WriteLine("Total:{0}\r\n{1}", networkBytes.ESP_Length, networkBytes.GetHexViewString());

            NetworkSwitchRequest request2 = new NetworkSwitchRequest();
            MemoryStream         ms       = new MemoryStream(networkBytes);
            ms.Position = 0;
            request2.BindFromNetworkStream(ms, 0, false);

            //Console.WriteLine("########################################");
            //Console.WriteLine(request2.GetNetworkBytes().GetHexViewString());
            //Console.WriteLine("########################################");

            ms.Dispose();

            Assert.That(SpecUtil.AreEqual(request2.GetNetworkBytes(), networkBytes));

            i++;

            if (i < 2)
            {
                //Console.WriteLine("\r\n下一次测试:\r\n");
                goto start;
            }
        }