You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by je...@apache.org on 2018/04/02 12:13:27 UTC
thrift git commit: THRIFT-4539 Allow TBufferedTransport to be used as
base class Client: C# Patch: Jens Geyer
Repository: thrift
Updated Branches:
refs/heads/master 8fb719efb -> 99daecdd1
THRIFT-4539 Allow TBufferedTransport to be used as base class
Client: C#
Patch: Jens Geyer
Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/99daecdd
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/99daecdd
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/99daecdd
Branch: refs/heads/master
Commit: 99daecdd1d104effcc773f3f4d438f71c82db48a
Parents: 8fb719e
Author: Jens Geyer <je...@apache.org>
Authored: Mon Apr 2 01:30:22 2018 +0200
Committer: Jens Geyer <je...@apache.org>
Committed: Mon Apr 2 14:12:54 2018 +0200
----------------------------------------------------------------------
lib/csharp/src/Transport/TBufferedTransport.cs | 30 ++++++++++++---------
1 file changed, 17 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/thrift/blob/99daecdd/lib/csharp/src/Transport/TBufferedTransport.cs
----------------------------------------------------------------------
diff --git a/lib/csharp/src/Transport/TBufferedTransport.cs b/lib/csharp/src/Transport/TBufferedTransport.cs
index 9efeeb7..76c6b1a 100644
--- a/lib/csharp/src/Transport/TBufferedTransport.cs
+++ b/lib/csharp/src/Transport/TBufferedTransport.cs
@@ -76,19 +76,23 @@ namespace Thrift.Transport
ValidateBufferArgs(buf, off, len);
if (!IsOpen)
throw new TTransportException(TTransportException.ExceptionType.NotOpen);
+
if (inputBuffer.Capacity < bufSize)
inputBuffer.Capacity = bufSize;
- int got = inputBuffer.Read(buf, off, len);
- if (got > 0)
- return got;
-
- inputBuffer.Seek(0, SeekOrigin.Begin);
- inputBuffer.SetLength(inputBuffer.Capacity);
- int filled = transport.Read(inputBuffer.GetBuffer(), 0, (int)inputBuffer.Length);
- inputBuffer.SetLength(filled);
- if (filled == 0)
- return 0;
- return Read(buf, off, len);
+
+ while (true)
+ {
+ int got = inputBuffer.Read(buf, off, len);
+ if (got > 0)
+ return got;
+
+ inputBuffer.Seek(0, SeekOrigin.Begin);
+ inputBuffer.SetLength(inputBuffer.Capacity);
+ int filled = transport.Read(inputBuffer.GetBuffer(), 0, (int)inputBuffer.Length);
+ inputBuffer.SetLength(filled);
+ if (filled == 0)
+ return 0;
+ }
}
public override void Write(byte[] buf, int off, int len)
@@ -138,14 +142,14 @@ namespace Thrift.Transport
transport.Flush();
}
- private void CheckNotDisposed()
+ protected void CheckNotDisposed()
{
if (_IsDisposed)
throw new ObjectDisposedException("TBufferedTransport");
}
#region " IDisposable Support "
- private bool _IsDisposed;
+ protected bool _IsDisposed { get; private set; }
// IDisposable
protected override void Dispose(bool disposing)