ekg2
|
00001 #ifndef __ICQ_ICQ_H 00002 #define __ICQ_ICQ_H 00003 00004 #include <ekg/dynstuff.h> 00005 #include <ekg/protocol.h> 00006 #include <ekg/sessions.h> 00007 00008 #define SNAC_HANDLER(x) int x(session_t *s, uint16_t cmd, unsigned char *buf, int len, private_data_t *data) 00009 typedef int (*snac_handler_t) (session_t *, uint16_t cmd, unsigned char *, int, private_data_t * ); 00010 00011 #define SNAC_SUBHANDLER(x) int x(session_t *s, unsigned char *buf, int len, private_data_t *data) 00012 typedef int (*snac_subhandler_t) (session_t *s, unsigned char *, int, private_data_t * ); 00013 00014 typedef struct { 00015 int win_size; // Window size 00016 int clear_lvl; // Clear level 00017 int alert_lvl; // Alert level 00018 int limit_lvl; // Limit level 00019 int discn_lvl; // Disconnect level 00020 int curr_lvl; // Current level 00021 int max_lvl; // Max level 00022 time_t last_time; // Last time 00023 int n_groups; 00024 uint32_t *groups; 00025 } icq_rate_t; 00026 00027 typedef struct icq_snac_reference_list_s { 00028 struct icq_snac_reference_list_s *next; 00029 int ref; 00030 time_t timestamp; 00031 snac_subhandler_t subhandler; 00032 private_data_t *list; 00033 } icq_snac_reference_list_t; 00034 00035 typedef struct { 00036 int fd; 00037 int fd2; 00038 00039 int flap_seq; /* FLAP seq id */ 00040 uint16_t snac_seq; /* SNAC seq id */ 00041 int snacmeta_seq; /* META SNAC seq id */ 00042 int cookie_seq; /* Cookie seq id */ 00043 00044 int ssi; /* server-side-userlist? */ 00045 int migrate; /* client migration sequence */ 00046 int aim; /* aim-ok? */ 00047 int default_group_id; /* XXX ?wo? TEMP! We should support list of groups */ 00048 int status_flags; 00049 int xstatus; /* XXX ?wo? set it! */ 00050 private_data_t *whoami; 00051 char *default_group_name; 00052 string_t cookie; /* connection login cookie */ 00053 string_t stream_buf; 00054 icq_snac_reference_list_t *snac_ref_list; 00055 int n_rates; 00056 icq_rate_t **rates; 00057 } icq_private_t; 00058 00059 int icq_send_pkt(session_t *s, string_t buf); 00060 00061 void icq_session_connected(session_t *s); 00062 int icq_write_status(session_t *s); 00063 void icq_handle_disconnect(session_t *s, const char *reason, int type); 00064 00065 #define icq_uid(target) protocol_uid("icq", target) 00066 00067 #define MIRANDAOK 1 00068 #define MIRANDA_COMPILANT_CLIENT 1 00069 00070 #define ICQ_DEBUG_UNUSED_INFORMATIONS 1 00071 00072 #endif