1/* 2 * Copyright 2012,2013 Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Paweł Dziepak, pdziepak@quarnos.org 7 */ 8#ifndef INODEIDMAP_H 9#define INODEIDMAP_H 10 11 12#include <lock.h> 13#include <SupportDefs.h> 14#include <util/AutoLock.h> 15#include <util/AVLTreeMap.h> 16 17#include "FileInfo.h" 18 19 20class InodeIdMap { 21public: 22 inline InodeIdMap(); 23 inline ~InodeIdMap(); 24 25 status_t AddName(FileInfo& fileInfo, 26 InodeNames* parent, 27 const char* name, ino_t id); 28 bool RemoveName(ino_t id, 29 InodeNames* parent, 30 const char* name); 31 status_t RemoveEntry(ino_t id); 32 status_t GetFileInfo(FileInfo* fileInfo, 33 ino_t id); 34 35private: 36 AVLTreeMap<ino_t, FileInfo> fMap; 37 mutex fLock; 38 39}; 40 41 42inline 43InodeIdMap::InodeIdMap() 44{ 45 mutex_init(&fLock, NULL); 46} 47 48 49inline 50InodeIdMap::~InodeIdMap() 51{ 52 mutex_destroy(&fLock); 53} 54 55 56#endif // INODEIDMAP_H 57 58