mirror of
https://github.com/aspnet/JavaScriptServices.git
synced 2025-12-23 01:58:29 +00:00
40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using System.Text;
|
|
|
|
namespace Microsoft.AspNetCore.NodeServices.Util
|
|
{
|
|
/// <summary>
|
|
/// Captures the completed-line notifications from a <see cref="EventedStreamReader"/>,
|
|
/// combining the data into a single <see cref="string"/>.
|
|
/// </summary>
|
|
internal class EventedStreamStringReader : IDisposable
|
|
{
|
|
private EventedStreamReader _eventedStreamReader;
|
|
private bool _isDisposed;
|
|
private StringBuilder _stringBuilder = new StringBuilder();
|
|
|
|
public EventedStreamStringReader(EventedStreamReader eventedStreamReader)
|
|
{
|
|
_eventedStreamReader = eventedStreamReader
|
|
?? throw new ArgumentNullException(nameof(eventedStreamReader));
|
|
_eventedStreamReader.OnReceivedLine += OnReceivedLine;
|
|
}
|
|
|
|
public string ReadAsString() => _stringBuilder.ToString();
|
|
|
|
private void OnReceivedLine(string line) => _stringBuilder.AppendLine(line);
|
|
|
|
public void Dispose()
|
|
{
|
|
if (!_isDisposed)
|
|
{
|
|
_eventedStreamReader.OnReceivedLine -= OnReceivedLine;
|
|
_isDisposed = true;
|
|
}
|
|
}
|
|
}
|
|
}
|