summaryrefslogtreecommitdiff
path: root/FireBase/Streaming/NonBlockingStreamReader.cs
diff options
context:
space:
mode:
Diffstat (limited to 'FireBase/Streaming/NonBlockingStreamReader.cs')
-rw-r--r--FireBase/Streaming/NonBlockingStreamReader.cs43
1 files changed, 23 insertions, 20 deletions
diff --git a/FireBase/Streaming/NonBlockingStreamReader.cs b/FireBase/Streaming/NonBlockingStreamReader.cs
index 2ac83fd..8228e32 100644
--- a/FireBase/Streaming/NonBlockingStreamReader.cs
+++ b/FireBase/Streaming/NonBlockingStreamReader.cs
@@ -1,45 +1,48 @@
-namespace Firebase.Database.Streaming
-{
- using System.IO;
- using System.Text;
+using System.IO;
+using System.Text;
+namespace Firebase.Database.Streaming
+{
/// <summary>
- /// When a regular <see cref="StreamReader"/> is used in a UWP app its <see cref="StreamReader.ReadLine"/> method tends to take a long
- /// time for data larger then 2 KB. This extremly simple implementation of <see cref="TextReader"/> can be used instead to boost performance
- /// in your UWP app. Use <see cref="FirebaseOptions"/> to inject an instance of this class into your <see cref="FirebaseClient"/>.
+ /// When a regular <see cref="StreamReader" /> is used in a UWP app its <see cref="StreamReader.ReadLine" /> method
+ /// tends to take a long
+ /// time for data larger then 2 KB. This extremly simple implementation of <see cref="TextReader" /> can be used
+ /// instead to boost performance
+ /// in your UWP app. Use <see cref="FirebaseOptions" /> to inject an instance of this class into your
+ /// <see cref="FirebaseClient" />.
/// </summary>
public class NonBlockingStreamReader : TextReader
{
private const int DefaultBufferSize = 16000;
-
- private readonly Stream stream;
private readonly byte[] buffer;
private readonly int bufferSize;
+ private readonly Stream stream;
+
private string cachedData;
-
- public NonBlockingStreamReader(Stream stream, int bufferSize = DefaultBufferSize)
+
+ public NonBlockingStreamReader(Stream stream, int bufferSize = DefaultBufferSize)
{
this.stream = stream;
this.bufferSize = bufferSize;
- this.buffer = new byte[bufferSize];
+ buffer = new byte[bufferSize];
- this.cachedData = string.Empty;
+ cachedData = string.Empty;
}
public override string ReadLine()
{
- var currentString = this.TryGetNewLine();
-
+ var currentString = TryGetNewLine();
+
while (currentString == null)
{
- var read = this.stream.Read(this.buffer, 0, this.bufferSize);
+ var read = stream.Read(buffer, 0, bufferSize);
var str = Encoding.UTF8.GetString(buffer, 0, read);
cachedData += str;
- currentString = this.TryGetNewLine();
+ currentString = TryGetNewLine();
}
-
+
return currentString;
}
@@ -50,11 +53,11 @@
if (newLine >= 0)
{
var r = cachedData.Substring(0, newLine + 1);
- this.cachedData = cachedData.Remove(0, r.Length);
+ cachedData = cachedData.Remove(0, r.Length);
return r.Trim();
}
return null;
}
}
-}
+} \ No newline at end of file