1/* 2 * Copyright 2013, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Ingo Weinhold <ingo_weinhold@gmx.de> 7 */ 8#ifndef PACKAGE_DAEMON_H 9#define PACKAGE_DAEMON_H 10 11 12#include <fs_info.h> 13#include <Node.h> 14#include <ObjectList.h> 15#include <VolumeRoster.h> 16 17#include <Server.h> 18 19 20class Root; 21class Volume; 22 23 24class PackageDaemon : public BServer { 25public: 26 PackageDaemon(status_t* _error); 27 virtual ~PackageDaemon(); 28 29 status_t Init(); 30 31 virtual void MessageReceived(BMessage* message); 32 33private: 34 typedef BObjectList<Root> RootList; 35 36private: 37 status_t _RegisterVolume(dev_t device); 38 void _UnregisterVolume(Volume* volume); 39 40 status_t _GetOrCreateRoot(const node_ref& nodeRef, 41 Root*& _root); 42 Root* _FindRoot(const node_ref& nodeRef) const; 43 void _PutRoot(Root* root); 44 45 Volume* _FindVolume(dev_t deviceID) const; 46 47 void _HandleVolumeMounted(const BMessage* message); 48 void _HandleVolumeUnmounted(const BMessage* message); 49 50private: 51 Root* fSystemRoot; 52 RootList fRoots; 53 BVolumeRoster fVolumeWatcher; 54}; 55 56 57 58#endif // PACKAGE_DAEMON_H 59