|
|
/*
File: AEMach.h Contains: AppleEvent over mach_msg interfaces Version: QuickTime 7.3 Copyright: (c) 2007 (c) 2000-2001 by Apple Computer, Inc., all rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: http://developer.apple.com/bugreporter/
*/ #ifndef __AEMACH__
#define __AEMACH__
#ifndef __MACTYPES__
#include <MacTypes.h>
#endif
#ifndef __MIXEDMODE__
#include <MixedMode.h>
#endif
#ifndef __AEDATAMODEL__
#include <AEDataModel.h>
#endif
#if PRAGMA_ONCE
#pragma once
#endif
#ifdef __cplusplus
extern "C" { #endif
#if PRAGMA_IMPORT
#pragma import on
#endif
/*-
* AE Mach API -- * * AppleEvents on OS X are implemented in terms of mach messages. * To facilitate writing server processes that can send and receive * AppleEvents, the following APIs are provided. * * AppleEvents are directed to a well known port uniquely tied to a * process. The AE framework will discover this port based on the * keyAddressAttr of the event (as specifed in AECreateAppleEvent by * the target parameter.) If a port cannot be found, * procNotFound (-600) will be returned on AESend. * * Of note is a new attribute for an AppleEvent, keyReplyPortAttr. * This specifies the mach_port_t to which an AppleEvent reply * should be directed. By default, replies are sent to the * processes registered port where they are culled from the normal * event stream if there is an outstanding AESend + kAEWaitReply. * But it may be desirable for a client to specify their own port to * receive quued replies. * (In the case of AESendMessage with kAEWaitReply specified, an * anonymous port will be used to block until the reply is received.) * * Not supplied is a convenience routine to block a server and * process AppleEvents. This implementation will be detailed in a * tech note. **/ enum { keyReplyPortAttr = FOUR_CHAR_CODE('repp') };
/* typeReplyPortAttr was misnamed and is deprecated; use keyReplyPortAttr instead. */ enum { typeReplyPortAttr = keyReplyPortAttr };
/*-
* Return the mach_port_t that was registered with the bootstrap * server for this process. This port is considered public, and * will be used by other applications to target your process. You * are free to use this mach_port_t to add to a port set, if and * only if, you are not also using routines from HIToolbox. In that * case, HIToolbox retains control of this port and AppleEvents are * dispatched through the main event loop. **/ /*
* AEGetRegisteredMachPort() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( mach_port_t ) AEGetRegisteredMachPort(void);
/*-
* Decode a mach_msg into an AppleEvent and its related reply. (The * reply is set up from fields of the event.) You can call this * routine if you wish to dispatch or handle the event yourself. To * return a reply to the sender, you should call: * * AESendMessage(reply, NULL, kAENoReply, kAENormalPriority, kAEDefaultTimeout); * * The contents of the header are invalid after this call. **/ /*
* AEDecodeMessage() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) AEDecodeMessage( mach_msg_header_t * header, AppleEvent * event, AppleEvent * reply); /* can be NULL */
/*-
* Decodes and dispatches an event to an event handler. Handles * packaging and returning the reply to the sender. * * The contents of the header are invalid after this call. **/ /*
* AEProcessMessage() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) AEProcessMessage(mach_msg_header_t * header);
/*-
* Send an AppleEvent to a target process. If the target is the * current process (as specified by using typeProcessSerialNumber of * { 0, kCurrentProcess } it is dispatched directly to the * appropriate event handler in your process and not serialized. **/ /*
* AESendMessage() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) AESendMessage( const AppleEvent * event, AppleEvent * reply, /* can be NULL */ AESendMode sendMode, long timeOutInTicks);
#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif
#ifdef __cplusplus
} #endif
#endif /* __AEMACH__ */
|