2d690920ac
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12360 a95241bf-73f2-0310-859d-f6bbb57e9c96
66 lines
1.7 KiB
C++
66 lines
1.7 KiB
C++
// KDiskDeviceJobGenerator.h
|
|
|
|
#ifndef _K_DISK_DEVICE_JOB_GENERATOR_H
|
|
#define _K_DISK_DEVICE_JOB_GENERATOR_H
|
|
|
|
#include "disk_device_manager.h"
|
|
|
|
namespace BPrivate {
|
|
namespace DiskDevice {
|
|
|
|
class KDiskDevice;
|
|
class KDiskDeviceJob;
|
|
class KDiskDeviceJobFactory;
|
|
class KDiskDeviceJobQueue;
|
|
class KPartition;
|
|
class KPhysicalPartition;
|
|
class KShadowPartition;
|
|
|
|
class KDiskDeviceJobGenerator {
|
|
public:
|
|
KDiskDeviceJobGenerator(KDiskDeviceJobFactory *jobFactory,
|
|
KDiskDevice *device,
|
|
KDiskDeviceJobQueue *jobQueue = NULL);
|
|
~KDiskDeviceJobGenerator();
|
|
|
|
KDiskDeviceJobFactory *JobFactory() const;
|
|
KDiskDevice *Device() const;
|
|
KDiskDeviceJobQueue *JobQueue() const;
|
|
|
|
KDiskDeviceJobQueue *DetachJobQueue();
|
|
|
|
status_t GenerateJobs();
|
|
|
|
private:
|
|
struct move_info;
|
|
|
|
status_t _AddJob(KDiskDeviceJob *job);
|
|
|
|
status_t _GenerateCleanupJobs(KPartition *partition);
|
|
status_t _GeneratePlacementJobs(KPartition *partition);
|
|
status_t _GenerateResizeJob(KPartition *partition);
|
|
status_t _GenerateChildPlacementJobs(KPartition *partition);
|
|
status_t _GenerateMoveJob(KPartition *partition);
|
|
status_t _CollectContentsToMove(KPartition *partition);
|
|
status_t _GenerateRemainingJobs(KShadowPartition *parent,
|
|
KShadowPartition *partition);
|
|
|
|
void _PushPartitionID(partition_id id);
|
|
static int _CompareMoveInfoPosition(const void *_a, const void *_b);
|
|
|
|
KDiskDeviceJobFactory *fJobFactory;
|
|
KDiskDevice *fDevice;
|
|
KDiskDeviceJobQueue *fJobQueue;
|
|
move_info *fMoveInfos;
|
|
int32 fMoveInfoCount;
|
|
partition_id *fPartitionIDs;
|
|
int32 fPartitionIDCount;
|
|
};
|
|
|
|
} // namespace DiskDevice
|
|
} // namespace BPrivate
|
|
|
|
using BPrivate::DiskDevice::KDiskDeviceJobGenerator;
|
|
|
|
#endif // _K_DISK_DEVICE_JOB_GENERATOR_H
|