private EMessage readSingleMessage() { var msgSize = 0; if (UseV100Plus) { msgSize = eClientSocket.ReadInt(); if (msgSize > Constants.MaxMsgSize) { throw new EClientException(EClientErrors.BAD_LENGTH); } var buf = new List <byte>(); var offset = 0; while (offset < msgSize) { var readBuf = eClientSocket.ReadByteArray(msgSize - offset); buf.AddRange(readBuf); offset += readBuf.Length; } return(new EMessage(buf.ToArray())); } if (inBuf.Count == 0) { AppendInBuf(); } while (true) { try { msgSize = new EDecoder(this.eClientSocket.ServerVersion, defaultWrapper).ParseAndProcessMsg(inBuf.ToArray()); break; } catch (EndOfStreamException) { if (inBuf.Count >= inBuf.Capacity * 3 / 4) { inBuf.Capacity *= 2; } AppendInBuf(); } } var msgBuf = new byte[msgSize]; inBuf.CopyTo(0, msgBuf, 0, msgSize); inBuf.RemoveRange(0, msgSize); if (inBuf.Count < defaultInBufSize && inBuf.Capacity > defaultInBufSize) { inBuf.Capacity = defaultInBufSize; } return(new EMessage(msgBuf)); }
public EReader(EClientSocket clientSocket, EReaderSignal signal) { Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; eClientSocket = clientSocket; eReaderSignal = signal; processMsgsDecoder = new EDecoder(eClientSocket.ServerVersion, eClientSocket.Wrapper, eClientSocket); }
public EOrderDecoder(EDecoder eDecoder, Contract contract, Order order, OrderState orderState, int msgVersion, int serverVersion) { this.eDecoder = eDecoder; this.contract = contract; this.order = order; this.orderState = orderState; this.msgVersion = msgVersion; this.serverVersion = serverVersion; }
private EMessage ReadSingleMessage() { var msgSize = 0; if (UseV100Plus) { msgSize = eClientSocket.ReadInt(); if (msgSize > Constants.MaxMsgSize) { throw new EClientException(EClientErrors.BAD_LENGTH); } return(new EMessage(eClientSocket.ReadByteArray(msgSize))); } if (inBuf.Count == 0) { AppendInBuf(); } while (true) { try { msgSize = new EDecoder(eClientSocket.ServerVersion, DefaultWrapper).ParseAndProcessMsg(inBuf.ToArray()); break; } catch (EndOfStreamException) { if (inBuf.Count >= inBuf.Capacity * 3 / 4) { inBuf.Capacity *= 2; } AppendInBuf(); } } var msgBuf = new byte[msgSize]; inBuf.CopyTo(0, msgBuf, 0, msgSize); inBuf.RemoveRange(0, msgSize); if (inBuf.Count < DefaultInBufSize && inBuf.Capacity > DefaultInBufSize) { inBuf.Capacity = DefaultInBufSize; } return(new EMessage(msgBuf)); }
public EReader(EClientSocket clientSocket, EReaderSignal signal) { eClientSocket = clientSocket; eReaderSignal = signal; processMsgsDecoder = new EDecoder(eClientSocket.ServerVersion, eClientSocket.Wrapper, eClientSocket); }