Idź do dokumentacji tego pliku.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __EKG_SESSIONS_H
00022 #define __EKG_SESSIONS_H
00023
00024 #include <time.h>
00025 #include "dynstuff.h"
00026
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030
00031
00032
00033
00034
00039 typedef enum {
00040 EKG_STATUS_NULL = 0x00,
00041
00042
00043 EKG_STATUS_ERROR,
00044 EKG_STATUS_BLOCKED,
00045
00046
00047 EKG_STATUS_UNKNOWN,
00048 EKG_STATUS_NA,
00049
00050
00051 EKG_STATUS_INVISIBLE,
00052 EKG_STATUS_DND,
00053 EKG_STATUS_GONE,
00054 EKG_STATUS_XA,
00055 EKG_STATUS_AWAY,
00056
00057
00058 EKG_STATUS_AVAIL,
00059 EKG_STATUS_FFC,
00060
00061 EKG_STATUS_LAST,
00062
00063
00064 EKG_STATUS_AUTOAWAY = 0x80,
00065 EKG_STATUS_AUTOXA,
00066 EKG_STATUS_AUTOBACK
00067 } status_t;
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104 #define EKG_STATUS_IS_NODELIVERY(x) (x < EKG_STATUS_UNKNOWN)
00105 #define EKG_STATUS_IS_NA(x) (x <= EKG_STATUS_NA)
00106 #define EKG_STATUS_IS_AWAY(x) ((x > EKG_STATUS_NA) && (x < EKG_STATUS_AVAIL))
00107 #define EKG_STATUS_IS_AVAIL(x) (x >= EKG_STATUS_AVAIL)
00108
00109 typedef struct session_param {
00110 struct session_param *next;
00111
00112 char *key;
00113 char *value;
00114 } session_param_t;
00115
00119 typedef struct ekg_session {
00120 struct ekg_session *next;
00121
00122
00123 void *plugin;
00124 char *uid;
00125 char *alias;
00126 void *priv;
00127 struct userlist *userlist;
00129
00130 status_t status;
00131 char *descr;
00132 char *password;
00134 unsigned int connected : 1;
00135 unsigned int connecting : 2;
00136 unsigned int autoaway : 1;
00138 time_t activity;
00139 time_t last_conn;
00141 int global_vars_count;
00142 char **values;
00143 session_param_t *local_vars;
00144
00145
00146 status_t last_status;
00147 char *last_descr;
00149 #ifdef HAVE_FLOCK
00150 int lock_fd;
00151 #endif
00152 } session_t;
00153
00154 #ifndef EKG2_WIN32_NOFUNCTION
00155 extern session_t *sessions;
00156
00157 extern session_t *session_current;
00158
00159 session_t *session_find(const char *uid);
00160 session_t *session_find_ptr(session_t *s);
00161
00162 int session_is_var(session_t *s, const char *key);
00163
00164 const char *session_uid_get(session_t *s);
00165
00166 const char *session_alias_get(session_t *s);
00167 int session_alias_set(session_t *s, const char *alias);
00168
00169 int session_status_get(session_t *s);
00170 #define session_status_get_n(a) session_status_get(session_find(a))
00171 int session_status_set(session_t *s, status_t status);
00172
00173 const char *session_descr_get(session_t *s);
00174 int session_descr_set(session_t *s, const char *descr);
00175
00176 const char *session_password_get(session_t *s);
00177 int session_password_set(session_t *s, const char *password);
00178
00179 void *session_private_get(session_t *s);
00180 int session_private_set(session_t *s, void *priv);
00181
00182 int session_connected_get(session_t *s);
00183 int session_connected_set(session_t *s, int connected);
00184
00185 const char *session_get(session_t *s, const char *key);
00186 int session_int_get(session_t *s, const char *key);
00187 int session_set(session_t *s, const char *key, const char *value);
00188 int session_int_set(session_t *s, const char *key, int value);
00189
00190 const char *session_format(session_t *s);
00191 #define session_format_n(a) session_format(session_find(a))
00192
00193
00194 const char *session_name(session_t *s);
00195
00196
00197 #define session_alias_uid(a) (a->alias) ? a->alias : a->uid
00198 #define session_alias_uid_n(a) session_alias_uid(session_find(a))
00199
00200 int session_check(session_t *s, int need_private, const char *protocol);
00201
00202 int session_unidle(session_t *s);
00203
00204 session_t *session_add(const char *uid);
00205 int session_remove(const char *uid);
00206
00207 int session_read(const char *filename);
00208 int session_write();
00209
00210 void sessions_free();
00211
00212 void session_help(session_t *s, const char *name);
00213 #endif
00214
00215 #ifdef __cplusplus
00216 }
00217 #endif
00218
00219 #endif
00220
00221
00222
00223
00224
00225
00226
00227
00228