private async Task ProcessReceivingAsync() { try { while (!CancellationToken.IsCancellationRequested) { var buff = new byte[Socket.ReceiveBufferSize]; using (var ns = Socket.GetInputStream()) { var read = await ns.ReadAsync(buff, 0, buff.Length, CancellationToken); if (read > 0) { var buffer = Buffer.FromBytes(buff, 0, read); ReceiveSubject.OnNext(buffer); } else { ReceiveSubject.OnCompleted(); return; } } } } catch (OperationCanceledException) { ReceiveSubject.OnCompleted(); } catch (Exception ex) { ReceiveSubject.OnError(ex); } }
/// <summary> /// Inject error into the "Received" stream /// </summary> public void ReceiveError(Exception ex) { ReceiveSubject.OnError(ex); }