00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef _XJAB_PRESENCE_H_
00032 #define _XJAB_PRESENCE_H_
00033
00034 #include "../../str.h"
00035 #include "xjab_base.h"
00036
00037 #define XJ_PS_CHECK -1
00038 #define XJ_PS_OFFLINE 0
00039 #define XJ_PS_ONLINE 1
00040 #define XJ_PS_TERMINATED 2
00041 #define XJ_PS_REFUSED 3
00042
00043 #define XJ_PRES_STATUS_NULL 0
00044 #define XJ_PRES_STATUS_SUBS 1
00045 #define XJ_PRES_STATUS_WAIT 2
00046
00047 typedef struct _xj_pres_cell
00048 {
00049 int key;
00050 str userid;
00051 int state;
00052 int status;
00053 pa_callback_f cbf;
00054 void *cbp;
00055 struct _xj_pres_cell *prev;
00056 struct _xj_pres_cell *next;
00057 } t_xj_pres_cell, *xj_pres_cell;
00058
00059 typedef struct _xj_pres_list
00060 {
00061 int nr;
00062 xj_pres_cell clist;
00063 } t_xj_pres_list, *xj_pres_list;
00064
00065 xj_pres_cell xj_pres_cell_new();
00066 void xj_pres_cell_free(xj_pres_cell);
00067 void xj_pres_cell_free_all(xj_pres_cell);
00068 int xj_pres_cell_init(xj_pres_cell, str*, pa_callback_f, void*);
00069 int xj_pres_cell_init(xj_pres_cell, str*, pa_callback_f, void*);
00070 int xj_pres_cell_update(xj_pres_cell, pa_callback_f, void*);
00071
00072 xj_pres_list xj_pres_list_init();
00073 void xj_pres_list_free(xj_pres_list);
00074 xj_pres_cell xj_pres_list_add(xj_pres_list, xj_pres_cell);
00075 int xj_pres_list_del(xj_pres_list, str*);
00076 xj_pres_cell xj_pres_list_check(xj_pres_list, str*);
00077 void xj_pres_list_notifyall(xj_pres_list,int);
00078
00079 #endif
00080