1// Volume.h 2 3#ifndef NET_FS_VOLUME_H 4#define NET_FS_VOLUME_H 5 6#include <SupportDefs.h> 7 8class Directory; 9class Entry; 10class Node; 11 12class Volume { 13public: 14 Volume(dev_t id); 15 ~Volume(); 16 17 status_t Init(); 18 19 dev_t GetID() const; 20 Directory* GetRootDirectory() const; 21 ino_t GetRootID() const; 22 23 bool KnowsQuery() const; 24 25 status_t AddNode(Node* node); 26 bool RemoveNode(Node* node); 27 Node* GetNode(ino_t nodeID); 28 Node* GetFirstNode() const; 29 30 status_t AddEntry(Entry* entry); 31 bool RemoveEntry(Entry* entry); 32 Entry* GetEntry(ino_t dirID, const char* name); 33 Entry* GetFirstEntry() const; 34 35private: 36 struct NodeMap; 37 struct EntryKey; 38 struct EntryMap; 39 40 dev_t fID; 41 Directory* fRootDir; 42 uint32 fFSFlags; 43 NodeMap* fNodes; 44 EntryMap* fEntries; 45}; 46 47#endif // NET_FS_VOLUME_H 48