少年修仙传客户端基础资源
hch
2024-04-01 d01413b00ef631ac20347716b23818b0b811f65f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
/**
 * \file
 */
 
#ifndef __MONO_LOGGER_INTERNAL_H__
#define __MONO_LOGGER_INTERNAL_H__
 
#include <glib.h>
#include <mono/utils/mono-compiler.h>
#include "mono-logger.h"
 
G_BEGIN_DECLS
 
typedef enum {
    MONO_TRACE_ASSEMBLY           = 1 << 0,
    MONO_TRACE_TYPE               = 1 << 1,
    MONO_TRACE_DLLIMPORT          = 1 << 2,
    MONO_TRACE_GC                 = 1 << 3,
    MONO_TRACE_CONFIG             = 1 << 4,
    MONO_TRACE_AOT                = 1 << 5,
    MONO_TRACE_SECURITY           = 1 << 6,
    MONO_TRACE_THREADPOOL         = 1 << 7,
    MONO_TRACE_IO_SELECTOR        = 1 << 8,
    MONO_TRACE_IO_LAYER_PROCESS   = 1 << 9,
    MONO_TRACE_IO_LAYER_SOCKET    = 1 << 10,
    MONO_TRACE_IO_LAYER_FILE      = 1 << 11,
    MONO_TRACE_IO_LAYER_EVENT     = 1 << 12,
    MONO_TRACE_IO_LAYER_SEMAPHORE = 1 << 13,
    MONO_TRACE_IO_LAYER_MUTEX     = 1 << 14,
    MONO_TRACE_IO_LAYER_HANDLE    = 1 << 15,
} MonoTraceMask;
 
MONO_API extern GLogLevelFlags mono_internal_current_level;
MONO_API extern MonoTraceMask mono_internal_current_mask;
 
MONO_API void
mono_trace_init (void);
 
void 
mono_trace_cleanup (void);
 
MONO_API void
mono_tracev_inner (GLogLevelFlags level, MonoTraceMask mask, const char *format, va_list args);
 
void 
mono_trace_set_level (GLogLevelFlags level);
 
void 
mono_trace_set_mask (MonoTraceMask mask);
 
void 
mono_trace_push (GLogLevelFlags level, MonoTraceMask mask);
 
void 
mono_trace_pop (void);
 
gboolean
mono_trace_is_traced (GLogLevelFlags level, MonoTraceMask mask);
 
G_GNUC_UNUSED static void
mono_tracev (GLogLevelFlags level, MonoTraceMask mask, const char *format, va_list args)
{
    if(G_UNLIKELY (level <= mono_internal_current_level && (mask & mono_internal_current_mask)))
        mono_tracev_inner (level, mask, format, args);
}
 
/**
 * mono_trace:
 *
 *    @level: Verbose level of the specified message
 *    @mask: Type of the specified message
 *
 * Traces a new message, depending on the current logging level
 * and trace mask.
 */
G_GNUC_UNUSED MONO_ATTR_FORMAT_PRINTF(3,4) static void
mono_trace (GLogLevelFlags level, MonoTraceMask mask, const char *format, ...)
{
    if(G_UNLIKELY (level <= mono_internal_current_level && (mask & mono_internal_current_mask))) {
        va_list args;
        va_start (args, format);
        mono_tracev_inner (level, mask, format, args);
        va_end (args);
    }
}
 
#ifdef G_HAVE_ISO_VARARGS
#define mono_trace_error(...)    mono_trace(G_LOG_LEVEL_ERROR, \
                                            __VA_ARGS__)
#define mono_trace_warning(...) mono_trace(G_LOG_LEVEL_WARNING, \
                                            __VA_ARGS__)
#define mono_trace_message(...) mono_trace(G_LOG_LEVEL_MESSAGE, \
                                            __VA_ARGS__)
#elif defined(G_HAVE_GNUC_VARARGS)
#define mono_trace_error(format...)    mono_trace(G_LOG_LEVEL_ERROR, \
                                            format)
#define mono_trace_warning(format...) mono_trace(G_LOG_LEVEL_WARNING, \
                                            format)
#define mono_trace_message(format...) mono_trace(G_LOG_LEVEL_MESSAGE, \
                                            format)
#else /* no varargs macros */
G_GNUC_UNUSED static void
mono_trace_error(MonoTraceMask mask, const char *format, ...)
{
    va_list args;
    va_start (args, format);
    mono_tracev(G_LOG_LEVEL_ERROR, mask, format, args);
    va_end (args);
}
 
