haiku/headers/private/storage/DiskSystemAddOn.h
Ingo Weinhold 350043e707 * Initialization of BPartition::Delegate is now two-phased. The first phase
builds the object hierarchy, the second will (in case of MutableDelegate)
  let the disk systems do their initialization. This way the disk systems
  already find a fully functional object hierarchy they can work with.
* Child creation also takes a partition name as a parameter, now.
* Implemented BMutablePartition child creation/deletion.
* The BDiskSystemAddOn/BPartitionHandle::Validate*() methods return a
  status_t instead of a bool, now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22540 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-13 21:29:33 +00:00

144 lines
4.3 KiB
C++

/*
* Copyright 2007, Ingo Weinhold, bonefish@users.sf.net.
* Distributed under the terms of the MIT License.
*/
#ifndef _DISK_SYSTEM_ADD_ON_H
#define _DISK_SYSTEM_ADD_ON_H
#include <String.h>
#include <SupportDefs.h>
class BDiskDeviceParameterEditor;
class BList;
class BMutablePartition;
class BPartitionHandle;
class BPartitioningInfo;
class BDiskSystemAddOn {
public:
BDiskSystemAddOn(const char* name,
uint32 flags);
virtual ~BDiskSystemAddOn();
const char* Name() const;
uint32 Flags() const;
virtual status_t CreatePartitionHandle(
BMutablePartition* partition,
BPartitionHandle** handle) = 0;
virtual bool CanInitialize(
const BMutablePartition* partition);
virtual status_t GetInitializationParameterEditor(
const BMutablePartition* partition,
BDiskDeviceParameterEditor** editor);
virtual status_t ValidateInitialize(
const BMutablePartition* partition,
BString* name, const char* parameters);
virtual status_t Initialize(BMutablePartition* partition,
const char* name, const char* parameters,
BPartitionHandle** handle);
private:
BString fName;
uint32 fFlags;
};
class BPartitionHandle {
public:
BPartitionHandle(BMutablePartition* partition);
virtual ~BPartitionHandle();
BMutablePartition* Partition() const;
virtual uint32 SupportedOperations(uint32 mask);
virtual uint32 SupportedChildOperations(
const BMutablePartition* child,
uint32 mask);
virtual bool SupportsInitializingChild(
const BMutablePartition* child,
const char* diskSystem);
virtual bool IsSubSystemFor(const BMutablePartition* child);
virtual status_t GetNextSupportedType(
const BMutablePartition* child,
int32* cookie, BString* type);
// child can be NULL
virtual status_t GetTypeForContentType(const char* contentType,
BString* type);
virtual status_t GetPartitioningInfo(BPartitioningInfo* info);
virtual status_t Defragment();
virtual status_t Repair(bool checkOnly);
virtual status_t ValidateResize(off_t* size);
virtual status_t ValidateResizeChild(
const BMutablePartition* child,
off_t* size);
virtual status_t Resize(off_t size);
virtual status_t ResizeChild(BMutablePartition* child,
off_t size);
virtual status_t ValidateMove(off_t* offset);
virtual status_t ValidateMoveChild(
const BMutablePartition* child,
off_t* offset);
virtual status_t Move(off_t offset);
virtual status_t MoveChild(BMutablePartition* child,
off_t offset);
virtual status_t ValidateSetContentName(BString* name);
virtual status_t ValidateSetName(const BMutablePartition* child,
BString* name);
virtual status_t SetContentName(const char* name);
virtual status_t SetName(BMutablePartition* child,
const char* name);
virtual status_t ValidateSetType(const BMutablePartition* child,
const char* type);
virtual status_t SetType(BMutablePartition* child,
const char* type);
virtual status_t GetContentParameterEditor(
BDiskDeviceParameterEditor** editor);
virtual status_t GetParameterEditor(
const BMutablePartition* child,
BDiskDeviceParameterEditor** editor);
virtual status_t ValidateSetContentParameters(
const char* parameters);
virtual status_t ValidateSetParameters(
const BMutablePartition* child,
const char* parameters);
virtual status_t SetContentParameters(const char* parameters);
virtual status_t SetParameters(BMutablePartition* child,
const char* parameters);
virtual status_t GetChildCreationParameterEditor(
const char* type,
BDiskDeviceParameterEditor** editor);
virtual status_t ValidateCreateChild(off_t* offset,
off_t* size, const char* type,
BString* name, const char* parameters);
virtual status_t CreateChild(off_t offset, off_t size,
const char* type, const char* name,
const char* parameters,
BMutablePartition** child);
virtual status_t DeleteChild(BMutablePartition* child);
private:
BMutablePartition* fPartition;
};
extern "C" status_t get_disk_system_add_ons(BList* addOns);
// Implemented in the add-on
#endif // _DISK_SYSTEM_ADD_ON_H