1/* 2 * Copyright 2003-2007, Haiku Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _DISK_DEVICE_LIST_H 6#define _DISK_DEVICE_LIST_H 7 8 9#include <DiskDeviceDefs.h> 10#include <DiskDeviceVisitor.h> 11#include <Handler.h> 12#include <ObjectList.h> 13 14class BDiskDevice; 15class BDiskDeviceRoster; 16class BLocker; 17class BPartition; 18class BSession; 19 20 21class BDiskDeviceList : public BHandler { 22public: 23 BDiskDeviceList(bool useOwnLocker = true); 24 virtual ~BDiskDeviceList(); 25 26 virtual void MessageReceived(BMessage *message); 27 virtual void SetNextHandler(BHandler *handler); 28 29 status_t Fetch(); 30 void Unset(); 31 32 bool Lock(); 33 void Unlock(); 34 35 int32 CountDevices() const; 36 BDiskDevice *DeviceAt(int32 index) const; 37 38 BDiskDevice *VisitEachDevice(BDiskDeviceVisitor *visitor); 39 BPartition *VisitEachPartition(BDiskDeviceVisitor *visitor); 40 41 BPartition *VisitEachMountedPartition(BDiskDeviceVisitor *visitor); 42 BPartition *VisitEachMountablePartition(BDiskDeviceVisitor *visitor); 43 44 BDiskDevice *DeviceWithID(partition_id id) const; 45 BPartition *PartitionWithID(partition_id id) const; 46 47 virtual void MountPointMoved(BPartition *partition); 48 virtual void PartitionMounted(BPartition *partition); 49 virtual void PartitionUnmounted(BPartition *partition); 50 virtual void PartitionInitialized(BPartition *partition); 51 virtual void PartitionResized(BPartition *partition); 52 virtual void PartitionMoved(BPartition *partition); 53 virtual void PartitionCreated(BPartition *partition); 54 virtual void PartitionDeleted(BPartition *partition, 55 partition_id partitionID); 56 virtual void PartitionDefragmented(BPartition *partition); 57 virtual void PartitionRepaired(BPartition *partition); 58 virtual void PartitionChanged(BPartition *partition, uint32 event); 59 virtual void MediaChanged(BDiskDevice *device); 60 virtual void DeviceAdded(BDiskDevice *device); 61 virtual void DeviceRemoved(BDiskDevice *device); 62 63private: 64 status_t _StartWatching(); 65 void _StopWatching(); 66 67 void _MountPointMoved(BMessage *message); 68 void _PartitionMounted(BMessage *message); 69 void _PartitionUnmounted(BMessage *message); 70 void _PartitionInitialized(BMessage *message); 71 void _PartitionResized(BMessage *message); 72 void _PartitionMoved(BMessage *message); 73 void _PartitionCreated(BMessage *message); 74 void _PartitionDeleted(BMessage *message); 75 void _PartitionDefragmented(BMessage *message); 76 void _PartitionRepaired(BMessage *message); 77 void _MediaChanged(BMessage *message); 78 void _DeviceAdded(BMessage *message); 79 void _DeviceRemoved(BMessage *message); 80 81 BDiskDevice *_FindDevice(BMessage *message); 82 BPartition *_FindPartition(BMessage *message); 83 84 BDiskDevice *_UpdateDevice(BMessage *message); 85 86private: 87 BLocker *fLocker; 88 BObjectList<BDiskDevice> fDevices; 89 bool fSubscribed; 90}; 91 92#endif // _DISK_DEVICE_LIST_H 93