| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | /* * EliasDB * * Copyright 2016 Matthias Ladkau. All rights reserved. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */package graphimport (	"devt.de/krotik/eliasdb/graph/util"	"devt.de/krotik/eliasdb/hash")/*NodeKeyIterator can be used to iterate node keys of a certain node kind.*/type NodeKeyIterator struct {	gm        *Manager            // GraphManager which created the iterator	it        *hash.HTreeIterator // Internal HTree iterator	LastError error               // Last encountered error}/*Next returns the next node key. Sets the LastError attribute if an error occurs.*/func (it *NodeKeyIterator) Next() string {	// Take reader lock	it.gm.mutex.RLock()	defer it.gm.mutex.RUnlock()	k, _ := it.it.Next()	if it.it.LastError != nil {		it.LastError = &util.GraphError{Type: util.ErrReading, Detail: it.it.LastError.Error()}		return ""	} else if len(k) == 0 {		return ""	}	return string(k[len(PrefixNSAttrs):])}/*HasNext returns if there is a next node key.*/func (it *NodeKeyIterator) HasNext() bool {	return it.it.HasNext()}/*Error returns the last encountered error.*/func (it *NodeKeyIterator) Error() error {	return it.LastError}
 |