/*
File: DiscRecording/DRErase.h
Contains: Handles erasing a disc and obtaining status about that erasure.
Version: Technology: Mac OS X
Release: Mac OS X
Copyright: (c) 2002-2007 Apple Inc. All Rights Reserved.
Bugs?: For bug reports, consult the following page on
the World Wide Web:
http://developer.apple.com/bugreporter/
*/
/*!
@header DRErase.h
@abstract Perform and monitor the erasing a rewritable CD or DVD disc.
@discussion Each time you want to erase a disc, an instance of DRErase needs to be created.
When an instance is created, you pass in an instance of @link //apple_ref/occ/cl/DRDevice DRDevice @/link to let the object
know what device to erase. This object is retained for the life of the DRErase instance.
A DRErase object will send out notifications through the @link //apple_ref/occ/cl/DRNotificationCenter DRNotificationCenter @/link mechanism to
broadcast the erase state to any interested observers. However, if for some reason you don't want
to use notifications, you can poll the erase object at any time for the current status using
@link //apple_ref/occ/instm/DRErase/status status @/link. This is not recommended in any
application using a run loop, because it involves polling.
Here's an example that shows you how to use this class:
- (void) doErase
{
DRDevice* device;
DRErase* erase;
...determine correct device to erase...
erase = [[DRErase alloc] initWithDevice:device];
// we'll do a quick erase. It's typically all that's needed.
[erase setEraseType:DREraseTypeQuick];
// register to receive notification about the erase status.
[[DRNotificationCenter currentRunLoopCenter] addObserver:self
selector:@selector(eraseNotification:)
name:DREraseStatusChangedNotification
object:erase];
// start the erase
[erase start];
}
- (void) eraseNotification:(NSNotification*)notification
{
DRErase* erase = [notification object];
NSDictionary* status = [notification userInfo];
...do what you wish with the notification...
}
*/
#import
#import
#import
#import
/*!
@class DRErase
@abstract A DRErase object handles the process of erasing a rewritable CD or DVD disc.
@discussion Each time you want to erase a disc, an instance of this class needs to be created.
When an instance is created, you pass in an instance of @link //apple_ref/occ/cl/DRDevice DRDevice @/link to let the object
know what device to erase. This object is retained for the life of the DRErase instance.
A DRErase object will send out notifications through the @link //apple_ref/occ/cl/DRNotificationCenter DRNotificationCenter @/link mechanism to
broadcast the erase state to any interested observers. However, if for some reason you don't want
to use notifications, you can poll the erase object at any time for the current status using
@link //apple_ref/occ/instm/DRErase/status status @/link. This is not recommended in any
application using a run loop, because it involves polling.
Here's an example that shows you how to use this class:
- (void) doErase
{
DRDevice* device;
DRErase* erase;
...determine correct device to erase...
erase = [[DRErase alloc] initWithDevice:device];
// we'll do a quick erase. It's typically all that's needed.
[erase setEraseType:DREraseTypeQuick];
// register to receive notification about the erase status.
[[DRNotificationCenter currentRunLoopCenter] addObserver:self
selector:@selector(eraseNotification:)
name:DREraseStatusChangedNotification
object:erase];
// start the erase
[erase start];
}
- (void) eraseNotification:(NSNotification*)notification
{
DRErase* erase = [notification object];
NSDictionary* status = [notification userInfo];
...do what you wish with the notification...
}
*/
@interface DRErase : NSObject
{
@private
void* _ref;
}
/*!
@method eraseForDevice:
@abstract Creates and returns an erase object.
@discussion An erase object created with this method is ready to erase media.
@param device Device to use for the erase.
@result An autoreleased DRErase object.
*/
+ (DRErase*) eraseForDevice:(DRDevice*)device;
/*!
@method initWithDevice:
@abstract Initializes an erase object.
@discussion An erase object created with this method is ready to erase media.
@param device Device to use for the erase.
@result A DRErase object.
*/
- (id) initWithDevice:(DRDevice*)device;
/*!
@method start
@abstract Begin the process of erasing media.
@discussion This method only kicks off the erase. Once the erasure starts,
control returns to the caller. The caller can monitor the progress
of the erase by listening for a notification or by polling @link //apple_ref/occ/instm/DRErase/status status @/link.
*/
- (void) start;
/*!
@method status
@abstract Returns a dictionary containing the status of the erase.
@discussion The same dictionary is returned
through the @link //apple_ref/occ/data/DREraseStatusChangedNotification DREraseStatusChangedNotification @/link notification.
@result An NSDictionary containing the status of the erase.
*/
- (NSDictionary*) status;
/*!
@method properties
@abstract Returns the properties dictionary of the erase.
@result An NSDictionary containing the properties of the erase.
*/
- (NSDictionary*) properties;
/*!
@method setProperties:
@abstract Sets the properties dictionary of the erase
@param properties NSDictionary of the properties to set.
*/
- (void) setProperties:(NSDictionary*)properties;
/*!
@method device
@abstract Returns the device being used for the erase.
@result The DRDevice the erase will use.
*/
- (DRDevice*) device;
@end
/*!
@category DRErase (PropertyConvenienceMethods)
@discussion This category on DRErase defines methods that make setting and retrieving
the various DRErase properties easier.
*/
@interface DRErase (PropertyConvenienceMethods)
/*!
@method eraseType
@abstract Returns the type of erase to be performed.
@result An NSString
*/
- (NSString*) eraseType;
/*!
@method setEraseType:
@abstract Sets the type of erase to perform.
@param type The type of erase.
*/
- (void) setEraseType:(NSString*)type;
@end
#if 0
#pragma mark Erase Properties
#endif
/*!
@const DREraseTypeKey
@discussion The key for the erase's properties dictionary storing the type of
erase to perform
*/
extern NSString* const DREraseTypeKey AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
/*"
@const DREraseTypeQuick
@discussion An NString value for the @link DREraseTypeKey DREraseTypeKey @/link.
Configures the erase object to perform a quick erase, doing the minimal amount of work to make the
disc appear blank. This operation typically takes only a minute or two.
This is the default for an erase object.
*/
extern NSString* const DREraseTypeQuick AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
/*!
@const DREraseTypeComplete
@discussion An NString value for the @link DREraseTypeKey DREraseTypeKey @/link.
Configures the erase object to perform a complete erase, erasing every byte on the
disk. This operation is slow (on the order of 30 minutes) to complete.
*/
extern NSString* const DREraseTypeComplete AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
#if 0
#pragma mark Erase State
#endif
/*
@const DREraseStatusChangedNotification
@discussion Posted by a @link //apple_ref/occ/cl/DRNotificationCenter DRNotificationCenter @/link when the status of the
erase operation has changed.
The object associated with this notification
is the erase object sending it and the userInfo contains a dictionary
detailing the status.
*/
extern NSString* const DREraseStatusChangedNotification AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;