Esempio n. 1
0
		private void ReadBytes()
		{
			if (currentContainerToFill == null)
			{
				int messageLength = GetMessageLength();
				if (messageLength == NotEnoughBytesForMessageLength)
					return;
				currentContainerToFill = new MessageData(messageLength);
			}
			if (numberOfBytesAvailable > 0)
				ReadDataToEnd();
		}
Esempio n. 2
0
		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);
			}
		}
Esempio n. 3
0
		private void TriggerObjectFinishedAndResetCurrentContainer()
		{
			if (ObjectFinished != null)
				ObjectFinished(currentContainerToFill);
			currentContainerToFill = null;
		}