//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: protected void performReadOrUpdate(java.util.concurrent.ThreadLocalRandom rng, boolean updateCounter, int pf_flags) throws java.io.IOException protected internal override void performReadOrUpdate(ThreadLocalRandom rng, bool updateCounter, int pfFlags) { try { int pageCount = rng.Next(1, _maxCursorsPerThread); int[] pageIds = new int[pageCount]; for (int j = 0; j < pageCount; j++) { pageIds[j] = rng.Next(0, _filePages); } PageCursor[] cursors = new PageCursor[pageCount]; for (int j = 0; j < pageCount; j++) { cursors[j] = _pagedFile.io(pageIds[j], pfFlags); assertTrue(cursors[j].Next()); } for (int j = 0; j < pageCount; j++) { int pageId = pageIds[j]; PageCursor cursor = cursors[j]; int counter; do { cursor.Offset = offset; counter = cursor.Int; } while (cursor.ShouldRetry()); string lockName = updateCounter ? "PF_SHARED_WRITE_LOCK" : "PF_SHARED_READ_LOCK"; string reason = string.Format("inconsistent page read from filePageId = {0}, with {1}, workerId = {2} [t:{3}]", pageId, lockName, threadId, Thread.CurrentThread.Id); assertThat(reason, counter, @is(pageCounts[pageId])); if (updateCounter) { counter++; pageCounts[pageId]++; cursor.Offset = offset; cursor.PutInt(counter); } } foreach (PageCursor cursor in cursors) { cursor.Close(); } } catch (Exception throwable) { _shouldStop.set(true); throw throwable; } }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: protected void performReadOrUpdate(java.util.concurrent.ThreadLocalRandom rng, boolean updateCounter, int pf_flags) throws java.io.IOException protected internal override void performReadOrUpdate(ThreadLocalRandom rng, bool updateCounter, int pfFlags) { int pageId = rng.Next(0, _filePages); using (PageCursor cursor = _pagedFile.io(pageId, pfFlags)) { int counter; try { assertTrue(cursor.Next()); do { cursor.Offset = offset; counter = cursor.Int; } while (cursor.ShouldRetry()); string lockName = updateCounter ? "PF_SHARED_WRITE_LOCK" : "PF_SHARED_READ_LOCK"; string reason = string.Format("inconsistent page read from filePageId:{0}, with {1}, threadId:{2}", pageId, lockName, Thread.CurrentThread.Id); assertThat(reason, counter, @is(pageCounts[pageId])); } catch (Exception throwable) { _shouldStop.set(true); throw throwable; } if (updateCounter) { counter++; pageCounts[pageId]++; cursor.Offset = offset; cursor.PutInt(counter); } if (cursor.CheckAndClearBoundsFlag()) { _shouldStop.set(true); throw new System.IndexOutOfRangeException("offset = " + offset + ", filPageId:" + pageId + ", threadId: " + threadId + ", updateCounter = " + updateCounter); } } }