示例#1
0
 internal override void AssertAdditionalHeader(PageCursor cursor, TreeNode <MutableLong, MutableLong> node, int pageSize)
 {          // no addition header
 }
示例#2
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: void visitTreeNode(org.neo4j.io.pagecache.PageCursor cursor, GBPTreeVisitor<KEY,VALUE> visitor) throws java.io.IOException
        internal virtual void VisitTreeNode(PageCursor cursor, GBPTreeVisitor <KEY, VALUE> visitor)
        {
            //[TYPE][GEN][KEYCOUNT] ([RIGHTSIBLING][LEFTSIBLING][SUCCESSOR]))
            bool isLeaf;
            int  keyCount;
            long generation = -1;

            do
            {
                isLeaf   = TreeNode.IsLeaf(cursor);
                keyCount = TreeNode.KeyCount(cursor);
                if (!_node.reasonableKeyCount(keyCount))
                {
                    cursor.CursorException = "Unexpected keyCount " + keyCount;
                }
                generation = TreeNode.Generation(cursor);
            } while (cursor.ShouldRetry());
            visitor.BeginNode(cursor.CurrentPageId, isLeaf, generation, keyCount);

            KEY   key   = _layout.newKey();
            VALUE value = _layout.newValue();

            for (int i = 0; i < keyCount; i++)
            {
                long child = -1;
                do
                {
                    _node.keyAt(cursor, key, i, isLeaf ? LEAF : INTERNAL);
                    if (isLeaf)
                    {
                        _node.valueAt(cursor, value, i);
                    }
                    else
                    {
                        child = pointer(_node.childAt(cursor, i, _stableGeneration, _unstableGeneration));
                    }
                } while (cursor.ShouldRetry());

                visitor.Position(i);
                if (isLeaf)
                {
                    visitor.Key(key, isLeaf);
                    visitor.Value(value);
                }
                else
                {
                    visitor.Child(child);
                    visitor.Key(key, isLeaf);
                }
            }
            if (!isLeaf)
            {
                long child;
                do
                {
                    child = pointer(_node.childAt(cursor, keyCount, _stableGeneration, _unstableGeneration));
                } while (cursor.ShouldRetry());
                visitor.Position(keyCount);
                visitor.Child(child);
            }
            visitor.EndNode(cursor.CurrentPageId);
        }
示例#3
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: static void visitTreeState(org.neo4j.io.pagecache.PageCursor cursor, GBPTreeVisitor visitor) throws java.io.IOException
        internal static void VisitTreeState(PageCursor cursor, GBPTreeVisitor visitor)
        {
            Pair <TreeState, TreeState> statePair = TreeStatePair.ReadStatePages(cursor, IdSpace.STATE_PAGE_A, IdSpace.STATE_PAGE_B);

            visitor.treeState(statePair);
        }
示例#4
0
 protected internal abstract void DoWriteInternal(RECORD record, PageCursor cursor);
示例#5
0
 protected internal static long DecodeCompressedReference(PageCursor cursor, long headerByte, int headerBitMask, long nullValue)
 {
     return(has(headerByte, headerBitMask) ? DecodeCompressedReference(cursor) : nullValue);
 }
示例#6
0
 protected internal override void DoReadInternal(RelationshipGroupRecord record, PageCursor cursor, int recordSize, long headerByte, bool inUse)
 {
     record.Initialize(inUse, cursor.Short & 0xFFFF, DecodeCompressedReference(cursor, headerByte, _hasOutgoingBit, Null), DecodeCompressedReference(cursor, headerByte, _hasIncomingBit, Null), DecodeCompressedReference(cursor, headerByte, _hasLoopBit, Null), DecodeCompressedReference(cursor), DecodeCompressedReference(cursor, headerByte, _hasNextBit, Null));
 }
示例#7
0
 private void Write(PageCursor cursor, TreeState origin)
 {
     TreeState.Write(cursor, origin.StableGeneration(), origin.UnstableGeneration(), origin.RootId(), origin.RootGeneration(), origin.LastId(), origin.FreeListWritePageId(), origin.FreeListReadPageId(), origin.FreeListWritePos(), origin.FreeListReadPos(), origin.Clean);
 }
示例#8
0
 public override void WriteKey(PageCursor cursor, MutableLong key)
 {
     cursor.PutLong(key.longValue());
     cursor.PutBytes(_keyPadding, ( sbyte )0);
 }
