You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2017/04/30 21:56:17 UTC
[38/45] lucenenet git commit: ByteBufferIndexInput: Refactored to
avoid calls on invalid conditions rather than catching and re-throwing
exceptions
ByteBufferIndexInput: Refactored to avoid calls on invalid conditions rather than catching and re-throwing exceptions
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/26e080ef
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/26e080ef
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/26e080ef
Branch: refs/heads/master
Commit: 26e080efb05ac3012da4e8a034746d66f3b2e570
Parents: ae5075c
Author: Shad Storhaug <sh...@shadstorhaug.com>
Authored: Sun Apr 30 23:39:27 2017 +0700
Committer: Shad Storhaug <sh...@shadstorhaug.com>
Committed: Mon May 1 04:48:38 2017 +0700
----------------------------------------------------------------------
src/Lucene.Net/Store/ByteBufferIndexInput.cs | 109 ++++++++++------------
1 file changed, 49 insertions(+), 60 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/26e080ef/src/Lucene.Net/Store/ByteBufferIndexInput.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net/Store/ByteBufferIndexInput.cs b/src/Lucene.Net/Store/ByteBufferIndexInput.cs
index bda469c..629b5d0 100644
--- a/src/Lucene.Net/Store/ByteBufferIndexInput.cs
+++ b/src/Lucene.Net/Store/ByteBufferIndexInput.cs
@@ -97,42 +97,41 @@ namespace Lucene.Net.Store
Seek(0L);
}
-
public override sealed byte ReadByte()
{
- try
+ // LUCENENET: Refactored to avoid calls on invalid conditions instead of
+ // catching and re-throwing exceptions in the normal workflow.
+ EnsureOpen();
+ if (curBuf.HasRemaining)
{
return curBuf.Get();
}
- catch (BufferUnderflowException)
+
+ do
{
- do
+ curBufIndex++;
+ if (curBufIndex >= buffers.Length)
{
- curBufIndex++;
- if (curBufIndex >= buffers.Length)
- {
- throw new EndOfStreamException("read past EOF: " + this);
- }
- curBuf = buffers[curBufIndex];
- curBuf.Position = 0;
- } while (!curBuf.HasRemaining);
- return curBuf.Get();
- }
- catch (NullReferenceException)
- {
- throw new ObjectDisposedException(this.GetType().GetTypeInfo().FullName, "Already closed: " + this);
- }
+ throw new EndOfStreamException("read past EOF: " + this);
+ }
+ curBuf = buffers[curBufIndex];
+ curBuf.Position = 0;
+ } while (!curBuf.HasRemaining);
+ return curBuf.Get();
}
public override sealed void ReadBytes(byte[] b, int offset, int len)
{
- try
+ // LUCENENET: Refactored to avoid calls on invalid conditions instead of
+ // catching and re-throwing exceptions in the normal workflow.
+ EnsureOpen();
+ int curAvail = curBuf.Remaining;
+ if (len <= curAvail)
{
curBuf.Get(b, offset, len);
}
- catch (BufferUnderflowException)
+ else
{
- int curAvail = curBuf.Remaining;
while (len > curAvail)
{
curBuf.Get(b, offset, curAvail);
@@ -149,10 +148,6 @@ namespace Lucene.Net.Store
}
curBuf.Get(b, offset, len);
}
- catch (NullReferenceException)
- {
- throw new ObjectDisposedException(this.GetType().GetTypeInfo().FullName, "Already closed: " + this);
- }
}
/// <summary>
@@ -160,18 +155,14 @@ namespace Lucene.Net.Store
/// </summary>
public override sealed short ReadInt16()
{
- try
+ // LUCENENET: Refactored to avoid calls on invalid conditions instead of
+ // catching and re-throwing exceptions in the normal workflow.
+ EnsureOpen();
+ if (curBuf.Remaining >= 2)
{
return curBuf.GetInt16();
}
- catch (BufferUnderflowException)
- {
- return base.ReadInt16();
- }
- catch (NullReferenceException)
- {
- throw new ObjectDisposedException(this.GetType().GetTypeInfo().FullName, "Already closed: " + this);
- }
+ return base.ReadInt16();
}
/// <summary>
@@ -179,18 +170,14 @@ namespace Lucene.Net.Store
/// </summary>
public override sealed int ReadInt32()
{
- try
+ // LUCENENET: Refactored to avoid calls on invalid conditions instead of
+ // catching and re-throwing exceptions in the normal workflow.
+ EnsureOpen();
+ if (curBuf.Remaining >= 4)
{
return curBuf.GetInt32();
}
- catch (BufferUnderflowException)
- {
- return base.ReadInt32();
- }
- catch (NullReferenceException)
- {
- throw new ObjectDisposedException(this.GetType().GetTypeInfo().FullName, "Already closed: " + this);
- }
+ return base.ReadInt32();
}
/// <summary>
@@ -198,30 +185,22 @@ namespace Lucene.Net.Store
/// </summary>
public override sealed long ReadInt64()
{
- try
+ // LUCENENET: Refactored to avoid calls on invalid conditions instead of
+ // catching and re-throwing exceptions in the normal workflow.
+ EnsureOpen();
+ if (curBuf.Remaining >= 8)
{
return curBuf.GetInt64();
}
- catch (BufferUnderflowException)
- {
- return base.ReadInt64();
- }
- catch (NullReferenceException)
- {
- throw new ObjectDisposedException(this.GetType().GetTypeInfo().FullName, "Already closed: " + this);
- }
+ return base.ReadInt64();
}
public override sealed long GetFilePointer()
{
- try
- {
- return (((long)curBufIndex) << chunkSizePower) + curBuf.Position - offset;
- }
- catch (NullReferenceException)
- {
- throw new ObjectDisposedException(this.GetType().GetTypeInfo().FullName, "Already closed: " + this);
- }
+ // LUCENENET: Refactored to avoid calls on invalid conditions instead of
+ // catching and re-throwing exceptions in the normal workflow.
+ EnsureOpen();
+ return (((long)curBufIndex) << chunkSizePower) + curBuf.Position - offset;
}
public override sealed void Seek(long pos)
@@ -364,6 +343,16 @@ namespace Lucene.Net.Store
curBufIndex = 0;
}
+ // LUCENENET specific - rather than using all of this exception catching nonsense
+ // for control flow, we check whether we are disposed first.
+ private void EnsureOpen()
+ {
+ if (buffers == null || curBuf == null)
+ {
+ throw new ObjectDisposedException(this.GetType().GetTypeInfo().FullName, "Already closed: " + this);
+ }
+ }
+
protected override void Dispose(bool disposing)
{
if (disposing)