[metadata] Fix leaks when handling a few attributes (#16675)
[mono-project.git] / mono / metadata / fdhandle.h
blobe3d7e5b9b98d71925343a3403aa0add47a131b5c
2 #ifndef __MONO_METADATA_FDHANDLE_H__
3 #define __MONO_METADATA_FDHANDLE_H__
5 #include <config.h>
6 #include <glib.h>
8 #include "utils/refcount.h"
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;
18 typedef struct {
19 MonoRefCount ref;
20 MonoFDType type;
21 gint fd;
22 } MonoFDHandle;
24 typedef struct {
25 void (*close) (MonoFDHandle *fdhandle);
26 void (*destroy) (MonoFDHandle *fdhandle);
27 } MonoFDHandleCallback;
29 void
30 mono_fdhandle_register (MonoFDType type, MonoFDHandleCallback *callback);
32 void
33 mono_fdhandle_init (MonoFDHandle *fdhandle, MonoFDType type, gint fd);
35 void
36 mono_fdhandle_insert (MonoFDHandle *fdhandle);
38 gboolean
39 mono_fdhandle_try_insert (MonoFDHandle *fdhandle);
41 gboolean
42 mono_fdhandle_lookup_and_ref (gint fd, MonoFDHandle **fdhandle);
44 void
45 mono_fdhandle_unref (MonoFDHandle *fdhandle);
47 gboolean
48 mono_fdhandle_close (gint fd);
50 #endif /* __MONO_METADATA_FDHANDLE_H__ */