/// <summary> /// The process received data. /// </summary> /// <param name="pipe"> /// The pipe. /// </param> protected override void processReceivedData(Pipe pipe) { try { this.Server.Codec.ParseBytePackage(pipe, this.TCPSocket.RemoteEndPoint); } catch (NullReferenceException exc) { while (this.Server == null) { Thread.Sleep(0); } this.Server.Codec.ParseBytePackage(pipe, this.TCPSocket.RemoteEndPoint); } catch (Exception e) { } }
/// <summary> /// The process received data. /// </summary> /// <param name="dataPipe"> /// The data pipe. /// </param> /// <param name="remoteEndPoint"> /// The remote end point. /// </param> /// <param name="size"> /// The size. /// </param> protected override void ProcessReceivedData(Pipe dataPipe, EndPoint remoteEndPoint, int size) { try { this.codec.ParseBytePackage(dataPipe, remoteEndPoint, size); } catch (NullReferenceException exc) { while (this.codec == null) { Thread.Sleep(0); } this.codec.ParseBytePackage(dataPipe, remoteEndPoint, size); } catch (Exception e) { Trace.Write("WGateWay Parsing Problem! (Reason: " + e + ")"); } }
/// <summary> /// The process received data. /// </summary> /// <param name="dataPipe"> /// The data pipe. /// </param> protected abstract void processReceivedData(Pipe dataPipe);
/// <summary> /// The parse byte package. /// </summary> /// <param name="dataPipe"> /// The data pipe. /// </param> /// <param name="remoteEndPoint"> /// The remote end point. /// </param> /// <param name="maxPacketSize"> /// The max packet size. /// </param> internal void ParseBytePackage(Pipe dataPipe, EndPoint remoteEndPoint, int maxPacketSize) { var remoteAddress = remoteEndPoint.ToString(); uint readedBytes = 0; ushort cmdId, dataType; uint payloadSize, dataCount, param1, param2; byte[] payload = null; byte[] header = null; while (maxPacketSize == 0 || maxPacketSize >= (readedBytes + 16)) { header = dataPipe.Read(16); // Pipe destroyed if (header.Length == 0) { return; } cmdId = NetworkByteConverter.ToUInt16(header, 0); payloadSize = NetworkByteConverter.ToUInt16(header, 2); dataType = NetworkByteConverter.ToUInt16(header, 4); param1 = NetworkByteConverter.ToUInt32(header, 8); param2 = NetworkByteConverter.ToUInt32(header, 12); if (payloadSize == 0xFFFF) { payloadSize = NetworkByteConverter.ToUInt32(dataPipe.Read(4)); dataCount = NetworkByteConverter.ToUInt32(dataPipe.Read(4)); readedBytes += payloadSize + 24; } else { dataCount = NetworkByteConverter.ToUInt16(header, 6); readedBytes += payloadSize + 16; } payload = dataPipe.Read((int)payloadSize); this.HandleMessage( cmdId, dataType, ref payloadSize, ref dataCount, ref param1, ref param2, ref header, ref payload, ref remoteEndPoint); } }
/// <summary> /// The parse byte package. /// </summary> /// <param name="dataPipe"> /// The data pipe. /// </param> /// <param name="remoteEndPoint"> /// The remote end point. /// </param> internal void ParseBytePackage(Pipe dataPipe, EndPoint remoteEndPoint) { this.ParseBytePackage(dataPipe, remoteEndPoint, 0); }
/// <summary> /// The process received data. /// </summary> /// <param name="dataPipe"> /// The data pipe. /// </param> /// <param name="remoteEndPoint"> /// The remote end point. /// </param> /// <param name="size"> /// The size. /// </param> protected override void ProcessReceivedData(Pipe dataPipe, EndPoint remoteEndPoint, int size) { try { this.Server.Codec.ParseBytePackage(dataPipe, remoteEndPoint, size); } catch (NullReferenceException exc) { while (this.Server == null) { Thread.Sleep(0); } this.Server.Codec.ParseBytePackage(dataPipe, remoteEndPoint, size); } catch (Exception e) { Trace.Write("WServer Parsing Error"); } }
/// <summary> /// The process received data. /// </summary> /// <param name="dataPipe"> /// The data pipe. /// </param> /// <param name="remoteEndPoint"> /// The remote end point. /// </param> /// <param name="size"> /// The size. /// </param> protected override void ProcessReceivedData(Pipe dataPipe, EndPoint remoteEndPoint, int size) { try { this.Client.Codec.ParseBytePackage(dataPipe, remoteEndPoint, size); } catch (NullReferenceException exc) { while (this.Client == null) { Thread.Sleep(0); } this.Client.Codec.ParseBytePackage(dataPipe, remoteEndPoint, size); } catch (Exception e) { this.Client.ExceptionContainer.Add(e); } }
/// <summary> /// The process received data. /// </summary> /// <param name="dataStream"> /// The data stream. /// </param> /// <param name="remoteEndPoint"> /// The remote end point. /// </param> /// <param name="Size"> /// The size. /// </param> protected abstract void ProcessReceivedData(Pipe dataStream, EndPoint remoteEndPoint, int Size);
/// <summary> /// The process received data. /// </summary> /// <param name="pipe"> /// The pipe. /// </param> protected override void processReceivedData(Pipe pipe) { try { this.codec.ParseBytePackage(pipe, this.TCPSocket.RemoteEndPoint); } catch (NullReferenceException exc) { while (this.codec == null) { Thread.Sleep(0); } this.codec.ParseBytePackage(pipe, this.TCPSocket.RemoteEndPoint); } catch (Exception e) { Trace.Write("WFailure during parsing TCP Packet"); } }