2003-07-31 22:41:50 +00:00
|
|
|
// 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;
|
|
|
|
|
|
2003-08-03 18:37:21 +00:00
|
|
|
KDiskDeviceJobQueue *DetachJobQueue();
|
|
|
|
|
|
2003-07-31 22:41:50 +00:00
|
|
|
status_t GenerateJobs();
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
struct move_info;
|
|
|
|
|
|
|
|
|
|
status_t _AddJob(KDiskDeviceJob *job);
|
|
|
|
|
|
2003-09-22 21:43:13 +00:00
|
|
|
status_t _GenerateCleanupJobs(KPartition *partition);
|
2003-07-31 22:41:50 +00:00
|
|
|
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);
|
2003-08-02 00:00:49 +00:00
|
|
|
status_t _GenerateRemainingJobs(KShadowPartition *parent,
|
|
|
|
|
KShadowPartition *partition);
|
2003-07-31 22:41:50 +00:00
|
|
|
|
|
|
|
|
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
|