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)