1/* 2 * Copyright 2011-2013, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef UNPACKING_NODE_H 6#define UNPACKING_NODE_H 7 8 9#include <SupportDefs.h> 10 11 12class Node; 13class PackageNode; 14 15 16class UnpackingNode { 17public: 18 virtual ~UnpackingNode(); 19 20 virtual Node* GetNode() = 0; 21 22 virtual status_t AddPackageNode(PackageNode* packageNode, 23 dev_t deviceID) = 0; 24 virtual void RemovePackageNode(PackageNode* packageNode, 25 dev_t deviceID) = 0; 26 27 virtual PackageNode* GetPackageNode() = 0; 28 virtual bool IsOnlyPackageNode(PackageNode* node) const = 0; 29 virtual bool WillBeFirstPackageNode( 30 PackageNode* packageNode) const = 0; 31 32 virtual void PrepareForRemoval() = 0; 33 virtual status_t CloneTransferPackageNodes(ino_t id, 34 UnpackingNode*& _newNode); 35 36protected: 37 status_t NodeInitVFS(dev_t deviceID, ino_t nodeID, 38 PackageNode* packageNode); 39 void NodeUninitVFS(PackageNode* packageNode, 40 uint32& nodeFlags); 41 void NodeReinitVFS(dev_t deviceID, ino_t nodeID, 42 PackageNode* packageNode, 43 PackageNode* previousPackageNode, 44 uint32& nodeFlags); 45}; 46 47 48#endif // UNPACKING_NODE_H 49