private void ReadCallback3(object ar) { WeaveNetWorkItems netc = (WeaveNetWorkItems)ar; Socket handler = netc.SocketSession; //if (!netc.Soc.Poll(100, SelectMode.SelectRead)) //{ // listconn.Remove(netc); // return; //} // Read data from the client socket. try { handler.Receive(netc.Buffer = new byte[netc.SocketSession.Available]); //if (bytesRead > 0) //{ // // There might be more data, so store the data received so far. byte[] tempbtye = new byte[netc.Buffer.Length]; //netc.Buffer.CopyTo(tempbtye, 0); Array.Copy(netc.Buffer, 0, tempbtye, 0, tempbtye.Length); netc.DataList.Add(tempbtye); // System.Threading.Thread.Sleep(10); } catch { } //handler.BeginReceive(netc.Buffer, 0, netc.BufferSize, 0, new AsyncCallback(ReadCallback), netc); }
private void ReadCallback(IAsyncResult ar) { int bytesRead = 0; IPEndPoint server = new IPEndPoint(IPAddress.Any, Port); EndPoint ep = server; bytesRead = socketLisener.EndReceiveFrom(ar, ref ep); WeaveNetWorkItems workItem = (WeaveNetWorkItems)ar.AsyncState; workItem.Ep = ep; try { byte[] tempbtye = new byte[bytesRead]; if (bytesRead > 0) { Array.Copy(workItem.Buffer, 0, tempbtye, 0, bytesRead); var query = weaveNetworkItems.Where(p => p.Ep.Equals(ep)); foreach (WeaveNetWorkItems wnw in query) { wnw.DataList.Add(tempbtye); return; } WeaveUpdateSocketListEvent?.Invoke(ep); workItem.Lasttime = DateTime.Now; workItem.Ep = ep; workItem.DataList.Add(tempbtye); weaveNetworkItems.Add(workItem); return; } } catch { } }
public void KeepAlive(object obj) { while (true) { try { System.Threading.Thread.Sleep(8000); // ArrayList al = new ArrayList(); // al.Clone() WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[netWorkList.Count]; netWorkList.CopyTo(netlist); foreach (WeaveNetWorkItems netc in netlist) { try { byte[] b = new byte[1]; netc.SocketSession.Send(b); } catch { try { netc.SocketSession.Close(); } catch { } ThreadPool.QueueUserWorkItem(new WaitCallback(DeleteSocketListHander), netc.SocketSession); netWorkList.Remove(netc); } } GC.Collect(); } catch { } } }
void receivepackageData(object ias) { while (true) { try { WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[weaveWorkItemsList.Count]; weaveWorkItemsList.CopyTo(netlist); foreach (WeaveNetWorkItems netc in netlist) { if (netc.DataList.Count > 0) { if (!netc.IsPage) { netc.IsPage = true; //System.Threading.Thread t = new System.Threading.Thread(new ParameterizedThreadStart(packageData)); //t.Start(netc); System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(packageData), netc); //packageDataHandler pdh = new packageDataHandler(packageData); //pdh.BeginInvoke(netc, null, null); } // System.Threading.Thread.Sleep(1); } // System.Threading.Thread.Sleep(5); } System.Threading.Thread.Sleep(5); } catch { } } }
void Accept(object ias) { while (true) { try { Socket handler = socket.Accept(); //if (listener == null) // return; //Socket handler = listener.EndAccept(ar); //listener.BeginAccept(new AsyncCallback(Accept), listener); // Create the state object. WeaveNetWorkItems netc = new WeaveNetWorkItems(); netc.SocketSession = handler; netc.State = 0; // listconn.Add(netc); connlist.Add(netc); // new receiveconndele(setherd2).BeginInvoke(handler, null, null); // System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(setherd2), handler); //handler.BeginReceive(netc.Buffer, 0, netc.BufferSize, 0, new AsyncCallback(ReadCallback2), netc); } catch (Exception ex) { string ems = ex.Message; } } }
private void ReceivePageHander(object obj) { // throw new NotImplementedException(); while (true) { try { WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[weaveNetworkItems.Count]; weaveNetworkItems.CopyTo(netlist); foreach (WeaveNetWorkItems netc in netlist) { if (netc.DataList.Count > 0) { if (!netc.IsPage) { netc.IsPage = true; ThreadPool.QueueUserWorkItem(new WaitCallback(packageData), netc); //System.Threading.Thread t = new System.Threading.Thread(new ParameterizedThreadStart(packageData)); //t.Start(netc); //Webp2psever.packageDataHandler pdh = new Webp2psever.packageDataHandler(packageData); //pdh.BeginInvoke(netc, endpackageData, null); } } } System.Threading.Thread.Sleep(10); } catch { } } }
void ReceivePageHander(object ias) { while (true) { try { WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[netWorkList.Count]; netWorkList.CopyTo(netlist); foreach (WeaveNetWorkItems netc in netlist) { if (netc.DataList.Count > 0) { if (!netc.IsPage) { netc.IsPage = true; ThreadPool.QueueUserWorkItem(new WaitCallback(PackageData), netc); //System.Threading.Thread t = new System.Threading.Thread(new ParameterizedThreadStart(PackageData)); //t.Start(netc); } } } System.Threading.Thread.Sleep(10); } catch { } } }
private void ReadCallback(IAsyncResult ar) { WeaveNetWorkItems netc = (WeaveNetWorkItems)ar.AsyncState; Socket handler = netc.SocketSession; try { int bytesRead = 0; try { bytesRead = handler.EndReceive(ar); } catch { netc.SocketSession.Close(); netWorkList.Remove(netc); } byte[] tempbtye = new byte[bytesRead]; //netc.Buffer.CopyTo(tempbtye, 0); if (bytesRead > 0) { Array.Copy(netc.Buffer, 0, tempbtye, 0, bytesRead); netc.DataList.Add(tempbtye); } } catch { } }
private void PackageData(object obj) { WeaveNetWorkItems netc = obj as WeaveNetWorkItems; List <byte[]> ListData = netc.DataList; try { int i = 0; int count = ListData.Count; if (count > 0) { int bytesRead = ListData[i] != null ? ListData[i].Length : 0; if (bytesRead == 0) { if (ListData.Count > 0) { ListData.RemoveAt(0); } netc.IsPage = false; return; } ; byte[] tempbtye = new byte[bytesRead]; Array.Copy(ListData[i], tempbtye, tempbtye.Length); try { DtuModel dd = new DtuModel(); dd.Data = tempbtye; dd.Soc = netc.SocketSession; if (weaveReceiveDtuEvent != null) { ThreadPool.QueueUserWorkItem(new WaitCallback(DtuReceiveEventCallBack), dd); } // receiveeventDtu.BeginInvoke(tempbtye, netc.Soc, null, null); if (ListData.Count > 0) { ListData.RemoveAt(i); } netc.IsPage = false; return; } catch //(Exception e) { netc.IsPage = false; return; } } } catch //(Exception e) { if (netc.DataList.Count > 0) { netc.DataList.RemoveAt(0); } netc.IsPage = false; return; } finally { netc.IsPage = false; } }
void AcceptHander(object ias) { while (true) { Socket handler = socket.Accept(); WeaveNetWorkItems netc = new WeaveNetWorkItems(); netc.SocketSession = handler; netWorkList.Add(netc); System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(UpdateSocketListHander), handler); } }
//private static readonly ConditionalWeakTable<Socket, StrongBox<EndPoint>> _extensionField_f=new ConditionalWeakTable<Socket, StrongBox<EndPoint>>(); // EndPoint get_f(Socket obj) //{ // StrongBox<EndPoint> box; // if (!_extensionField_f.TryGetValue(obj, out box)) // return default(EndPoint); // return box.Value; //} // void set_f(Socket obj, EndPoint value) //{ // StrongBox<EndPoint> box = _extensionField_f.GetOrCreateValue(obj); // box.Value = value; //} // void Remove(Socket obj) //{ // _extensionField_f.Remove(obj); //} private void ReadCallback(IAsyncResult ar) { int bytesRead = 0; IPEndPoint server = new IPEndPoint(IPAddress.Any, Port); EndPoint ep = (EndPoint)server; bytesRead = socketLisener.EndReceiveFrom(ar, ref ep); WeaveNetWorkItems workItem = (WeaveNetWorkItems)ar.AsyncState; // Socket handler = workItem.SocketSession; workItem.Ep = ep; try { byte[] tempbtye = new byte[bytesRead]; if (bytesRead > 0) { Array.Copy(workItem.Buffer, 0, tempbtye, 0, bytesRead); var query = weaveNetworkItems.Where(p => p.Ep.Equals(ep)); foreach (WeaveNetWorkItems wnw in query) { if (tempbtye.Length == 1 && tempbtye[0] == 0x99) { wnw.Lasttime = DateTime.Now; return; } wnw.DataList.Add(tempbtye); return; } ; // Socket soc = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp); // set_f(soc, ep); //EndPoint ee = get_f(soc); //System.Windows.Forms.MessageBox.Show(ee.ToString()); if (weaveUpdateSocketListEvent != null) { weaveUpdateSocketListEvent(ep); } workItem.Lasttime = DateTime.Now; workItem.Ep = ep; workItem.DataList.Add(tempbtye); weaveNetworkItems.Add(workItem); return; } } catch { } }
void ReceiveHander(object ias) { while (true) { try { int c = netWorkList.Count; WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[c]; netWorkList.CopyTo(0, netlist, 0, c); getbuffer(netlist, 0, c); } catch { } System.Threading.Thread.Sleep(10); } }
void setherd(object obj) { try { WeaveNetWorkItems netc = obj as WeaveNetWorkItems; sendhead(netc.SocketSession, netc.Buffer); // System.Threading.Thread.Sleep(50); // new sendheaddele(sendhead).BeginInvoke(netc.Soc, netc.Buffer, null, null); netc.State = 1; if (weaveUpdateSocketListEvent != null) { weaveUpdateSocketListEvent(netc.SocketSession); } // EventUpdataConnSoc.BeginInvoke(netc.Soc, null, null); } catch { } }
void receive(object ias) { while (true) { try { //int c = listconn.Count; //int count = (c / Partition) + 1; //getbufferdelegate[] iagbd = new getbufferdelegate[count]; //IAsyncResult[] ia = new IAsyncResult[count]; //if (c > 0) //{ // for (int i = 0; i < count; i++) // { // c = c - (i * Partition) > Partition ? Partition : c - (i * Partition); // NETcollection[] netlist = new NETcollection[c]; // listconn.CopyTo(i * Partition, netlist, 0, c); // iagbd[i] = new getbufferdelegate(getbuffer); // ia[i] = iagbd[i].BeginInvoke(netlist, 0, Partition,1,30, null, null); // } // for (int i = 0; i < count; i++) // { // iagbd[i].EndInvoke(ia[i]); // } //} int c = weaveWorkItemsList.Count; //int count = (c / 2000) + 1; //if (c > 0) // for (int i = 0; i < count; i++) // { // c = c - (i * 2000) > 2000 ? 2000 : c - (i * 2000); // NETcollection[] netlist2 = new NETcollection[c]; // listconn.CopyTo(i * 2000, netlist2, 0, c); // System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(gg), netlist2); // //new getbufferdelegate(getbuffer).BeginInvoke(netlist, 0, 2000,null,null); // } WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[c]; weaveWorkItemsList.CopyTo(0, netlist, 0, c); getbuffer(netlist, 0, c, 1, 30); System.Threading.Thread.Sleep(1); } catch { } } }
void getbuffer(WeaveNetWorkItems[] netlist, int index, int len) { for (int i = index; i < len; i++) { WeaveNetWorkItems netc = netlist[i]; try { if (netc.SocketSession != null) { if (netc.SocketSession.Available > 0) { netc.SocketSession.BeginReceive(netc.Buffer = new byte[netc.SocketSession.Available], 0, netc.Buffer.Length, 0, new AsyncCallback(ReadCallback), netc); } } } catch { } } }
public void KeepAliveHander(object obj) { while (true) { try { WeaveNetWorkItems[] weaveWorkItems = new WeaveNetWorkItems[weaveWorkItemsList.Count]; weaveWorkItemsList.CopyTo(weaveWorkItems); foreach (WeaveNetWorkItems workItem in weaveWorkItems) { try { if (workItem == null) { continue; } if (workItem.State != 0) { DataFrame df = new DataFrame(); df.setByte(new byte[] { 0x99 }); workItem.SocketSession.Send(df.GetBytes()); workItem.ErrorNum = 0; } } catch { workItem.ErrorNum += 1; if (workItem.ErrorNum > 3) { ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(DeleteSocketListHander), workItem.SocketSession); // EventDeleteConnSoc.BeginInvoke(netc.Soc, null, null); weaveWorkItemsList.Remove(workItem); } } } System.Threading.Thread.Sleep(8000); } catch { } } }
private void ReceiveHander(object obj) { while (true) { try { if (socketLisener.Available > 0) { WeaveNetWorkItems netc = new WeaveNetWorkItems(); byte[] b = new byte[socketLisener.Available]; netc.Buffer = b; IPEndPoint server = new IPEndPoint(IPAddress.Any, Port); EndPoint ep = (EndPoint)server; socketLisener.BeginReceiveFrom(b, 0, b.Length, SocketFlags.None, ref ep, new AsyncCallback(ReadCallback), netc); } } catch { } System.Threading.Thread.Sleep(1); } }
public void KeepAliveHander(object obj) { // throw new NotImplementedException(); // Remove() while (true) { try { WeaveNetWorkItems[] workItems = new WeaveNetWorkItems[weaveNetworkItems.Count]; weaveNetworkItems.CopyTo(workItems); foreach (WeaveNetWorkItems workItem in workItems) { if (workItem == null) { continue; } Thread.Sleep(1); try { EndPoint ep = workItem.Ep; byte[] b = new byte[] { 0x99 }; socketLisener.SendTo(b, ep); if ((DateTime.Now - workItem.Lasttime).TotalSeconds > 90) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(DeleteSocketListEventHander), workItem.Ep); // Remove(workItem.SocketSession); weaveNetworkItems.Remove(workItem); } } catch { workItem.ErrorNum += 1; } } Thread.Sleep(5000); // GC.Collect(); } catch { } } }
private void ReadCallback2(IAsyncResult ar) { WeaveNetWorkItems netc = (WeaveNetWorkItems)ar.AsyncState; Socket handler = netc.SocketSession; int bytesRead = 0; try { try { bytesRead = handler.EndReceive(ar); } catch { netc.SocketSession.Close(); weaveWorkItemsList.Remove(netc); } byte[] tempbtye = new byte[bytesRead]; Array.Copy(netc.Buffer, 0, tempbtye, 0, bytesRead); // System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback()) netc.State = 1; SendHeadDelegate sh = new SendHeadDelegate(sendhead); IAsyncResult ia = sh.BeginInvoke(handler, tempbtye, null, null); sh.EndInvoke(ia); //if (EventUpdataConnSoc != null) // EventUpdataConnSoc.BeginInvoke(handler, null, null); System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(UpdateSocketListHander), handler); return; //System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(UpdataConnSoc)); //t.Start(handler); // handler.BeginSend(aaa, 0, aaa.Length, 0, HandshakeFinished, handler); } catch (Exception ex) { string ems = ex.Message; } //handler.BeginReceive(netc.Buffer, 0, netc.BufferSize, 0, new AsyncCallback(ReadCallback), netc); }
void getbuffer(WeaveNetWorkItems[] netlist, int index, int len, int state, int num) { for (int i = index; i < len; i++) { if (i >= netlist.Length) { return; } try { WeaveNetWorkItems netc = netlist[i]; if (netc.SocketSession != null) { if (netc.SocketSession.Available > 0) { if (netc.State == state) { if (netc.SocketSession.Available > num) { if (state == 0) { netc.SocketSession.BeginReceive(netc.Buffer = new byte[netc.SocketSession.Available], 0, netc.Buffer.Length, 0, new AsyncCallback(ReadCallback2), netc); } if (state == 1) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ReadCallback3), netc); } // netc.Soc.BeginReceive(netc.Buffer = new byte[netc.Soc.Available], 0, netc.Buffer.Length, 0, new AsyncCallback(ReadCallback), netc); // listconn.Find(p=>p==netc).State = 1; } } } } } catch { } } }
public void KeepAliveHander(object obj) { while (true) { try { WeaveNetWorkItems[] workItems = new WeaveNetWorkItems[weaveNetworkItems.Count]; weaveNetworkItems.CopyTo(workItems); foreach (WeaveNetWorkItems workItem in workItems) { if (workItem == null) { continue; } Thread.Sleep(1); try { EndPoint ep = workItem.Ep; byte[] b = new byte[] { 0x99 }; Send(ep, 0x99, new byte[1]); //socketLisener.SendTo(b, ep); if ((DateTime.Now - workItem.Lasttime).TotalSeconds > 90) { ThreadPool.QueueUserWorkItem(new WaitCallback(DeleteSocketListEventHander), workItem.Ep); weaveNetworkItems.Remove(workItem); } } catch { workItem.ErrorNum += 1; } } Thread.Sleep(5000); } catch { } } }
private void ReadCallback(IAsyncResult ar) { WeaveNetWorkItems netc = (WeaveNetWorkItems)ar.AsyncState; Socket handler = netc.SocketSession; //if (!netc.Soc.Poll(100, SelectMode.SelectRead)) //{ // listconn.Remove(netc); // return; //} // Read data from the client socket. try { int bytesRead = 0; try { bytesRead = handler.EndReceive(ar); } catch { netc.SocketSession.Close(); weaveWorkItemsList.Remove(netc); } //if (bytesRead > 0) //{ // // There might be more data, so store the data received so far. byte[] tempbtye = new byte[bytesRead]; //netc.Buffer.CopyTo(tempbtye, 0); Array.Copy(netc.Buffer, 0, tempbtye, 0, bytesRead); netc.DataList.Add(tempbtye); // System.Threading.Thread.Sleep(10); } catch { } //handler.BeginReceive(netc.Buffer, 0, netc.BufferSize, 0, new AsyncCallback(ReadCallback), netc); }
private void ReceivePageHander(object obj) { while (true) { try { WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[weaveNetworkItems.Count]; weaveNetworkItems.CopyTo(netlist); foreach (WeaveNetWorkItems netc in netlist) { if (netc.DataList.Count > 0) { if (!netc.IsPage) { netc.IsPage = true; ThreadPool.QueueUserWorkItem(new WaitCallback(PackageData), netc); } } } Thread.Sleep(10); } catch { } } }
void receiveconn(object ias) { // NETcollection netcs = ias as NETcollection; while (true) { int c = connlist.Count; WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[c]; connlist.CopyTo(0, netlist, 0, c); foreach (WeaveNetWorkItems netc in netlist) { try { if (netc != null) { if (netc.SocketSession != null) { if (netc.State == 0) { if (netc.SocketSession.Available > 200) { netc.SocketSession.Receive(netc.Buffer = new byte[netc.SocketSession.Available]); // setherd(netc); //new receiveconndele(setherd).BeginInvoke(netc, null, null); System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(setherd), netc); connlist.Remove(netc); weaveWorkItemsList.Add(netc); } } } } } catch { } } System.Threading.Thread.Sleep(1); } }
protected override bool Setherd(WeaveNetWorkItems netc, int xintiao = 0) { //WeaveNetWorkItems netc = obj as WeaveNetWorkItems; try { if (xintiao == 1) { if (netc.State == 1) { return(true); } return(false); } if (netc.State == 1) { return(true); } if (Certificate != null) { string httpstr = ReadMessage(netc.Stream); byte[] tempbtye = Encoding.Default.GetBytes(httpstr); tempbtye = ManageHandshake(tempbtye, tempbtye.Length); netc.Stream.Write(tempbtye); netc.Stream.Flush(); netc.State = 1; return(false); } else { //lb11220: // while (netc.SocketSession.Available < 200) // { // System.Threading.Thread.Sleep(10); // goto lb11220; // } if (netc.SocketSession.Available < 200) { return(false); } netc.Buffer = new byte[netc.SocketSession.Available]; //if (netc.SocketSession.Available == 0) // return false; netc.SocketSession.Receive(netc.Buffer); if (Sendhead(netc.SocketSession, netc.Buffer)) { netc.Buffer = new byte[0]; netc.State = 1; System.Threading.ThreadPool.QueueUserWorkItem( new System.Threading.WaitCallback(UpdateSocketListEventHander), netc.SocketSession); // UpdateSocketListEventHander(netc.SocketSession); // base.weaveUpdateSocketListEvent() // base.weaveUpdateSocketListEvent?.Invoke(netc.SocketSession); return(false); } else { try { netc.SocketSession.Close(); } catch { } } } return(false); //weaveWorkItemsList.Add(netc); //weaveUpdateSocketListEvent?.Invoke(netc.SocketSession); } catch { // try { netc.SocketSession.Close(); } catch { } return(false); } finally { netc.IsPage = false; } }
private void packageData(object obj) { WeaveNetWorkItems netc = obj as WeaveNetWorkItems; List <byte[]> ListData = netc.DataList; try { int i = 0; int count = ListData.Count; if (count > 0) { int bytesRead = ListData[i] != null ? ListData[i].Length : 0; if (bytesRead == 0) { if (ListData.Count > 0) { ListData.RemoveAt(0); } netc.IsPage = false; return; } ; byte[] tempbtye = new byte[bytesRead]; Array.Copy(ListData[i], tempbtye, tempbtye.Length); if (bytesRead > 2) { netc.Lasttime = DateTime.Now; int a = tempbtye[1]; if (bytesRead > 2 + a) { int len = 0; if (weaveDataType == WeaveDataTypeEnum.Bytes) { byte[] bb = new byte[a]; Array.Copy(tempbtye, 2, bb, 0, a); len = ConvertToInt(bb); } else { String temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2, a); len = int.Parse(temp); } if ((len + 2 + a) > tempbtye.Length) { try { if (ListData.Count > 1) { ListData.RemoveAt(i); byte[] temps = new byte[tempbtye.Length]; Array.Copy(tempbtye, temps, temps.Length); byte[] tempbtyes = new byte[temps.Length + ListData[i].Length]; Array.Copy(temps, tempbtyes, temps.Length); Array.Copy(ListData[i], 0, tempbtyes, temps.Length, ListData[i].Length); ListData[i] = tempbtyes; } } catch { } netc.IsPage = false; return; } else if (tempbtye.Length > (len + 2 + a)) { try { byte[] temps = new byte[tempbtye.Length - (len + 2 + a)]; Array.Copy(tempbtye, (len + 2 + a), temps, 0, temps.Length); ListData[i] = temps; } catch { } // netc.Ispage = false; return; } else if (tempbtye.Length == (len + 2 + a)) { if (ListData.Count > 0) { ListData.RemoveAt(i); } } try { if (weaveDataType == WeaveDataTypeEnum.Json) { String temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2 + a, len); WeaveEvent me = new WeaveEvent(); me.Command = tempbtye[0]; me.Data = temp; me.Ep = netc.Ep; if (waveReceiveEvent != null) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ReceiveEventHander), me); } //receiveeventto(me); //if (receiveevent != null) // receiveevent.BeginInvoke(tempbtye[0], temp, netc.Soc, null, null); //if (ListData.Count > 0) ListData.RemoveAt(i); } else if (weaveDataType == WeaveDataTypeEnum.Bytes) { // temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2 + a, len); byte[] bs = new byte[len]; Array.Copy(tempbtye, (2 + a), bs, 0, bs.Length); WeaveEvent me = new WeaveEvent(); me.Command = tempbtye[0]; me.Data = ""; me.Databit = bs; me.Ep = netc.Ep; if (weaveReceiveBitEvent != null) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ReceiveBitEventHander), me); } } netc.IsPage = false; return; } catch { netc.IsPage = false; return; } } else { if (ListData.Count > 0) { ListData.RemoveAt(i); byte[] temps = new byte[tempbtye.Length]; Array.Copy(tempbtye, temps, temps.Length); byte[] tempbtyes = new byte[temps.Length + ListData[i].Length]; Array.Copy(temps, tempbtyes, temps.Length); Array.Copy(ListData[i], 0, tempbtyes, temps.Length, ListData[i].Length); ListData[i] = tempbtyes; } netc.IsPage = false; return; } } else { try { if (ListData.Count > 1) { ListData.RemoveAt(i); byte[] temps = new byte[tempbtye.Length]; Array.Copy(tempbtye, temps, temps.Length); byte[] tempbtyes = new byte[temps.Length + ListData[i].Length]; Array.Copy(temps, tempbtyes, temps.Length); Array.Copy(ListData[i], 0, tempbtyes, temps.Length, ListData[i].Length); ListData[i] = tempbtyes; } } catch { } netc.IsPage = false; return; } } } catch { if (netc.DataList.Count > 0) { netc.DataList.RemoveAt(0); } netc.IsPage = false; return; } finally { netc.IsPage = false; } }
private void packageData(object obj) { WeaveNetWorkItems netc = obj as WeaveNetWorkItems; try { // Array.Copy(netc.Datalist, ListData, count); //while (true) //{ int count = netc.DataList.Count; List <Byte[]> ListData = netc.DataList; int i = 0; if (netc.DataList.Count > 0) { DataFrameHeader dfh = null; int bytesRead = ListData[i] != null ? ListData[i].Length : 0; if (bytesRead == 0) { if (ListData.Count > 0) { ListData.RemoveAt(0); } netc.IsPage = false; return; } ; byte[] tempbtyes = new byte[bytesRead]; Array.Copy(ListData[i], tempbtyes, tempbtyes.Length); byte[] masks = new byte[4]; int lens = 0; int paylen = 0; byte[] tempbtye = null; try { DataFrame df = new DataFrame(); // AnalyticData(tempbtyes, bytesRead, ref masks, ref lens, ref paylen); tempbtye = df.GetData(tempbtyes, ref masks, ref lens, ref paylen, ref dfh); if (dfh.OpCode != 2) { ListData.RemoveAt(i); netc.IsPage = false; return; } } catch { if (paylen > bytesRead) { ListData.RemoveAt(i); byte[] temps = new byte[tempbtyes.Length]; Array.Copy(tempbtyes, temps, temps.Length); tempbtyes = new byte[temps.Length + ListData[i].Length]; Array.Copy(temps, tempbtyes, temps.Length); Array.Copy(ListData[i], 0, tempbtyes, temps.Length, ListData[i].Length); ListData[i] = tempbtyes; } else { ListData.RemoveAt(i); } netc.IsPage = false; return; } if (tempbtye == null) { netc.IsPage = false; return; } if (tempbtye.Length > 0) { #region MyRegion String temp = ""; int a = tempbtye[1]; if (bytesRead > 2 + a) { int len = 0; if (DT == WeaveDataTypeEnum.Bytes) { byte[] bb = new byte[a]; Array.Copy(tempbtye, 2, bb, 0, a); len = ConvertToInt(bb); } else { temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2, a); try { len = int.Parse(temp); } catch { if (bytesRead > tempbtye.Length + lens) { int aa = bytesRead - (tempbtye.Length + lens); byte[] temptt = new byte[aa]; Array.Copy(tempbtyes, (tempbtye.Length + lens), temptt, 0, temptt.Length); ListData[i] = temptt; netc.IsPage = false; return; } } } if (tempbtye.Length == (len + 2 + a)) { if (bytesRead > tempbtye.Length + lens) { int aa = bytesRead - (tempbtye.Length + lens); byte[] temptt = new byte[aa]; Array.Copy(tempbtyes, (tempbtye.Length + lens), temptt, 0, temptt.Length); ListData[i] = temptt; } else if (bytesRead < tempbtye.Length + lens) { } else { ListData.RemoveAt(i); } if (DT == WeaveDataTypeEnum.Json) { temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2 + a, len); } } else { len = tempbtye.Length - 2 - a; if (DT == WeaveDataTypeEnum.Json) { temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2 + a, len); } if (bytesRead > tempbtye.Length + lens) { int aa = bytesRead - (tempbtye.Length + lens); byte[] temptt = new byte[aa]; Array.Copy(tempbtyes, (tempbtye.Length + lens), temptt, 0, temptt.Length); ListData[i] = temptt; temp = combine(temp, temptt, ListData); } else { ListData.RemoveAt(i); while (!(ListData.Count > 0)) { System.Threading.Thread.Sleep(100); } temp = combine(temp, ListData[i], ListData); } // netc.Ispage = false; return; } try { if (DT == WeaveDataTypeEnum.Json) { WeaveEvent me = new WeaveEvent(); me.Command = tempbtye[0]; me.Data = temp; me.Soc = netc.SocketSession; me.Masks = masks; //System.Threading.Thread t = new Thread(new ParameterizedThreadStart(receiveeventto)); //t.Start(me); //receiveeventto(me); if (waveReceiveEvent != null) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ReceiveToEventHander), me); } //if (receiveevent != null) // receiveevent(me.Command, me.Data, me.Soc); } else if (DT == WeaveDataTypeEnum.Bytes) { byte[] bs = new byte[len - (2 + a)]; Array.Copy(tempbtye, 2 + a, bs, 0, bs.Length); WeaveEvent me = new WeaveEvent(); me.Command = tempbtye[0]; me.Data = ""; me.Databit = bs; me.Soc = netc.SocketSession; if (weaveReceiveBitEvent != null) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ReceiveToBitEventHander), me); } } netc.IsPage = false; return; } catch (Exception ex) { string ems = ex.Message; netc.IsPage = false; return; } } #endregion } } // } } catch (Exception ex) { string ems = ex.Message; if (netc.DataList.Count > 0) { netc.DataList.RemoveAt(0); } netc.IsPage = false; return; } }