/// <summary> /// 将对象或具有给定根的对象图形序列化为所提供的流。 /// </summary> /// <param name="serializationStream">格式化程序在其中放置序列化数据的流。此流可以引用多种后备存储区(如文件、网络、内存等)。</param> /// <param name="graph">要序列化的对象或对象图形的根。将自动序列化此根对象的所有子对象。</param> public void Serialize(Stream serializationStream, object graph) { Type InstanceType = graph.GetType(); ObjectTransferOrderAttribute[] transConfig = new ObjectTransferOrderAttribute[0]; PropertyInfo[] transPropertys = SpecUtil.GetTransferProperties(InstanceType, out transConfig); byte[] currentBytes = new byte[0]; ObjectTransferOrderAttribute currentConfig = null; PropertyInfo pInfo = null; for (int i = 0, j = transPropertys.Length; i < j; i++) { pInfo = transPropertys[i]; currentConfig = transConfig[i]; currentBytes = SpecUtil.GetGetHostBytes(pInfo.PropertyType, pInfo.GetValue(graph, null)); if (currentBytes != null && currentBytes.Length > 0) { if (currentConfig.Reverse) { currentBytes = SpecUtil.ReverseBytes(currentBytes); } serializationStream.Write(currentBytes, 0, currentBytes.Length); } } }
public void DoTest() { byte[] dat = Encoding.UTF8.GetBytes("测试"); EaseString str = new EaseString { ESP_Length = (ushort)dat.Length, ESP_Data = dat }; //Console.WriteLine("{0}={1}", str.ESP_Length, dat.ESP_Length); byte[] networkBytes = str.GetNetworkBytes(); //Console.WriteLine("Len: {1}, Network Bytes: {0}", BitConverter.ToString(networkBytes), networkBytes.ESP_Length); //Console.WriteLine("Total:{0}\r\n{1}", networkBytes.ESP_Length, networkBytes.GetHexViewString()); EaseString str2 = new EaseString(); MemoryStream ms = new MemoryStream(networkBytes); ms.Position = 0; if (!HasImplementDataBind) { str2.BindFromNetworkStream(ms, 0, false); } else { str2.BindMappingWithStream(ms); } byte[] bytes2cmp = str2.GetNetworkBytes(); //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString()); Assert.That(str.ESP_Length == str2.ESP_Length); Assert.That(SpecUtil.AreEqual(str.ESP_Data, str2.ESP_Data)); Assert.That(str.Equals(str2)); }
public void DoTest() { ResourceRequest instance = new ResourceRequest(); instance.ESP_Header = RequestHeader.RequestHeader4Test; instance.ESP_PackageIndex = 0; instance.ESP_PackageLength = 0; instance.ESP_LinksCount = 1; byte[] linkDat = EaseString.DefaultEncoding.GetBytes("http://118.123.205.218:888/images/testpic.gif"); instance.ESP_LinkData = new EaseString[] { new EaseString { ESP_Data = linkDat, ESP_Length = (ushort)linkDat.Length } }; byte[] testBytes = instance.GetNetworkBytes(); //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString()); ResourceRequest instanceCmp = new ResourceRequest(); System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes); ms.Position = 0; instanceCmp.BindFromNetworkStream(ms, 0, false); byte[] bytes2cmp = instanceCmp.GetNetworkBytes(); //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString()); Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp)); }
public void DoTest() { PageV21Response instance = new PageV21Response(); instance.ESP_Header = ResponseHeader.ResponseHeader4Test; instance.ESP_Code = StatusCode.Success; byte[] msgBytes = EaseString.DefaultEncoding.GetBytes("OK"); instance.ESP_Message = new EaseString { ESP_Data = msgBytes, ESP_Length = (ushort)msgBytes.Length }; instance.ESP_Method = CommandType.None; byte[] cmdBytes = EaseString.DefaultEncoding.GetBytes("GET / HTTP/1.1"); instance.ESP_Command = new EaseString { ESP_Data = cmdBytes, ESP_Length = (ushort)cmdBytes.Length }; instance.ESP_PageDocCount = 1; instance.ESP_EmbedResDocs = new EmbedResourceDocument[] { EmbedResourceDocument.EmbedResourceDocument4Test }; byte[] testBytes = instance.GetNetworkBytes(); //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString()); PageV21Response instanceCmp = new PageV21Response(); System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes); ms.Position = 0; instanceCmp.BindFromNetworkStream(ms, 0, false); byte[] bytes2cmp = instanceCmp.GetNetworkBytes(); //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString()); Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp)); }
private void treeView_AfterSelect(object sender, TreeViewEventArgs e) { #region 改变并还原上次选中节点的背景颜色 e.Node.BackColor = System.Drawing.Color.YellowGreen; TreeNode lastNode = lastSelectedNode[2]; if (lastNode != null) { lastNode.BackColor = System.Drawing.Color.Transparent; } lastSelectedNode[2] = e.Node; #endregion object nodeTag = e.Node.Tag; if (nodeTag != null && nodeTag.GetType().Equals(typeof(byte[]))) { rtxOutput.Clear(); byte[] bindBytes = (byte[])nodeTag; WriteOutput("{0}", SpecUtil.GetHexViewString(bindBytes)); dataProvider.RawBytes = bindBytes; htmlBrowser.Navigate(dataProvider); SetContextMenuItem(true, true, true, true); } else { SetContextMenuItem(false, false, true, false); } }
public void DoRequest() { byte[] linkBytes = EaseString.DefaultEncoding.GetBytes("http://118.123.205.218:888/blbook/index.aspx"); PageV21Request instance = new PageV21Request { ESP_Link = new EaseString { ESP_Length = (ushort)linkBytes.Length, ESP_Data = linkBytes }, ESP_Header = RequestHeader.RequestHeader4Test }; //ServiceConfig Config = ServiceConfig.GetByServiceID(1); byte[] testBytes = instance.GetNetworkBytes(); //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString()); PageV21Request instanceCmp = new PageV21Request(); System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes); ms.Position = 0; instanceCmp.BindFromNetworkStream(ms, 0, false); byte[] bytes2cmp = instanceCmp.GetNetworkBytes(); //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString()); Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp)); }
private void btnVieHex_Click(object sender, EventArgs e) { if (!tbxHexview.Focused) { outPanel.SelectedTab = tabPageHexview; tbxHexview.Focus(); } switch (VieMode) { case InterfaceViewMode.RequestView: tbxHexview.Text = SpecUtil.HexPatternStringToByteArray(tbxRequestBin.Text).GetHexViewString(); break; case InterfaceViewMode.ResponseView: tbxHexview.Text = SpecUtil.HexPatternStringToByteArray(tbxRespBin.Text).GetHexViewString(); break; case InterfaceViewMode.OtherView: break; default: break; } }
public void DoTest() { ApplicationResponse instance = new ApplicationResponse(); instance.ESP_Header = ResponseHeader.ResponseHeader4Test; instance.ESP_Code = StatusCode.Success; byte[] msgBytes = EaseString.DefaultEncoding.GetBytes("OK"); instance.ESP_Message = new EaseString { ESP_Data = msgBytes, ESP_Length = (ushort)msgBytes.Length }; instance.ESP_Method = CommandType.None; byte[] cmdBytes = EaseString.DefaultEncoding.GetBytes("GET / HTTP/1.1"); instance.ESP_Command = new EaseString { ESP_Data = cmdBytes, ESP_Length = (ushort)cmdBytes.Length }; byte[] linkDat = EaseString.DefaultEncoding.GetBytes("http://118.123.205.218:888/images/testpic.gif"); instance.ESP_AppResponseData = linkDat; instance.ESP_AppResponseLength = linkDat.Length; byte[] testBytes = instance.GetNetworkBytes(); //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString()); ApplicationResponse instanceCmp = new ApplicationResponse(); System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes); ms.Position = 0; instanceCmp.BindFromNetworkStream(ms, 0, false); byte[] bytes2cmp = instanceCmp.GetNetworkBytes(); //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString()); Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp)); }
public void DoTest() { EaseResource res = EaseResource4Test; byte[] networkBytes = res.GetNetworkBytes(); //Console.WriteLine("Len: {1}, Network Bytes: {0}", BitConverter.ToString(networkBytes), networkBytes.ESP_Length); EaseResource str2 = new EaseResource(); MemoryStream ms = new MemoryStream(networkBytes); ms.Position = 0; //Console.WriteLine("网络字节流,长度:{0}\r\n{1}", networkBytes.ESP_Length, networkBytes.GetHexViewString()); if (!HasImplementDataBind) { str2.BindFromNetworkStream(ms, 0, false); } else { str2.BindMappingWithStream(ms); } Assert.That(res.ESP_Name.Equals(str2.ESP_Name)); Assert.That(res.ESP_URL.Equals(str2.ESP_URL)); Assert.That(res.ESP_Length == str2.ESP_Length); Assert.That(res.ESP_Catelog == str2.ESP_Catelog); //Console.WriteLine(str2.ESP_Data.GetHexViewString()); Assert.That(SpecUtil.AreEqual(res.ESP_Data, str2.ESP_Data)); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void testClassDelegateHandling() public virtual void testClassDelegateHandling() { ExtensionElements extensionElements = SpecUtil.createElement(modelInstance, caseTask, null, typeof(ExtensionElements)); CamundaVariableListener variableListener = SpecUtil.createElement(modelInstance, extensionElements, null, typeof(CamundaVariableListener)); CamundaField field = SpecUtil.createElement(modelInstance, variableListener, null, typeof(CamundaField)); field.CamundaName = "fieldName"; field.CamundaStringValue = "a string value"; variableListener.CamundaClass = "a.class.Name"; // when CmmnActivity activity = handler.handleElement(planItem, context); //JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET: //ORIGINAL LINE: java.util.List<org.camunda.bpm.engine.delegate.VariableListener<?>> listeners = activity.getVariableListenersLocal(org.camunda.bpm.engine.delegate.CaseVariableListener_Fields.CREATE); IList <VariableListener <object> > listeners = activity.getVariableListenersLocal([email protected]_Fields.CREATE); Assert.assertEquals(1, listeners.Count); ClassDelegateCaseVariableListener listener = (ClassDelegateCaseVariableListener)listeners[0]; Assert.assertEquals("a.class.Name", listener.ClassName); Assert.assertEquals(1, listener.FieldDeclarations.Count); Assert.assertEquals("fieldName", listener.FieldDeclarations[0].Name); object fieldValue = listener.FieldDeclarations[0].Value; assertTrue(fieldValue is Expression); Expression expressionValue = (Expression)fieldValue; assertEquals("a string value", expressionValue.ExpressionText); Assert.assertEquals(listener, activity.getVariableListenersLocal([email protected]_Fields.UPDATE)[0]); Assert.assertEquals(listener, activity.getVariableListenersLocal([email protected]_Fields.DELETE)[0]); }
/// <summary> /// 从网络字节序列中加载数据 /// </summary> /// <param name="networkBytes"></param> public virtual void LoadFromNetworkBytes(byte[] networkBytes) { MemoryStream ms = new MemoryStream(networkBytes); SpecUtil.BindFromNetworkStream(this, ms, 0, false); ms.Dispose(); }
private void NodeTagSet_Load(object sender, EventArgs e) { if (BindInstance == null) { return; } tbxNodeType.Text = BindInstance.NodeType.AssemblyQualifiedName; tbxNodeSubType.Text = BindInstance.SubType != null ? BindInstance.SubType.AssemblyQualifiedName : ""; tbxStartIndex.Text = BindInstance.StoreIndex.ToString(); tbxStoreLength.Text = BindInstance.StoreLength.ToString(); cbxIsESPData.Checked = BindInstance.IsESPData; if (BindInstance.NodeType.IsSubclassOf(typeof(ESPDataBase))) { ESPDataBase instance = BindInstance.NodeItem as ESPDataBase; if (instance != null) { tbxNodeItem.Text = SpecUtil.ByteArrayToHexString(instance.GetNetworkBytes()); } } else if (BindInstance.NodeType.Equals(typeof(byte[]))) { byte[] targetBytes = BindInstance.NodeItem as byte[]; if (targetBytes != null && targetBytes.Length > 0) { tbxNodeItem.Text = SpecUtil.ByteArrayToHexString(targetBytes); } } else { tbxNodeItem.Text = BindInstance.NodeItem.ToString(); } }
public void DoTest() { ResourcePartialResponse instance = new ResourcePartialResponse(); instance.ESP_Header = ResponseHeader.ResponseHeader4Test; instance.ESP_Code = StatusCode.Success; byte[] msgBytes = EaseString.DefaultEncoding.GetBytes("OK"); instance.ESP_Message = new EaseString { ESP_Data = msgBytes, ESP_Length = (ushort)msgBytes.Length }; instance.ESP_PackageIndex = 1; instance.ESP_LeavePackageCount = 0; //instance.ESP_PackageData = Encoding.ASCII.GetBytes("12345678"); //instance.ESP_PackageLength = instance.ESP_PackageData.Length; byte[] testBytes = instance.GetNetworkBytes(); //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString()); ResourcePartialResponse instanceCmp = new ResourcePartialResponse(); System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes); ms.Position = 0; instanceCmp.BindFromNetworkStream(ms, 0, false); byte[] bytes2cmp = instanceCmp.GetNetworkBytes(); //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString()); Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp)); }
public void AppDownTest() { byte[] testBytes = SpecUtil.HexPatternStringToByteArray(@"C8 00 00 00 1C 00 00 27 14 00 64 00 0B 00 00 0E 52 00 00 00 27 03 00 00 00 00 00 00 00 00 00 00 01"); //HttpClient client = new HttpClient(); //client.UploadData("http://118.123.205.165:8082/App/Post.ashx", testBytes); //foreach (string key in client.ResponseHeaders.AllKeys) //{ // Console.WriteLine("{0}={1}", key, client.ResponseHeaders[key]); //} //client.Dispose(); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://118.123.205.165:8082/App/Post.ashx"); request.Method = "POST"; request.ContentLength = testBytes.Length; request.ContentType = "application/x-www-form-urlencoded";// "application/ease-appdown"; Stream swReq = request.GetRequestStream(); swReq.Write(testBytes, 0, testBytes.Length); swReq.Close(); swReq.Dispose(); HttpWebResponse Resp = null; try { Resp = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { Resp = (HttpWebResponse)ex.Response; } foreach (string key in Resp.Headers.AllKeys) { Console.WriteLine("{0}: {1}", key, Resp.Headers[key]); } Stream respSw = Resp.GetResponseStream(); List <byte> bytList = new List <byte>(); int rdByte = 0; while ((rdByte = respSw.ReadByte()) != -1) { bytList.Add((byte)rdByte); } respSw.Close(); respSw.Dispose(); Console.WriteLine("Length:{0}\r\nRAW:{1}", bytList.Count, SpecUtil.ByteArrayToHexString(bytList.ToArray())); Resp.Close(); }
public void DoTest() { int i = 0; start: NetworkSwitchResponse response = new NetworkSwitchResponse(); response.ESP_SuccessFlag = (i == 0) ? EaseSuccessFlag.SuccessExpress : EaseSuccessFlag.Success; response.ESP_CustomCode = 0; response.ESP_TransferData = Encoding.UTF8.GetBytes("123456"); if (response.ESP_SuccessFlag == EaseSuccessFlag.Success) { #region 设置完整参数 response.ESP_DataTotalLength = 100; response.ESP_DataIndex = 0; response.ESP_DateEndIndex = 0; #endregion } if (response.ESP_SuccessFlag == EaseSuccessFlag.SuccessExpress) { response.ESP_LeaveLength = response.ESP_TransferData.Length; } else { response.ESP_LeaveLength = response.ESP_TransferData.Length + 4 * 3; //后续长度 } //Console.WriteLine("后续长度:{0}", response.ESP_LeaveLength); byte[] networkBytes = response.GetNetworkBytes(); //Console.WriteLine("Total:{0}\r\n{1}", networkBytes.ESP_Length, networkBytes.GetHexViewString()); NetworkSwitchResponse response2 = new NetworkSwitchResponse(); MemoryStream ms = new MemoryStream(networkBytes); ms.Position = 0; response2.BindFromNetworkStream(ms, 0, false); //Console.WriteLine("########################################"); //Console.WriteLine(response2.GetNetworkBytes().GetHexViewString()); //Console.WriteLine("########################################"); ms.Dispose(); Assert.That(SpecUtil.AreEqual(response2.GetNetworkBytes(), networkBytes)); i++; if (i < 2) { //Console.WriteLine("\r\n下一次测试:\r\n"); goto start; } }
/// <summary> /// Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>. /// </summary> /// <param name="obj">The <see cref="T:System.Object"/> to compare with the current <see cref="T:System.Object"/>.</param> /// <returns> /// true if the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>; otherwise, false. /// </returns> /// <exception cref="T:System.NullReferenceException"> /// The <paramref name="obj"/> parameter is null. /// </exception> public override bool Equals(object obj) { if (obj != null && obj.GetType() == this.GetType()) { EaseString target = (EaseString)obj; return(target.ESP_Length == this.ESP_Length && SpecUtil.AreEqual(target.ESP_Data, this.ESP_Data)); } return(base.Equals(obj)); }
/// <summary> /// 从网络字节序列绑定实例 /// </summary> /// <param name="ntkBytes">网络字节序列</param> public static TEntity BindFromNetworkBytes <TEntity>(byte[] ntkBytes) where TEntity : ESPDataBase, new() { TEntity instance = new TEntity(); MemoryStream ms = new MemoryStream(ntkBytes); SpecUtil.BindFromNetworkStream(instance, ms, 0, false); ms.Dispose(); return(instance); }
/// <summary> /// 根据网关传递信息获取转发的请求封装[TODO] /// </summary> /// <returns></returns> public RequestBase GetSubRequest() { if (ESP_TransferData == null || ESP_TransferData.Length < 2) { return(null); } System.IO.MemoryStream ms = ESP_TransferData.AsMemoryStream(); RequestBase subReq = null; RequestHeader header = SpecUtil.DataBind <RequestHeader>(ms, 0); switch (header.ESP_Protocol) { case RequestType.PageV21: subReq = new PageV21Request(Context); break; case RequestType.Mixed: subReq = new MixedRequest(Context); break; case RequestType.Page: subReq = new PageRequest(Context); break; case RequestType.Resource: subReq = new ResourceRequest(Context); break; case RequestType.Application: subReq = new ApplicationRequest(Context); break; case RequestType.UpdateCenter: subReq = new GatewayUpdateRequest(Context); break; case RequestType.SynServerAddress: subReq = new SynServerAddressRequest(Context); break; default: subReq = new ApplicationRequest(Context); break; } if (subReq != null) { subReq.ESP_Header = header; SpecUtil.BindFromNetworkStream(subReq, ms, ms.Position, false, 1); subReq.ContentRange[0] = 0; subReq.ContentRange[1] = ESP_TransferData.LongLength - 1; } ms.Dispose(); return(subReq); }
private void tbxHexview_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] data = (string[])e.Data.GetData(DataFormats.FileDrop); foreach (string str in data) { tbxHexview.Text = SpecUtil.GetHexViewString(System.IO.File.ReadAllBytes(str)); break; } } }
private void btnSaveToBin_Click(object sender, EventArgs e) { byte[] fileBytes = SpecUtil.HexPatternStringToByteArray(tbxBinView.Text); if (fileBytes != null && fileBytes.Length > 0) { SaveBinDataToFileDialog(this, fileBytes); } else { ShowEror("{0}", "未能获取二进制文件内容!"); } }
public void SpecUtilTest() { byte[] testBytes1 = new byte[] { 0x03, 0xF2, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x03 }; byte[] testBytes2 = new byte[] { 0x03, 0xF2, 0x00, 0x00, 0x00, 0x02 }; byte[] testBytes3 = new byte[] { 0x00, 0x00, 0x00, 0x6A, 0x00, 0x03 }; Assert.That(SpecUtil.BytesStartWith(testBytes1, testBytes2)); Assert.That(SpecUtil.BytesStartWith(testBytes1, testBytes3, testBytes2.Length)); Assert.That(SpecUtil.AreEqual(SpecUtil.TrimStart(testBytes1, testBytes2), testBytes3)); Assert.That(SpecUtil.AreEqual(SpecUtil.AddPrefix(testBytes3, testBytes2), testBytes1)); }
public void DoTest() { int testCount = 0; short[] AvaliableLens = new short[] { 21, 20, 18 }; //string ttestString = RequestHeader.HttpRequestURLSyn(RequestHeader4Test, "/index.aspx"); //Console.WriteLine(ttestString); //ttestString = RequestHeader.HttpRequestURLSyn(RequestHeader4Test, "/"); //Console.WriteLine(ttestString); //ttestString = RequestHeader.HttpRequestURLSyn(RequestHeader4Test, "/index.aspx?a=b&c=d"); //Console.WriteLine(ttestString); //ttestString = RequestHeader.HttpRequestURLSyn(RequestHeader4Test, "/index.aspx?abcd"); //Console.WriteLine(ttestString); //return; start: RequestHeader reqH = RequestHeader4Test; reqH.ESP_SuccessFlag = EaseSuccessFlag.Success; reqH.ESP_ParamsCount = AvaliableLens[testCount]; //Console.WriteLine("参数个数为:{0}", reqH.ParamsCount); byte[] reqHBytes = reqH.GetNetworkBytes(); //Console.WriteLine("Total:{0}\r\n{1}", reqHBytes.ESP_Length, reqHBytes.GetHexViewString()); RequestHeader reqH2 = new RequestHeader(); System.IO.MemoryStream ms = new System.IO.MemoryStream(reqHBytes); reqH2.BindFromNetworkStream(ms, 0, false); byte[] bytes2cmp = reqH2.GetNetworkBytes(); //Console.WriteLine(bytes2cmp.GetHexViewString()); bool currentResult = SpecUtil.AreEqual(reqHBytes, bytes2cmp); Assert.That(currentResult, string.Format("**参数为{0}个时,测试失败", reqH.ESP_ParamsCount)); testCount++; if (testCount < 3) { goto start; } else { RequestHeader4Test.ESP_ParamsCount = 21; } }
/// <summary> /// 读取全部数据绑定 /// </summary> /// <typeparam name="TEntity">The type of the entity.</typeparam> /// <returns></returns> public TEntity ReadToEnd <TEntity>() where TEntity : ESPDataBase, new() { TEntity instance = new TEntity(); Type instanceType = typeof(TEntity); ObjectTransferOrderAttribute[] Configs = new ObjectTransferOrderAttribute[0]; PropertyInfo[] bindProperties = SpecUtil.GetTransferProperties(instanceType, out Configs); object currentObj = null, lastDat = null; for (int m = 0, n = bindProperties.Length; m < n; m++) { string propKey = BindBuilder.GetPropertyBindKey(instanceType, bindProperties[m]); if (BindBuilder.CustomBindDict.ContainsKey(propKey)) { currentObj = BindBuilder.CustomBindDict[propKey](bindSteam, instance); //Console.WriteLine("自定义属性绑定回调.."); } else { if (lastDat != null && bindProperties[m].PropertyType.IsArray) { if (Configs[m].ArrayLengthOffset != -1) { throw new NotSupportedException(String.Format("数组属性偏移量不为-1的值暂不支持,当前配置值为:{0}!\r\n实例属性:{1}:{2}, 属性类型:{3}", Configs[m].ArrayLengthOffset, instanceType.FullName, bindProperties[m].Name, bindProperties[m].PropertyType.FullName)); } else { currentObj = SpecUtil.GetArrayPropertyValue(bindProperties[m].PropertyType.GetElementType(), Convert.ToInt32(lastDat), bindSteam); } } else { currentObj = SpecUtil.GetNetworkStreamMappingData(bindProperties[m].PropertyType, instance.Context, bindSteam, -1, false); } } lastDat = currentObj; bindProperties[m].SetValue(instance, currentObj, null); } return(instance); }
/// <summary> /// 获取网络字节序列 /// </summary> /// <returns></returns> public override byte[] GetNetworkBytes() { byte[] retBytes = new byte[0]; System.IO.MemoryStream ms = new System.IO.MemoryStream(); byte[] lenBytes = SpecUtil.ReverseBytes(BitConverter.GetBytes(ESP_Length)); ms.Write(lenBytes, 0, lenBytes.Length); if (ESP_Length > 0) { ms.Write(ESP_Data, 0, ESP_Data.Length); } retBytes = ms.ToArray(); ms.Dispose(); return(retBytes); }
public void DoTest() { //ESP_Type lastObjDateType = typeof(byte[]); //byte[] lastDat = new byte[] { 0x00, 0x01 }; //long lastOffset = Convert.ToInt64(lastObjDateType.GetProperty("ESP_Length").GetValue(lastDat, null)); //Console.WriteLine(lastOffset); MixedResponse instance = new MixedResponse(); instance.ESP_Header = ResponseHeader.ResponseHeader4Test; instance.ESP_Code = StatusCode.Success; byte[] msgBytes = EaseString.DefaultEncoding.GetBytes("OK"); instance.ESP_Message = new EaseString { ESP_Data = msgBytes, ESP_Length = (ushort)msgBytes.Length }; instance.ESP_Method = CommandType.None; byte[] cmdBytes = EaseString.DefaultEncoding.GetBytes("GET / HTTP/1.1"); instance.ESP_Command = new EaseString { ESP_Data = cmdBytes, ESP_Length = (ushort)cmdBytes.Length }; instance.ESP_PageDocCount = 2; instance.ESP_Docs = new EaseDocument[] { EaseDocument.EaseDocument4Test, EaseDocument.EaseDocument4Test }; instance.ESP_PageResCount = 2; instance.ESP_Resources = new EaseResource[] { EaseResource.EaseResource4Test, EaseResource.EaseResource4Test }; byte[] testBytes = instance.GetNetworkBytes(); //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString()); MixedResponse instanceCmp = new MixedResponse(); System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes); ms.Position = 0; instanceCmp.BindFromNetworkStream(ms, 0, false); byte[] bytes2cmp = instanceCmp.GetNetworkBytes(); //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString()); Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp)); }
public void DoTest() { EmbedResourceDocument instance = EmbedResourceDocument4Test; byte[] testBytes = instance.GetNetworkBytes(); //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString()); EmbedResourceDocument instanceCmp = new EmbedResourceDocument(); System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes); ms.Position = 0; instanceCmp.BindFromNetworkStream(ms, 0, false); byte[] bytes2cmp = instanceCmp.GetNetworkBytes(); //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString()); Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp)); }
private void btnSendTest_Click(object sender, EventArgs e) { if (TesterPlugConfig.Instance.CurrentPlug == null) { ShowEror("没有加载任何解析插件在目录{0}中!", TesterPlugConfig.Instance.PlugInDirectory); } else { bool blnGetRemote = true; byte[] respBytes = new byte[0]; try { TesterPlugConfig.Instance.CurrentPlug.ExchangeStore("Plug_Current_ReadObjectFromStream", cbxReadObjectFromStream.Checked); respBytes = TesterPlugConfig.Instance.CurrentPlug.GetTestResponse(SpecUtil.HexPatternStringToByteArray(tbxRequestBin.Text), WriteOutput); } catch (Exception plugExp) { plugExp = SpecUtil.GetTriggerException(plugExp); blnGetRemote = false; ShowEror("插件测试失败,错误消息及跟踪:\r\nMessage:{0} \r\nStackTrace:{1}", plugExp.Message, plugExp.StackTrace); } if (blnGetRemote) { tabControlData.SelectedTab = tabPageResp; if (respBytes != null && respBytes.Length > 0) { if (!tbxHexview.Focused) { outPanel.SelectedTab = tabPageHexview; tbxHexview.Focus(); } //设置返回字节的16进制数据(无ASCII) tbxRespBin.Text = SpecUtil.ByteArrayToHexString(respBytes); tbxHexview.Text = SpecUtil.GetHexViewString(respBytes); } } } }
void HexStringTextBox(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] data = (string[])e.Data.GetData(DataFormats.FileDrop); foreach (string str in data) { FileStream fs = new FileStream(str, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); if (fs.Length > int.MaxValue) { ShowEror("文件大小{0}超过可以显示的最大长度[{1}]!", fs.Length, int.MaxValue); return; } byte[] fileBin = new byte[fs.Length]; fs.Read(fileBin, 0, fileBin.Length); fs.Close(); fs.Dispose(); TextBox tbxTarget = sender as TextBox; if (tbxTarget != null) { if (!cbxBase64Binary.Checked) { tbxTarget.Text = SpecUtil.ByteArrayToHexString(fileBin); } else { if (tbxTarget.Name.Equals(tbxInput.Name)) { //读取为文本文件 tbxInput.Text = getCurrentEncoding().GetString(fileBin); } else if (tbxTarget.Name.Equals(tbxBinView.Name)) { //显示二进制序列的base64编码 tbxTarget.Text = Convert.ToBase64String(fileBin, Base64FormattingOptions.InsertLineBreaks); } } } break; } } }
/// <summary> /// 获取网络字节序列 /// </summary> /// <returns></returns> public override byte[] GetNetworkBytes() { byte[] toFixBytes = GetInstanceNetworkBytes(p => { if (ESP_PackageLength == 0) { return(p.Name.Equals("ESP_PackageBytes")); } return(false); }); ESP_Header.ESP_LeaveLength = toFixBytes.Length - 6; byte[] lenBytes = SpecUtil.ReverseBytes(BitConverter.GetBytes(ESP_Header.ESP_LeaveLength)); for (int i = 0, j = lenBytes.Length; i < j; i++) { Buffer.SetByte(toFixBytes, 2 + i, lenBytes[i]); } return(toFixBytes); }
/// <summary> /// 获取网络字节序列 /// </summary> /// <returns></returns> public override byte[] GetNetworkBytes() { //if (ESP_Header.ESP_LeaveLength == 0) return ResponseBizErrorBytes; byte[] toFixBytes = base.GetNetworkBytes(); ESP_Header.ESP_LeaveLength = toFixBytes.Length - 6; byte[] lenBytes = SpecUtil.ReverseBytes(BitConverter.GetBytes(ESP_Header.ESP_LeaveLength)); for (int i = 0, j = lenBytes.Length; i < j; i++) { Buffer.SetByte(toFixBytes, 2 + i, lenBytes[i]); } //System.Diagnostics.Trace.TraceInformation("业务对象返回字节后续长度: {0} ==> {1}", // ESP_Header.ESP_LeaveLength, // lenBytes.ByteArrayToHexString()); return(toFixBytes); }