ekg2
plugins/icq/icq.h
Idź do dokumentacji tego pliku.
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
 All Struktury Danych Pliki Funkcje Zmienne Definicje typów Wyliczenia Wartości wyliczeń Definicje