1/*
2 * Copyright (c) 2009 Apple, Inc.  All Rights Reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24/*
25 *  IOMIGMachPort.h
26 *
27 *  Created by Roberto Yepez on 1/29/09.
28 *  Copyright 2009 Apple, Inc. All rights reserved.
29 *
30 */
31
32#ifndef _IO_MIG_MACH_PORT_H_
33#define _IO_MIG_MACH_PORT_H_
34
35#include <dispatch/dispatch.h>
36#include <CoreFoundation/CoreFoundation.h>
37#include <mach/mach.h>
38
39__BEGIN_DECLS
40
41typedef struct __IOMIGMachPort * IOMIGMachPortRef;
42
43typedef void (*IOMIGMachPortTerminationCallback)(IOMIGMachPortRef client, void * refcon);
44typedef Boolean (*IOMIGMachPortDemuxCallback)(IOMIGMachPortRef client, mach_msg_header_t * request, mach_msg_header_t * reply, void *refcon);
45
46
47CF_EXPORT
48CFTypeID IOMIGMachPortGetTypeID(void);
49
50CF_EXPORT
51IOMIGMachPortRef IOMIGMachPortCreate(CFAllocatorRef allocator, CFIndex maxMessageSize, mach_port_t port);
52
53CF_EXPORT
54mach_port_t IOMIGMachPortGetPort(IOMIGMachPortRef migPort);
55
56CF_EXPORT
57void IOMIGMachPortRegisterTerminationCallback(IOMIGMachPortRef client, IOMIGMachPortTerminationCallback callback, void *refcon);
58
59CF_EXPORT
60void IOMIGMachPortRegisterDemuxCallback(IOMIGMachPortRef client, IOMIGMachPortDemuxCallback callback, void *refcon);
61
62CF_EXPORT
63void IOMIGMachPortScheduleWithRunLoop(IOMIGMachPortRef server, CFRunLoopRef runLoop, CFStringRef runLoopMode);
64
65CF_EXPORT
66void IOMIGMachPortUnscheduleFromRunLoop(IOMIGMachPortRef server, CFRunLoopRef runLoop, CFStringRef runLoopMode);
67
68CF_EXPORT
69void IOMIGMachPortScheduleWithDispatchQueue(IOMIGMachPortRef server, dispatch_queue_t queue);
70
71CF_EXPORT
72void IOMIGMachPortUnscheduleFromDispatchQueue(IOMIGMachPortRef server, dispatch_queue_t queue);
73
74// PORT CACHE SUPPORT
75CF_EXPORT
76void IOMIGMachPortCacheAdd(mach_port_t port, CFTypeRef server);
77
78CF_EXPORT
79void IOMIGMachPortCacheRemove(mach_port_t port);
80
81CF_EXPORT
82CFTypeRef IOMIGMachPortCacheCopy(mach_port_t port);
83
84__END_DECLS
85
86
87#endif /* _IO_MIG_MACH_PORT_H_ */
88