* Copyright 2007, Ingo Weinhold, ingo_weinhold@gmx.de.
* All rights reserved. Distributed under the terms of the MIT license.
*/
#ifndef LAST_MODIFIED_INDEX_H
#define LAST_MODIFIED_INDEX_H
#include "Index.h"
#include "NodeListener.h"
#include "TwoKeyAVLTree.h"
class LastModifiedIndex : public Index, private NodeListener {
public:
LastModifiedIndex(Volume *volume);
virtual ~LastModifiedIndex();
virtual int32 CountEntries() const;
virtual status_t Changed(Node *node, time_t oldModified);
private:
virtual void NodeAdded(Node *node);
virtual void NodeRemoved(Node *node);
protected:
virtual AbstractIndexEntryIterator *InternalGetIterator();
virtual AbstractIndexEntryIterator *InternalFind(const uint8 *key,
size_t length);
private:
class Iterator;
class IteratorList;
class NodeTree;
friend class Iterator;
private:
void _AddIterator(Iterator *iterator);
void _RemoveIterator(Iterator *iterator);
private:
NodeTree *fNodes;
IteratorList *fIterators;
};
#endif