示例#9
0
 public override void WriteValue(PageCursor cursor, MutableLong value)
 {
     cursor.PutLong(value.longValue());
 }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void mustAutomaticallyStartEvictionThread() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void MustAutomaticallyStartEvictionThread()
        {
            using (FileSystemAbstraction fs = new DefaultFileSystemAbstraction(), JobScheduler jobScheduler = new ThreadPoolJobScheduler())
            {
                File file = (new File(TestDirectory.directory(), "a")).CanonicalFile;
                fs.Create(file).close();

                using (PageCache cache = ConfigurableStandalonePageCacheFactory.CreatePageCache(fs, jobScheduler), PagedFile pf = cache.Map(file, 4096), PageCursor cursor = pf.Io(0, Org.Neo4j.Io.pagecache.PagedFile_Fields.PfSharedWriteLock))
                {
                    // The default size is currently 8MBs.
                    // It should be possible to write more than that.
                    // If the eviction thread has not been started, then this test will block forever.
                    for (int i = 0; i < 10_000; i++)
                    {
                        assertTrue(cursor.Next());
                        cursor.PutInt(42);
                    }
                }
            }
        }
示例#11
0
 private void Write(PageCursor cursor, int offset, GSP gsp)
 {
     cursor.Offset = offset;
     GenerationSafePointer.Write(cursor, gsp.Generation, gsp.Pointer);
 }
示例#12
0
 private void NodeAdvance(NodeRecord record, PageCursor pageCursor)
 {
     _read.nextRecordByCursor(record, RecordLoad.CHECK, pageCursor);
 }
示例#13
0
 private void Node(NodeRecord record, long reference, PageCursor pageCursor)
 {
     _read.getRecordByCursor(reference, record, RecordLoad.CHECK, pageCursor);
 }
 protected internal override void WriteRecordData(PropertyKeyTokenRecord record, PageCursor cursor)
 {
     cursor.PutInt(record.PropertyCount);
     cursor.PutInt(record.NameId);
 }
示例#15
0
 public override abstract void WriteValue(Org.Neo4j.Io.pagecache.PageCursor cursor, VALUE value);
示例#16
0
 public override void ReadKey(PageCursor cursor, MutableLong into, int keySize)
 {
     into.Value = cursor.Long;
     cursor.GetBytes(new sbyte[_keyPadding]);
 }
示例#17
0
 public override abstract void WriteKey(Org.Neo4j.Io.pagecache.PageCursor cursor, KEY key);
示例#18
0
 public override void ReadValue(PageCursor cursor, MutableLong into, int valueSize)
 {
     into.Value = cursor.Long;
 }
示例#19
0
 protected internal override void DoWriteInternal(RelationshipGroupRecord record, PageCursor cursor)
 {
     cursor.PutShort(( short )record.Type);
     Encode(cursor, record.FirstOut, Null);
     Encode(cursor, record.FirstIn, Null);
     Encode(cursor, record.FirstLoop, Null);
     Encode(cursor, record.OwningNode);
     Encode(cursor, record.Next, Null);
 }
示例#20
0
 public override void WriteMetaData(PageCursor cursor)
 {
     WriteString(cursor, _customNameAsMetaData);
     cursor.PutInt(_keyPadding);
 }
示例#21
0
 protected internal abstract void DoReadInternal(RECORD record, PageCursor cursor, int recordSize, long inUseByte, bool inUse);
示例#22
0
 private static void WriteString(PageCursor cursor, string @string)
 {
     sbyte[] bytes = @string.GetBytes(UTF_8);
     cursor.PutInt(@string.Length);
     cursor.PutBytes(bytes);
 }
示例#23
0
 protected internal static long DecodeCompressedReference(PageCursor cursor)
 {
     return(Reference.decode(cursor));
 }
示例#24
0
 public override abstract void WriteMetaData(Org.Neo4j.Io.pagecache.PageCursor cursor);
示例#25
0
 protected internal static void Encode(PageCursor cursor, long reference)
 {
     Reference.encode(reference, cursor);
 }
示例#26
0
 public override abstract void ReadValue(Org.Neo4j.Io.pagecache.PageCursor cursor, VALUE into, int valueSize);
示例#27
0
 private static PageCursor Select(PageCursor readCursor, PageCursor writeCursor)
 {
     return(writeCursor == null ? readCursor : readCursor.CurrentPageId == writeCursor.CurrentPageId ? writeCursor : readCursor);
 }
示例#28
0
 public override abstract void ReadKey(Org.Neo4j.Io.pagecache.PageCursor cursor, KEY into, int keySize);
示例#29
0
 protected internal override void DoWriteInternal(NodeRecord record, PageCursor cursor)
 {
     Encode(cursor, record.NextRel, Null);
     Encode(cursor, record.NextProp, Null);
     Encode(cursor, record.LabelField, _nullLabels);
 }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void write(RECORD record, org.neo4j.io.pagecache.PageCursor cursor, int recordSize) throws java.io.IOException
        public override void Write(RECORD record, PageCursor cursor, int recordSize)
        {
            _actual.write(record, cursor, recordSize);
        }