root/dwt/internal/mozilla/prio.d

Revision 327:b0d7eb5bd76c, 13.7 kB (checked in by John Reimer <terminal.node@gmail.com>, 3 years ago)

Adding Mozilla XPCOM interfaces from dwt-linux to dwt-win

Line 
1 module dwt.internal.mozilla.prio;
2
3 import dwt.internal.mozilla.Common;
4 import dwt.internal.mozilla.prtime;
5 import dwt.internal.mozilla.prinrval;
6
7 extern (System):
8
9 alias PRIntn PRDescIdentity;
10 alias void   PRFilePrivate;
11
12 struct PRFileDesc
13 {
14     PRIOMethods *methods;
15     PRFilePrivate *secret;
16     PRFileDesc *lower;
17     PRFileDesc *higher;
18     void  function(PRFileDesc *fd)dtor;
19     PRDescIdentity identity;
20 }
21
22 enum PRTransmitFileFlags
23 {
24     PR_TRANSMITFILE_KEEP_OPEN,
25     PR_TRANSMITFILE_CLOSE_SOCKET,
26 }
27
28 const PR_AF_INET = 2;
29 const PR_AF_LOCAL = 1;
30 const PR_INADDR_LOOPBACK = 0x7f000001;
31 const PR_AF_UNSPEC = 0;
32
33 union _N2
34 {
35     PRUint8 [16]_S6_u8;
36     PRUint16 [8]_S6_u16;
37     PRUint32 [4]_S6_u32;
38     PRUint64 [2]_S6_u64;
39 }
40
41 struct PRIPv6Addr
42 {
43     struct _N2{
44         union
45         {
46             PRUint8 [16]_S6_u8;
47             PRUint16 [8]_S6_u16;
48             PRUint32 [4]_S6_u32;
49             PRUint64 [2]_S6_u64;
50         }
51     }
52     _N2 _S6_un;
53 }
54
55 struct _N3
56 {
57     PRUint16 family;
58     char [14]data;
59 }
60
61 struct _N4
62 {
63     PRUint16 family;
64     PRUint16 port;
65     PRUint32 ip;
66     char [8]pad;
67 }
68
69 struct _N5
70 {
71     PRUint16 family;
72     PRUint16 port;
73     PRUint32 flowinfo;
74     PRIPv6Addr ip;
75     PRUint32 scope_id;
76 }
77
78 union PRNetAddr
79 {
80     struct _N3
81     {
82         PRUint16 family;
83         char [14]data;
84     }
85     _N3 raw;
86     struct _N4
87     {
88         PRUint16 family;
89         PRUint16 port;
90         PRUint32 ip;
91         char [8]pad;
92     }
93     _N4 inet;
94     struct _N5
95     {
96         PRUint16 family;
97         PRUint16 port;
98         PRUint32 flowinfo;
99         PRIPv6Addr ip;
100         PRUint32 scope_id;
101     }
102     _N5 ipv6;
103 }
104
105 enum PRSockOption
106 {
107     PR_SockOpt_Nonblocking,
108     PR_SockOpt_Linger,
109     PR_SockOpt_Reuseaddr,
110     PR_SockOpt_Keepalive,
111     PR_SockOpt_RecvBufferSize,
112     PR_SockOpt_SendBufferSize,
113     PR_SockOpt_IpTimeToLive,
114     PR_SockOpt_IpTypeOfService,
115     PR_SockOpt_AddMember,
116     PR_SockOpt_DropMember,
117     PR_SockOpt_McastInterface,
118     PR_SockOpt_McastTimeToLive,
119     PR_SockOpt_McastLoopback,
120     PR_SockOpt_NoDelay,
121     PR_SockOpt_MaxSegment,
122     PR_SockOpt_Broadcast,
123     PR_SockOpt_Last,
124 }
125
126 struct PRLinger
127 {
128     PRBool polarity;
129     PRIntervalTime linger;
130 }
131
132 struct PRMcastRequest
133 {
134     PRNetAddr mcaddr;
135     PRNetAddr ifaddr;
136 }
137
138 union _N6
139 {
140     PRUintn ip_ttl;
141     PRUintn mcast_ttl;
142     PRUintn tos;
143     PRBool non_blocking;
144     PRBool reuse_addr;
145     PRBool keep_alive;
146     PRBool mcast_loopback;
147     PRBool no_delay;
148     PRBool broadcast;
149     PRSize max_segment;
150     PRSize recv_buffer_size;
151     PRSize send_buffer_size;
152     PRLinger linger;
153     PRMcastRequest add_member;
154     PRMcastRequest drop_member;
155     PRNetAddr mcast_if;
156 }
157
158 struct PRSocketOptionData
159 {
160     int option;
161     union _N6
162     {
163         PRUintn ip_ttl;
164         PRUintn mcast_ttl;
165         PRUintn tos;
166         PRBool non_blocking;
167         PRBool reuse_addr;
168         PRBool keep_alive;
169         PRBool mcast_loopback;
170         PRBool no_delay;
171         PRBool broadcast;
172         PRSize max_segment;
173         PRSize recv_buffer_size;
174         PRSize send_buffer_size;
175         PRLinger linger;
176         PRMcastRequest add_member;
177         PRMcastRequest drop_member;
178         PRNetAddr mcast_if;
179     }
180     _N6 value;
181 }
182
183 struct PRIOVec
184 {
185     char *iov_base;
186     int iov_len;
187 }
188
189 enum PRDescType
190 {
191     PR_DESC_FILE = 1,
192     PR_DESC_SOCKET_TCP,
193     PR_DESC_SOCKET_UDP,
194     PR_DESC_LAYERED,
195     PR_DESC_PIPE,
196 }
197
198 enum PRSeekWhence
199 {
200     PR_SEEK_SET,
201     PR_SEEK_CUR,
202     PR_SEEK_END,
203 }
204
205 version(NON_XPCOM_GLUE){
206     int  PR_GetDescType(PRFileDesc *file);
207 }
208
209 alias PRStatus  function(PRFileDesc *fd)PRCloseFN;
210 alias PRInt32  function(PRFileDesc *fd, void *buf, PRInt32 amount)PRReadFN;
211 alias PRInt32  function(PRFileDesc *fd, void *buf, PRInt32 amount)PRWriteFN;
212 alias PRInt32  function(PRFileDesc *fd)PRAvailableFN;
213 alias PRInt64  function(PRFileDesc *fd)PRAvailable64FN;
214 alias PRStatus  function(PRFileDesc *fd)PRFsyncFN;
215 alias PROffset32  function(PRFileDesc *fd, PROffset32 offset, int how)PRSeekFN;
216 alias PROffset64  function(PRFileDesc *fd, PROffset64 offset, int how)PRSeek64FN;
217 alias PRStatus  function(PRFileDesc *fd, PRFileInfo *info)PRFileInfoFN;
218 alias PRStatus  function(PRFileDesc *fd, PRFileInfo64 *info)PRFileInfo64FN;
219 alias PRInt32  function(PRFileDesc *fd, PRIOVec *iov, PRInt32 iov_size, PRIntervalTime timeout)PRWritevFN;
220 alias PRStatus  function(PRFileDesc *fd, PRNetAddr *addr, PRIntervalTime timeout)PRConnectFN;
221 alias PRFileDesc * function(PRFileDesc *fd, PRNetAddr *addr, PRIntervalTime timeout)PRAcceptFN;
222 alias PRStatus  function(PRFileDesc *fd, PRNetAddr *addr)PRBindFN;
223 alias PRStatus  function(PRFileDesc *fd, PRIntn backlog)PRListenFN;
224 alias PRStatus  function(PRFileDesc *fd, PRIntn how)PRShutdownFN;
225 alias PRInt32  function(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags, PRIntervalTime timeout)PRRecvFN;
226 alias PRInt32  function(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags, PRIntervalTime timeout)PRSendFN;
227 alias PRInt32  function(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags, PRNetAddr *addr, PRIntervalTime timeout)PRRecvfromFN;
228 alias PRInt32  function(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags, PRNetAddr *addr, PRIntervalTime timeout)PRSendtoFN;
229 alias PRInt16  function(PRFileDesc *fd, PRInt16 in_flags, PRInt16 *out_flags)PRPollFN;
230 alias PRInt32  function(PRFileDesc *sd, PRFileDesc **nd, PRNetAddr **raddr, void *buf, PRInt32 amount, PRIntervalTime t)PRAcceptreadFN;
231 alias PRInt32  function(PRFileDesc *sd, PRFileDesc *fd, void *headers, PRInt32 hlen, int flags, PRIntervalTime t)PRTransmitfileFN;
232 alias PRStatus  function(PRFileDesc *fd, PRNetAddr *addr)PRGetsocknameFN;
233 alias PRStatus  function(PRFileDesc *fd, PRNetAddr *addr)PRGetpeernameFN;
234 alias PRStatus  function(PRFileDesc *fd, PRSocketOptionData *data)PRGetsocketoptionFN;
235 alias PRStatus  function(PRFileDesc *fd, PRSocketOptionData *data)PRSetsocketoptionFN;
236 alias PRInt32  function(PRFileDesc *networkSocket, PRSendFileData *sendData, int flags, PRIntervalTime timeout)PRSendfileFN;
237 alias PRStatus  function(PRFileDesc *fd, PRInt16 out_flags)PRConnectcontinueFN;
238 alias PRIntn  function(PRFileDesc *fd)PRReservedFN;
239
240 struct PRIOMethods
241 {
242     int file_type;
243     PRCloseFN close;
244     PRReadFN read;
245     PRWriteFN write;
246     PRAvailableFN available;
247     PRAvailable64FN available64;
248     PRFsyncFN fsync;
249     PRSeekFN seek;
250     PRSeek64FN seek64;
251     PRFileInfoFN fileInfo;
252     PRFileInfo64FN fileInfo64;
253     PRWritevFN writev;
254     PRConnectFN connect;
255     PRAcceptFN accept;
256     PRBindFN bind;
257     PRListenFN listen;
258     PRShutdownFN shutdown;
259     PRRecvFN recv;
260     PRSendFN send;
261     PRRecvfromFN recvfrom;
262     PRSendtoFN sendto;
263     PRPollFN poll;
264     PRAcceptreadFN acceptread;
265     PRTransmitfileFN transmitfile;
266     PRGetsocknameFN getsockname;
267     PRGetpeernameFN getpeername;
268     PRReservedFN reserved_fn_6;
269     PRReservedFN reserved_fn_5;
270     PRGetsocketoptionFN getsocketoption;
271     PRSetsocketoptionFN setsocketoption;
272     PRSendfileFN sendfile;
273     PRConnectcontinueFN connectcontinue;
274     PRReservedFN reserved_fn_3;
275     PRReservedFN reserved_fn_2;
276     PRReservedFN reserved_fn_1;
277     PRReservedFN reserved_fn_0;
278 }
279
280 enum PRSpecialFD
281 {
282     PR_StandardInput,
283     PR_StandardOutput,
284     PR_StandardError,
285 }
286
287 version(NON_XPCOM_GLUE)
288 {
289     PRFileDesc *    PR_GetSpecialFD(int id);
290     PRDescIdentity  PR_GetUniqueIdentity(char *layer_name);
291     char *          PR_GetNameForIdentity(PRDescIdentity ident);
292     PRDescIdentity  PR_GetLayersIdentity(PRFileDesc *fd);
293     PRFileDesc *    PR_GetIdentitiesLayer(PRFileDesc *fd_stack, PRDescIdentity id);
294     PRIOMethods *   PR_GetDefaultIOMethods();
295     PRFileDesc *    PR_CreateIOLayerStub(PRDescIdentity ident, PRIOMethods *methods);
296     PRFileDesc *    PR_CreateIOLayer(PRFileDesc *fd);
297     PRStatus        PR_PushIOLayer(PRFileDesc *fd_stack, PRDescIdentity id, PRFileDesc *layer);
298     PRFileDesc *    PR_PopIOLayer(PRFileDesc *fd_stack, PRDescIdentity id);
299 }
300
301 const PR_RDONLY = 0x01;
302 const PR_WRONLY = 0x02;
303 const PR_RDWR = 0x04;
304 const PR_CREATE_FILE = 0x08;
305 const PR_APPEND = 0x10;
306 const PR_TRUNCATE = 0x20;
307 const PR_SYNC = 0x40;
308 const PR_EXCL = 0x80;
309
310 version(NON_XPCOM_GLUE) {
311     PRFileDesc * PR_Open(char *name, PRIntn flags, PRIntn mode);
312 }
313
314 const PR_IRWXU = 00700;
315 const PR_IRUSR = 00400;
316 const PR_IWUSR = 00200;
317 const PR_IXUSR = 00100;
318 const PR_IRWXG = 00070;
319 const PR_IRGRP = 00040;
320 const PR_IWGRP = 00020;
321 const PR_IXGRP = 00010;
322 const PR_IRWXO = 00007;
323 const PR_IROTH = 00004;
324 const PR_IWOTH = 00002;
325 const PR_IXOTH = 00001;
326
327 version(NON_XPCOM_GLUE)
328 {
329     PRFileDesc *    PR_OpenFile(char *name, PRIntn flags, PRIntn mode);
330     PRStatus        PR_Close(PRFileDesc *fd);
331     PRInt32         PR_Read(PRFileDesc *fd, void *buf, PRInt32 amount);
332     PRInt32         PR_Write(PRFileDesc *fd, void *buf, PRInt32 amount);
333 }
334
335 const PR_MAX_IOVECTOR_SIZE = 16;
336
337 version(NON_XPCOM_GLUE)
338 {
339     PRInt32     PR_Writev(PRFileDesc *fd, PRIOVec *iov, PRInt32 iov_size, PRIntervalTime timeout);
340     PRStatus    PR_Delete(char *name);
341 }
342
343 enum PRFileType
344 {
345     PR_FILE_FILE = 1,
346     PR_FILE_DIRECTORY,
347     PR_FILE_OTHER,
348 }
349
350 struct PRFileInfo
351 {
352     int type;
353     PROffset32 size;
354     PRTime creationTime;
355     PRTime modifyTime;
356 }
357
358 struct PRFileInfo64
359 {
360     int type;
361     PROffset64 size;
362     PRTime creationTime;
363     PRTime modifyTime;
364 }
365
366 version (NON_XPCOM_GLUE)
367 {
368     PRStatus  PR_GetFileInfo(char *fn, PRFileInfo *info);
369     PRStatus  PR_GetFileInfo64(char *fn, PRFileInfo64 *info);
370     PRStatus  PR_GetOpenFileInfo(PRFileDesc *fd, PRFileInfo *info);
371     PRStatus  PR_GetOpenFileInfo64(PRFileDesc *fd, PRFileInfo64 *info);
372     PRStatus  PR_Rename(char *from, char *to);
373 }
374
375 enum PRAccessHow
376 {
377     PR_ACCESS_EXISTS = 1,
378     PR_ACCESS_WRITE_OK,
379     PR_ACCESS_READ_OK,
380 }
381
382 version(NON_XPCOM_GLUE)
383 {
384     PRStatus    PR_Access(char *name, int how);
385     PROffset32  PR_Seek(PRFileDesc *fd, PROffset32 offset, int whence);
386     PROffset64  PR_Seek64(PRFileDesc *fd, PROffset64 offset, int whence);
387     PRInt32     PR_Available(PRFileDesc *fd);
388     PRInt64     PR_Available64(PRFileDesc *fd);
389     PRStatus    PR_Sync(PRFileDesc *fd);
390 }
391
392 struct PRDirEntry
393 {
394     char *name;
395 }
396
397 alias void PRDir;
398
399 version(NON_XPCOM_GLUE) {
400     PRDir * PR_OpenDir(char *name);
401 }
402
403 enum PRDirFlags
404 {
405     PR_SKIP_NONE,
406     PR_SKIP_DOT,
407     PR_SKIP_DOT_DOT,
408     PR_SKIP_BOTH,
409     PR_SKIP_HIDDEN,
410 }
411
412 version(NON_XPCOM_GLUE)
413 {
414     PRDirEntry *    PR_ReadDir(PRDir *dir, int flags);
415     PRStatus        PR_CloseDir(PRDir *dir);
416     PRStatus        PR_MkDir(char *name, PRIntn mode);
417     PRStatus        PR_MakeDir(char *name, PRIntn mode);
418     PRStatus        PR_RmDir(char *name);
419     PRFileDesc *    PR_NewUDPSocket();
420     PRFileDesc *    PR_NewTCPSocket();
421     PRFileDesc *    PR_OpenUDPSocket(PRIntn af);
422     PRFileDesc *    PR_OpenTCPSocket(PRIntn af);
423     PRStatus        PR_Connect(PRFileDesc *fd, PRNetAddr *addr, PRIntervalTime timeout);
424     PRStatus        PR_ConnectContinue(PRFileDesc *fd, PRInt16 out_flags);
425     PRStatus        PR_GetConnectStatus(PRPollDesc *pd);
426     PRFileDesc *    PR_Accept(PRFileDesc *fd, PRNetAddr *addr, PRIntervalTime timeout);
427     PRStatus        PR_Bind(PRFileDesc *fd, PRNetAddr *addr);
428     PRStatus        PR_Listen(PRFileDesc *fd, PRIntn backlog);
429 }
430
431 enum PRShutdownHow
432 {
433     PR_SHUTDOWN_RCV,
434     PR_SHUTDOWN_SEND,
435     PR_SHUTDOWN_BOTH,
436 }
437
438 version(NON_XPCOM_GLUE) {
439     PRStatus  PR_Shutdown(PRFileDesc *fd, int how);
440 }
441
442 const PR_MSG_PEEK = 0x2;
443
444 version(NON_XPCOM_GLUE)
445 {
446     PRInt32  PR_Recv(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags, PRIntervalTime timeout);
447     PRInt32  PR_Send(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags, PRIntervalTime timeout);
448     PRInt32  PR_RecvFrom(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags, PRNetAddr *addr, PRIntervalTime timeout);
449     PRInt32  PR_SendTo(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags, PRNetAddr *addr, PRIntervalTime timeout);
450     PRInt32  PR_TransmitFile(PRFileDesc *networkSocket, PRFileDesc *sourceFile, void *headers, PRInt32 hlen, int flags, PRIntervalTime timeout);
451 }
452
453 struct PRSendFileData
454 {
455     PRFileDesc *fd;
456     PRUint32 file_offset;
457     PRSize file_nbytes;
458     void *header;
459     PRInt32 hlen;
460     void *trailer;
461     PRInt32 tlen;
462 }
463
464 version(NON_XPCOM_GLUE)
465 {
466     PRInt32   PR_SendFile(PRFileDesc *networkSocket, PRSendFileData *sendData, int flags, PRIntervalTime timeout);
467     PRInt32   PR_AcceptRead(PRFileDesc *listenSock, PRFileDesc **acceptedSock, PRNetAddr **peerAddr, void *buf, PRInt32 amount, PRIntervalTime timeout);
468     PRStatus  PR_NewTCPSocketPair(PRFileDesc **fds);
469     PRStatus  PR_GetSockName(PRFileDesc *fd, PRNetAddr *addr);
470     PRStatus  PR_GetPeerName(PRFileDesc *fd, PRNetAddr *addr);
471     PRStatus  PR_GetSocketOption(PRFileDesc *fd, PRSocketOptionData *data);
472     PRStatus  PR_SetSocketOption(PRFileDesc *fd, PRSocketOptionData *data);
473     PRStatus  PR_SetFDInheritable(PRFileDesc *fd, PRBool inheritable);
474     PRFileDesc * PR_GetInheritedFD(char *name);
475 }
476
477 enum PRFileMapProtect
478 {
479     PR_PROT_READONLY,
480     PR_PROT_READWRITE,
481     PR_PROT_WRITECOPY,
482 }
483
484 alias void PRFileMap;
485
486 version(NON_XPCOM_GLUE)
487 {
488     PRFileMap * PR_CreateFileMap(PRFileDesc *fd, PRInt64 size, int prot);
489     PRInt32     PR_GetMemMapAlignment();
490     void *      PR_MemMap(PRFileMap *fmap, PROffset64 offset, PRUint32 len);
491     PRStatus    PR_MemUnmap(void *addr, PRUint32 len);
492     PRStatus    PR_CloseFileMap(PRFileMap *fmap);
493     PRStatus    PR_CreatePipe(PRFileDesc **readPipe, PRFileDesc **writePipe);
494 }
495
496 struct PRPollDesc
497 {
498     PRFileDesc *fd;
499     PRInt16 in_flags;
500     PRInt16 out_flags;
501 }
502
503 const PR_POLL_READ = 0x1;
504 const PR_POLL_WRITE = 0x2;
505 const PR_POLL_EXCEPT = 0x4;
506 const PR_POLL_ERR = 0x8;
507 const PR_POLL_NVAL = 0x10;
508 const PR_POLL_HUP = 0x20;
509
510 version(NON_XPCOM_GLUE)
511 {
512     PRInt32  PR_Poll(PRPollDesc *pds, PRIntn npds, PRIntervalTime timeout);
513     PRFileDesc * PR_NewPollableEvent();
514     PRStatus  PR_DestroyPollableEvent(PRFileDesc *event);
515     PRStatus  PR_SetPollableEvent(PRFileDesc *event);
516     PRStatus  PR_WaitForPollableEvent(PRFileDesc *event);
517 }
Note: See TracBrowser for help on using the browser.