You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
182 lines
5.0 KiB
182 lines
5.0 KiB
5 years ago
|
/*
|
||
|
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__ */
|
||
|
|