Crossfire Server, Trunk  R21024
metaserver2.h
Go to the documentation of this file.
1 
9 #ifndef METASERVER2_H
10 #define METASERVER2_H
11 
12 /*
13  * The current implementation of crossfire is not very thread
14  * friendly/safe - in fact, metaserver2 is the first part to
15  * use an extra thread.
16  * As such, it would be a lot of work to add the necessary
17  * locks in the rest of the code for the metaserver2 to be able
18  * to get the data it needs. So instead, we use this
19  * MS2UpdateInfo structure to get the data from the main thread
20  * to the metaserver thread - basically, the main thread
21  * gets a lock on the mutex, updates the fields in this structure
22  * and releases the lock. The metaserver2 thread will
23  * get a lock when it needs to get this information, copy
24  * it to the post form, then unlock the structure.
25  * In that way, neither side holds the lock very long, which is especially
26  * important because the metaserver2 thread could take quite a while
27  * to do its updates.
28  */
29 
30 extern pthread_mutex_t ms2_info_mutex;
31 
33 typedef struct _MetaServer2_UpdateInfo {
35  int in_bytes;
36  int out_bytes;
37  time_t uptime;
39 
41 
42 #endif /* METASERVER2_H */
struct _MetaServer2_UpdateInfo MetaServer2_UpdateInfo
MetaServer2_UpdateInfo metaserver2_updateinfo
Definition: metaserver.c:135
pthread_mutex_t ms2_info_mutex
Definition: metaserver.c:132