G_GNUC_UNUSED static void
mono_trace_warning(MonoTraceMask mask, const char *format, ...)
{
    va_list args;
    va_start (args, format);
    mono_tracev(G_LOG_LEVEL_WARNING, mask, format, args);
    va_end (args);
}
 
G_GNUC_UNUSED static void
mono_trace_message(MonoTraceMask mask, const char *format, ...)
{
    va_list args;
    va_start (args, format);
    mono_tracev(G_LOG_LEVEL_MESSAGE, mask, format, args);
    va_end (args);
}
 
#endif /* !__GNUC__ */
 
#if defined (HOST_ANDROID) || (defined (TARGET_IOS) && defined (TARGET_IOS))
 
#define mono_gc_printf(gc_log_file, format, ...) g_log ("mono-gc", G_LOG_LEVEL_MESSAGE, format, ##__VA_ARGS__)
#define mono_runtime_printf(format, ...) g_log ("mono-rt", G_LOG_LEVEL_MESSAGE, format "\n", ##__VA_ARGS__)
#define mono_runtime_printf_err(format, ...) g_log ("mono-rt", G_LOG_LEVEL_CRITICAL, format "\n", ##__VA_ARGS__)
#define mono_profiler_printf(format, ...) g_log ("mono-prof", G_LOG_LEVEL_MESSAGE, format "\n", ##__VA_ARGS__)
#define mono_profiler_printf_err(format, ...) g_log ("mono-prof", G_LOG_LEVEL_CRITICAL, format "\n", ##__VA_ARGS__)
#define mono_runtime_stdout_fflush() do { } while (0)
 
#else
 
#define mono_gc_printf(gc_log_file, format, ...) do {    \
    fprintf (gc_log_file, format, ##__VA_ARGS__);    \
    fflush (gc_log_file);    \
} while (0)
 
#define mono_runtime_printf(format, ...) fprintf (stdout, format "\n", ##__VA_ARGS__)
#define mono_runtime_printf_err(format, ...) fprintf (stderr, format "\n", ##__VA_ARGS__)
#define mono_profiler_printf(format, ...) fprintf (stdout, format "\n", ##__VA_ARGS__)
#define mono_profiler_printf_err(format, ...) fprintf (stderr, format "\n", ##__VA_ARGS__)
#define mono_runtime_stdout_fflush() do { fflush (stdout); } while (0)
 
#endif
 
/* Internal logging API */
typedef void (*MonoLoggerOpen) (const char *, void *);
typedef void (*MonoLoggerWrite) (const char *, GLogLevelFlags, mono_bool, const char *);
typedef void (*MonoLoggerClose) (void);
 
typedef struct {
    MonoLoggerOpen     opener;        /* Routine to open logging */
    MonoLoggerWrite    writer;        /* Routine to write log data */
    MonoLoggerClose closer;     /* Routine to close logging */
    char        *dest;        /* Log destination */
    void        *user_data;    /* User data from legacy handler */
    mono_bool       header;        /* Whether we want pid/time/date in log message */
} MonoLogCallParm;
 
void mono_trace_set_log_handler_internal (MonoLogCallParm *callback, void *user_data);
void mono_trace_set_logdest_string (const char *value);
void mono_trace_set_logheader_string (const char *value);
 
void mono_log_open_syslog (const char *, void *);
void mono_log_write_syslog (const char *, GLogLevelFlags, mono_bool, const char *);
void mono_log_close_syslog (void);
 
void mono_log_open_logfile (const char *, void *);
void mono_log_write_logfile (const char *, GLogLevelFlags, mono_bool, const char *);
void mono_log_close_logfile (void);
 
#if HOST_ANDROID
void mono_log_open_logcat (const char *path, void *userData);
void mono_log_write_logcat (const char *log_domain, GLogLevelFlags level, mono_bool hdr, const char *message);
void mono_log_close_logcat (void);
#endif
 
#if defined(HOST_IOS)
void mono_log_open_asl (const char *path, void *userData);
void mono_log_write_asl (const char *log_domain, GLogLevelFlags level, mono_bool hdr, const char *message);
void mono_log_close_asl (void);
 
#endif
 
G_END_DECLS
 
#endif /* __MONO_LOGGER_INTERNAL_H__ */