Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / metadata / fdhandle.h
1
2 #ifndef __MONO_METADATA_FDHANDLE_H__
3 #define __MONO_METADATA_FDHANDLE_H__
4
5 #include <config.h>
6 #include <glib.h>
7
8 #include "utils/refcount.h"
9
10 typedef enum {
11         MONO_FDTYPE_FILE,
12         MONO_FDTYPE_CONSOLE,
13         MONO_FDTYPE_PIPE,
14         MONO_FDTYPE_SOCKET,
15         MONO_FDTYPE_COUNT
16 } MonoFDType;
17
18 typedef struct {
19         MonoRefCount ref;
20         MonoFDType type;
21         gint fd;
22 } MonoFDHandle;
23
24 typedef struct {
25         void (*close) (MonoFDHandle *fdhandle);
26         void (*destroy) (MonoFDHandle *fdhandle);
27 } MonoFDHandleCallback;
28
29 void
30 mono_fdhandle_register (MonoFDType type, MonoFDHandleCallback *callback);
31
32 void
33 mono_fdhandle_init (MonoFDHandle *fdhandle, MonoFDType type, gint fd);
34
35 void
36 mono_fdhandle_insert (MonoFDHandle *fdhandle);
37
38 gboolean
39 mono_fdhandle_try_insert (MonoFDHandle *fdhandle);
40
41 gboolean
42 mono_fdhandle_lookup_and_ref (gint fd, MonoFDHandle **fdhandle);
43
44 void
45 mono_fdhandle_unref (MonoFDHandle *fdhandle);
46
47 gboolean
48 mono_fdhandle_close (gint fd);
49
50 #endif /* __MONO_METADATA_FDHANDLE_H__ */