257dcd2d934ec4c87055ee6bcbdd73f5d3fa6a27
[mono.git] / mono / io-layer / daemon-messages.h
1 /*
2  * daemon-messages.h:  Communications to and from the handle daemon
3  *
4  * Author:
5  *      Dick Porter (dick@ximian.com)
6  *
7  * (C) 2002 Ximian, Inc.
8  */
9
10 #ifndef _WAPI_DAEMON_MESSAGES_H_
11 #define _WAPI_DAEMON_MESSAGES_H_
12
13 #include <mono/io-layer/wapi-private.h>
14
15 typedef enum {
16         WapiHandleRequestType_New,
17         WapiHandleRequestType_Open,
18         WapiHandleRequestType_Close,
19         WapiHandleRequestType_Scratch,
20         WapiHandleRequestType_ScratchFree,
21 } WapiHandleRequestType;
22
23 typedef struct 
24 {
25         WapiHandleType type;
26 } WapiHandleRequest_New;
27
28 typedef struct 
29 {
30         guint32 handle;
31 } WapiHandleRequest_Open;
32
33 typedef struct 
34 {
35         guint32 handle;
36 } WapiHandleRequest_Close;
37
38 typedef struct
39 {
40         guint32 length;
41 } WapiHandleRequest_Scratch;
42
43 typedef struct
44 {
45         guint32 idx;
46 } WapiHandleRequest_ScratchFree;
47
48 typedef struct 
49 {
50         WapiHandleRequestType type;
51         union 
52         {
53                 WapiHandleRequest_New new;
54                 WapiHandleRequest_Open open;
55                 WapiHandleRequest_Close close;
56                 WapiHandleRequest_Scratch scratch;
57                 WapiHandleRequest_ScratchFree scratch_free;
58         } u;
59 } WapiHandleRequest;
60
61 typedef enum {
62         WapiHandleResponseType_Error,
63         WapiHandleResponseType_New,
64         WapiHandleResponseType_Open,
65         WapiHandleResponseType_Close,
66         WapiHandleResponseType_Scratch,
67         WapiHandleResponseType_ScratchFree,
68 } WapiHandleResponseType;
69
70 typedef struct 
71 {
72         guint32 reason;
73 } WapiHandleResponse_Error;
74
75 typedef struct 
76 {
77         WapiHandleType type;
78         guint32 handle;
79 } WapiHandleResponse_New;
80
81 typedef struct 
82 {
83         WapiHandleType type;
84         guint32 handle;
85 } WapiHandleResponse_Open;
86
87 typedef struct 
88 {
89         gboolean destroy;
90 } WapiHandleResponse_Close;
91
92 typedef struct
93 {
94         guint32 idx;
95 } WapiHandleResponse_Scratch;
96
97 typedef struct
98 {
99         guint32 dummy;
100 } WapiHandleResponse_ScratchFree;
101
102 typedef struct
103 {
104         WapiHandleResponseType type;
105         union
106         {
107                 WapiHandleResponse_Error error;
108                 WapiHandleResponse_New new;
109                 WapiHandleResponse_Open open;
110                 WapiHandleResponse_Close close;
111                 WapiHandleResponse_Scratch scratch;
112                 WapiHandleResponse_ScratchFree scratch_free;
113         } u;
114 } WapiHandleResponse;
115
116 extern void _wapi_daemon_request_response (int fd, WapiHandleRequest *req,
117                                            WapiHandleResponse *resp);
118 extern void _wapi_daemon_request (int fd, WapiHandleRequest *req);
119 extern void _wapi_daemon_response (int fd, WapiHandleResponse *resp);
120
121 #endif /* _WAPI_DAEMON_MESSAGES_H_ */