1/* 2 * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef UNPACKING_DIRECTORY_H 6#define UNPACKING_DIRECTORY_H 7 8 9#include "Directory.h" 10#include "PackageDirectory.h" 11#include "UnpackingNode.h" 12 13 14class UnpackingDirectory : public Directory, public UnpackingNode { 15public: 16 UnpackingDirectory(ino_t id); 17 virtual ~UnpackingDirectory(); 18 19 virtual mode_t Mode() const; 20 virtual uid_t UserID() const; 21 virtual gid_t GroupID() const; 22 virtual timespec ModifiedTime() const; 23 virtual off_t FileSize() const; 24 25 virtual Node* GetNode(); 26 27 virtual status_t AddPackageNode(PackageNode* packageNode); 28 virtual void RemovePackageNode(PackageNode* packageNode); 29 30 virtual PackageNode* GetPackageNode(); 31 virtual bool IsOnlyPackageNode(PackageNode* node) const; 32 virtual bool WillBeFirstPackageNode( 33 PackageNode* packageNode) const; 34 35 virtual void PrepareForRemoval(); 36 37 virtual status_t OpenAttributeDirectory( 38 AttributeDirectoryCookie*& _cookie); 39 virtual status_t OpenAttribute(const char* name, int openMode, 40 AttributeCookie*& _cookie); 41 42 virtual status_t IndexAttribute(AttributeIndexer* indexer); 43 virtual void* IndexCookieForAttribute(const char* name) const; 44 45private: 46 PackageDirectoryList fPackageDirectories; 47}; 48 49 50class RootDirectory : public UnpackingDirectory { 51public: 52 RootDirectory(ino_t id, 53 const timespec& modifiedTime); 54 55 virtual timespec ModifiedTime() const; 56 57private: 58 timespec fModifiedTime; 59}; 60 61 62#endif // UNPACKING_DIRECTORY_H 63