private void ReadBytes() { if (currentContainerToFill == null) { int messageLength = GetMessageLength(); if (messageLength == NotEnoughBytesForMessageLength) return; currentContainerToFill = new MessageData(messageLength); } if (numberOfBytesAvailable > 0) ReadDataToEnd(); }
private void OnObjectFinished(MessageData dataContainer) { var dataBytes = dataContainer.IsDataCompressed ? ZlibStream.UncompressBuffer(dataContainer.Data) : dataContainer.Data; using (var dataStream = new MemoryStream(dataBytes)) using (var dataReader = new BinaryReader(dataStream)) { object receivedMessage; try { receivedMessage = TryReceiveMessage(dataReader); } catch (Exception ex) { receivedMessage = new ServerError(StackTraceExtensions.FormatExceptionIntoClickableMultilineText(ex)); } if (DataReceived != null) DataReceived(receivedMessage); else throw new NobodyIsUsingTheDataReceivedEvent(receivedMessage); } }
private void TriggerObjectFinishedAndResetCurrentContainer() { if (ObjectFinished != null) ObjectFinished(currentContainerToFill); currentContainerToFill = null; }