#ifndef __DISKARBITRATIOND_DAREQUEST__
#define __DISKARBITRATIOND_DAREQUEST__
#include <CoreFoundation/CoreFoundation.h>
#include "DADisk.h"
#include "DADissenter.h"
#include "DAInternal.h"
#include "DASession.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct __DARequest * DARequestRef;
enum
{
_kDARequestStateStagedAuthorize = 0x00200000,
kDARequestStateStagedProbe = 0x00010000,
kDARequestStateStagedApprove = 0x00100000
};
typedef UInt32 DARequestState;
extern DARequestRef DARequestCreate( CFAllocatorRef allocator,
_DARequestKind kind,
DADiskRef argument0,
CFIndex argument1,
CFTypeRef argument2,
CFTypeRef argument3,
uid_t userUID,
gid_t userGID,
DACallbackRef callback );
extern Boolean DARequestDispatch( DARequestRef request );
extern void DARequestDispatchCallback( DARequestRef request, DAReturn status );
extern CFIndex DARequestGetArgument1( DARequestRef request );
extern CFTypeRef DARequestGetArgument2( DARequestRef request );
extern CFTypeRef DARequestGetArgument3( DARequestRef request );
extern DACallbackRef DARequestGetCallback( DARequestRef request );
extern DADiskRef DARequestGetDisk( DARequestRef request );
extern DADissenterRef DARequestGetDissenter( DARequestRef request );
extern _DARequestKind DARequestGetKind( DARequestRef request );
extern CFArrayRef DARequestGetLink( DARequestRef request );
extern Boolean DARequestGetState( DARequestRef request, DARequestState state );
extern gid_t DARequestGetUserGID( DARequestRef request );
extern uid_t DARequestGetUserUID( DARequestRef request );
extern void DARequestSetCallback( DARequestRef request, DACallbackRef callback );
extern void DARequestSetDissenter( DARequestRef request, DADissenterRef dissenter );
extern void DARequestSetLink( DARequestRef request, CFArrayRef link );
extern void DARequestSetState( DARequestRef request, DARequestState state, Boolean value );
#ifdef __cplusplus
}
#endif
#endif