Changeset 100

Show
Ignore:
Timestamp:
21/10/08 11:30:57 (3 months ago)
Author:
smoku
Message:

Updated libgadu to version 1.8.1

Location:
jggtrans/libgadu/include
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • jggtrans/libgadu/include/compat.h

    r99 r100  
    1 /* $Id: compat.h,v 1.3 2004/10/29 18:20:41 wojtekka Exp $ */ 
     1/* $Id: compat.h 506 2008-01-14 22:15:05Z wojtekka $ */ 
    22 
    33/* 
    44 *  (C) Copyright 2001-2002 Wojtek Kaniewski <wojtekka@irc.pl> 
    5  *                          Robert J. WoŒny <speedy@ziew.org> 
     5 *                          Robert J. Woźny <speedy@ziew.org> 
    66 * 
    77 *  This program is free software; you can redistribute it and/or modify 
     
    2020 */ 
    2121 
     22/** 
     23 * \file compat.h 
     24 * 
     25 * \brief Makra zapewniajÄ 
     26ce kompatybilność API na róŌnych systemach 
     27 */ 
     28 
    2229#ifndef __COMPAT_H 
    2330#define __COMPAT_H 
  • jggtrans/libgadu/include/libgadu.h.in

    r99 r100  
    1 /* $Id: libgadu.h,v 1.185 2006/06/30 13:21:50 gophi Exp $ */ 
     1/* $Id: libgadu.h.in 592 2008-04-15 19:02:47Z porridge $ */ 
    22 
    33/* 
    44 *  (C) Copyright 2001-2003 Wojtek Kaniewski <wojtekka@irc.pl> 
    5  *                          Robert J. WoŒny <speedy@ziew.org> 
    6  *                          Arkadiusz Mikiewicz <arekm@pld-linux.org> 
    7  *                          Tomasz Chiliñski <chilek@chilan.com> 
     5 *                          Robert J. Woźny <speedy@ziew.org> 
     6 *                          Arkadiusz Miśkiewicz <arekm@pld-linux.org> 
     7 *                          Tomasz Chiliński <chilek@chilan.com> 
    88 *                          Piotr Wysocki <wysek@linux.bydg.org> 
    99 *                          Dawid Jarosz <dawjar@poczta.onet.pl> 
     
    2222 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, 
    2323 *  USA. 
     24 */ 
     25 
     26/** 
     27 * \file libgadu.h 
     28 * 
     29 * \brief Główny plik nagłówkowy biblioteki 
    2430 */ 
    2531 
     
    3440#endif 
    3541 
    36 #include <libgadu-config.h> 
    3742#include <sys/types.h> 
    3843#include <stdio.h> 
    3944#include <stdarg.h> 
    4045 
    41 #ifdef __GG_LIBGADU_HAVE_OPENSSL 
     46/** \cond ignore */ 
     47 
     48/* Defined if libgadu was compiled for bigendian machine. */ 
     49#undef GG_CONFIG_BIGENDIAN 
     50 
     51/* Defined if this machine has gethostbyname_r(). */ 
     52#undef GG_CONFIG_HAVE_GETHOSTBYNAME_R 
     53 
     54/* Defined if libgadu was compiled and linked with pthread support. */ 
     55#undef GG_CONFIG_HAVE_PTHREAD 
     56 
     57/* Defined if this machine has C99-compiliant vsnprintf(). */ 
     58#undef GG_CONFIG_HAVE_C99_VSNPRINTF 
     59 
     60/* Defined if this machine has va_copy(). */ 
     61#undef GG_CONFIG_HAVE_VA_COPY 
     62 
     63/* Defined if this machine has __va_copy(). */ 
     64#undef GG_CONFIG_HAVE___VA_COPY 
     65 
     66/* Defined if this machine supports long long. */ 
     67#undef GG_CONFIG_HAVE_LONG_LONG 
     68 
     69/* Defined if libgadu was compiled and linked with TLS support. */ 
     70#undef GG_CONFIG_HAVE_OPENSSL 
     71 
     72/* Defined if uintX_t types are defined in <stdint.h>. */ 
     73#undef GG_CONFIG_HAVE_STDINT_H 
     74 
     75/* Defined if uintX_t types are defined in <inttypes.h>. */ 
     76#undef GG_CONFIG_HAVE_INTTYPES_H 
     77 
     78/* Defined if uintX_t types are defined in <sys/inttypes.h>. */ 
     79#undef GG_CONFIG_HAVE_SYS_INTTYPES_H 
     80 
     81/* Defined if uintX_t types are defined in <sys/int_types.h>. */ 
     82#undef GG_CONFIG_HAVE_SYS_INT_TYPES_H 
     83 
     84/* Defined if uintX_t types are defined in <sys/types.h>. */ 
     85#undef GG_CONFIG_HAVE_SYS_TYPES_H 
     86 
     87#ifdef GG_CONFIG_HAVE_OPENSSL 
    4288#include <openssl/ssl.h> 
    4389#endif 
    4490 
    45 /* 
    46  * typedef uin_t 
    47  * 
    48  * typ reprezentuj±cy numer osoby. 
     91#ifdef GG_CONFIG_HAVE_STDINT_H 
     92#include <stdint.h> 
     93#else 
     94#  ifdef GG_CONFIG_HAVE_INTTYPES_H 
     95#  include <inttypes.h> 
     96#  else 
     97#    ifdef GG_CONFIG_HAVE_SYS_INTTYPES_H 
     98#    include <sys/inttypes.h> 
     99#    else 
     100#      ifdef GG_CONFIG_HAVE_SYS_INT_TYPES_H 
     101#      include <sys/int_types.h> 
     102#      else 
     103#        ifdef GG_CONFIG_HAVE_SYS_TYPES_H 
     104#        include <sys/types.h> 
     105#        else 
     106 
     107#ifndef __AC_STDINT_H 
     108#define __AC_STDINT_H 
     109 
     110/* ISO C 9X: 7.18 Integer types <stdint.h> */ 
     111 
     112typedef unsigned char   uint8_t; 
     113typedef unsigned short uint16_t; 
     114typedef unsigned int   uint32_t; 
     115 
     116#ifndef __CYGWIN__ 
     117#define __int8_t_defined 
     118typedef   signed char    int8_t; 
     119typedef   signed short  int16_t; 
     120typedef   signed int    int32_t; 
     121#endif 
     122 
     123#endif /* __AC_STDINT_H */ 
     124 
     125#        endif 
     126#      endif 
     127#    endif 
     128#  endif 
     129#endif 
     130 
     131/** \endcond */ 
     132 
     133/** 
     134 * Numer Gadu-Gadu. 
    49135 */ 
    50136typedef uint32_t uin_t; 
    51137 
    52 /* 
    53  * ogólna struktura opisuj±ca ró¿ne sesje. przydatna w klientach. 
     138/** 
     139 * Identyfikator połĠ
     140czenia bezpośredniego Gadu-Gadu 7.x. 
     141 */ 
     142typedef struct { 
     143        uint8_t id[8]; 
     144} gg_dcc7_id_t; 
     145 
     146/** 
     147 * Makro deklarujÄ 
     148ce pola wspólne dla struktur sesji. 
    54149 */ 
    55150#define gg_common_head(x) \ 
    56         int fd;                 /* podgl±dany deskryptor */ \ 
    57         int check;              /* sprawdzamy zapis czy odczyt */ \ 
    58         int state;              /* aktualny stan maszynki */ \ 
    59         int error;              /* kod b³êdu dla GG_STATE_ERROR */ \ 
    60         int type;               /* rodzaj sesji */ \ 
    61         int id;                 /* identyfikator */ \ 
    62         int timeout;            /* sugerowany timeout w sekundach */ \ 
    63         int (*callback)(x*);    /* callback przy zmianach */ \ 
    64         void (*destroy)(x*);    /* funkcja niszczenia */ 
    65  
     151        int fd;                 /**< Obserwowany deskryptor */ \ 
     152        int check;              /**< Informacja o ŌĠ
     153daniu odczytu/zapisu (patrz \ref gg_check_t) */ \ 
     154        int state;              /**< Aktualny stan połĠ
     155czenia (patrz \ref gg_state_t) */ \ 
     156        int error;              /**< Kod błędu dla \c GG_STATE_ERROR (patrz \ref gg_error_t) */ \ 
     157        int type;               /**< Rodzaj sesji (patrz \ref gg_session_t) */ \ 
     158        int id;                 /**< Identyfikator sesji */ \ 
     159        int timeout;            /**< Czas pozostały do zakończenia stanu */ \ 
     160        int (*callback)(x*);    /**< Funkcja zwrotna */ \ 
     161        void (*destroy)(x*);    /**< Funkcja zwalniania zasobów */ 
     162 
     163/** 
     164 * Struktura wspólna dla wszystkich sesji i połĠ
     165czeń. Pozwala na proste 
     166 * rzutowanie niezaleÅŒne od rodzaju połĠ
     167czenia. 
     168 */ 
    66169struct gg_common { 
    67170        gg_common_head(struct gg_common) 
     
    70173struct gg_image_queue; 
    71174 
    72 /* 
    73  * struct gg_session 
    74  * 
    75  * struktura opisuj±ca dan± sesjê. tworzona przez gg_login(), zwalniana 
    76  * przez gg_free_session(). 
     175struct gg_dcc7; 
     176 
     177/** 
     178 * Sesja Gadu-Gadu. 
     179 * 
     180 * Tworzona przez funkcję \c gg_login(), zwalniana przez \c gg_free_session(). 
     181 * 
     182 * \ingroup login 
    77183 */ 
    78184struct gg_session { 
    79185        gg_common_head(struct gg_session) 
    80186 
    81         int async;              /* czy po³±czenie jest asynchroniczne */ 
    82         int pid;                /* pid procesu resolvera */ 
    83         int port;               /* port, z którym siê ³±czymy */ 
    84         int seq;                /* numer sekwencyjny ostatniej wiadomo¶ci */ 
    85         int last_pong;          /* czas otrzymania ostatniego ping/pong */ 
    86         int last_event;         /* czas otrzymania ostatniego pakietu */ 
    87  
    88         struct gg_event *event; /* zdarzenie po ->callback() */ 
    89  
    90         uint32_t proxy_addr;    /* adres proxy, keszowany */ 
    91         uint16_t proxy_port;    /* port proxy */ 
    92  
    93         uint32_t hub_addr;      /* adres huba po resolvniêciu */ 
    94         uint32_t server_addr;   /* adres serwera, od huba */ 
    95  
    96         uint32_t client_addr;   /* adres klienta */ 
    97         uint16_t client_port;   /* port, na którym klient s³ucha */ 
    98  
    99         uint32_t external_addr; /* adres zewnetrzny klienta */ 
    100         uint16_t external_port; /* port zewnetrzny klienta */ 
     187        int async;              /**< Flaga połĠ
     188czenia asynchronicznego */ 
     189        int pid;                /**< Numer procesu rozwiÄ 
     190zujÄ 
     191cego nazwę serwera */ 
     192        int port;               /**< Port serwera */ 
     193        int seq;                /**< Numer sekwencyjny ostatniej wiadomości */ 
     194        int last_pong;          /**< Czas otrzymania ostatniej ramki utrzymaniowej */ 
     195        int last_event;         /**< Czas otrzymania ostatniego pakietu */ 
     196 
     197        struct gg_event *event; /**< Zdarzenie po wywołaniu \c callback */ 
     198 
     199        uint32_t proxy_addr;    /**< Adres serwera pośredniczÄ 
     200cego */ 
     201        uint16_t proxy_port;    /**< Port serwera pośredniczÄ 
     202cego */ 
     203 
     204        uint32_t hub_addr;      /**< Adres huba po rozwiÄ 
     205zaniu nazwy */ 
     206        uint32_t server_addr;   /**< Adres serwera otrzymany od huba */ 
     207 
     208        uint32_t client_addr;   /**< Adres gniazda dla połĠ
     209czeń bezpośrednich do wersji Gadu-Gadu 6.x */ 
     210        uint16_t client_port;   /**< Port gniazda dla połĠ
     211czeń bezpośrednich do wersji Gadu-Gadu 6.x */ 
     212 
     213        uint32_t external_addr; /**< Publiczny adres dla połĠ
     214czeń bezpośrednich do wersji Gadu-Gadu 6.x */ 
     215        uint16_t external_port; /**< Publiczny port dla połĠ
     216czeń bezpośrednich do wersji Gadu-Gadu 6.x */ 
     217 
     218        uin_t uin;              /**< Własny numer Gadu-Gadu */ 
     219        char *password;         /**< Hasło (zwalniane po uÅŒyciu) */ 
     220 
     221        int initial_status;     /**< PoczÄ 
     222tkowy status */ 
     223        int status;             /**< Aktualny status */ 
     224 
     225        char *recv_buf;         /**< Bufor na odbierany pakiety */ 
     226        int recv_done;          /**< Liczba wczytanych bajtów pakietu */ 
     227        int recv_left;          /**< Liczba pozostałych do wczytania bajtów pakietu */ 
     228 
     229        int protocol_version;   /**< Wersja protokołu */ 
     230        char *client_version;   /**< Wersja klienta */ 
     231        int last_sysmsg;        /**< Numer ostatniej wiadomości systemowej */ 
     232 
     233        char *initial_descr;    /**< PoczÄ 
     234tkowy opis statusu */ 
     235 
     236        void *resolver;         /**< Dane prywatne procesu lub wÄ 
     237tku rozwiÄ 
     238zujÄ 
     239cego nazwę serwera */ 
     240 
     241        char *header_buf;       /**< Bufor na poczÄ 
     242tek nagłówka pakietu */ 
     243        unsigned int header_done;       /**< Liczba wczytanych bajtów nagłówka pakietu */ 
     244 
     245#ifdef GG_CONFIG_HAVE_OPENSSL 
     246        SSL *ssl;               /**< Struktura TLS */ 
     247        SSL_CTX *ssl_ctx;       /**< Kontekst sesji TLS */ 
     248#else 
     249        void *ssl;              /**< Struktura TLS */ 
     250        void *ssl_ctx;          /**< Kontekst sesji TLS */ 
     251#endif 
     252 
     253        int image_size;         /**< Maksymalny rozmiar obsługiwanych obrazków w KiB */ 
     254 
     255        char *userlist_reply;   /**< Bufor z odbieranÄ 
     256 listÄ 
     257 kontaktów */ 
     258 
     259        int userlist_blocks;    /**< Liczba części listy kontaktów */ 
     260 
     261        struct gg_image_queue *images;  /**< Lista wczytywanych obrazków */ 
     262 
     263        int hash_type;          /**< Rodzaj funkcji skrótu hasła */ 
     264 
     265        char *send_buf;         /**< Bufor z danymi do wysłania */ 
     266        int send_left;          /**< Liczba bajtów do wysłania */ 
     267 
     268        struct gg_dcc7 *dcc7_list;      /**< Lista połĠ
     269czeń bezpośrednich skojarzonych z sesjÄ 
     270 */ 
    101271         
    102         uin_t uin;              /* numerek klienta */ 
    103         char *password;         /* i jego has³o. zwalniane automagicznie */ 
    104          
    105         int initial_status;     /* pocz±tkowy stan klienta */ 
    106         int status;             /* aktualny stan klienta */ 
    107  
    108         char *recv_buf;         /* bufor na otrzymywane pakiety */ 
    109         int recv_done;          /* ile ju¿ wczytano do bufora */ 
    110         int recv_left;          /* i ile jeszcze trzeba wczytaæ */ 
    111  
    112         int protocol_version;   /* wersja u¿ywanego protoko³u */ 
    113         char *client_version;   /* wersja u¿ywanego klienta */ 
    114         int last_sysmsg;        /* ostatnia wiadomo¶æ systemowa */ 
    115  
    116         char *initial_descr;    /* pocz±tkowy opis stanu klienta */ 
    117  
    118         void *resolver;         /* wskaŒnik na informacje resolvera */ 
    119  
    120         char *header_buf;       /* bufor na pocz±tek nag³ówka */ 
    121         unsigned int header_done;/* ile ju¿ mamy */ 
    122  
    123 #ifdef __GG_LIBGADU_HAVE_OPENSSL 
    124         SSL *ssl;               /* sesja TLS */ 
    125         SSL_CTX *ssl_ctx;       /* kontekst sesji? */ 
    126 #else 
    127         void *ssl;              /* zachowujemy ABI */ 
    128         void *ssl_ctx; 
    129 #endif 
    130  
    131         int image_size;         /* maksymalny rozmiar obrazków w KiB */ 
    132  
    133         char *userlist_reply;   /* fragment odpowiedzi listy kontaktów */ 
    134  
    135         int userlist_blocks;    /* na ile kawa³ków podzielono listê kontaktów */ 
    136  
    137         struct gg_image_queue *images;  /* aktualnie wczytywane obrazki */ 
    138 }; 
    139  
    140 /* 
    141  * struct gg_http 
    142  *  
    143  * ogólna struktura opisuj±ca stan wszystkich operacji HTTP. tworzona 
    144  * przez gg_http_connect(), zwalniana przez gg_http_free(). 
     272        int soft_timeout;       /**< Flaga mówiÄ 
     273ca, ÅŒe po przekroczeniu \c timeout naleÅŒy wywołać \c gg_watch_fd() */ 
     274}; 
     275 
     276/** 
     277 * PołĠ
     278czenie HTTP. 
     279 * 
     280 * Tworzone przez \c gg_http_connect(), zwalniane przez \c gg_http_free(). 
     281 * 
     282 * \ingroup http 
    145283 */ 
    146284struct gg_http { 
    147285        gg_common_head(struct gg_http) 
    148286 
    149         int async;              /* czy po³±czenie asynchroniczne */ 
    150         int pid;                /* pid procesu resolvera */ 
    151         int port;               /* port, z którym siê ³±czymy */ 
    152  
    153         char *query;            /* bufor zapytania http */ 
    154         char *header;           /* bufor nag³ówka */ 
    155         int header_size;        /* rozmiar wczytanego nag³ówka */ 
    156         char *body;             /* bufor otrzymanych informacji */ 
    157         unsigned int body_size; /* oczekiwana ilo¶æ informacji */ 
    158  
    159         void *data;             /* dane danej operacji http */ 
    160  
    161         char *user_data;        /* dane u¿ytkownika, nie s± zwalniane przez gg_http_free() */ 
    162  
    163         void *resolver;         /* wskaŒnik na informacje resolvera */ 
    164  
    165         unsigned int body_done; /* ile ju¿ tre¶ci odebrano? */ 
    166 }; 
     287        int async;              /**< Flaga połĠ
     288czenia asynchronicznego */ 
     289        int pid;                /**< Identyfikator procesu rozwiÄ 
     290zujÄ 
     291cego nazwę serwera */ 
     292        int port;               /**< Port */ 
     293 
     294        char *query;            /**< Zapytanie HTTP */ 
     295        char *header;           /**< Odebrany nagłówek */ 
     296        int header_size;        /**< Rozmiar wczytanego nagłówka */ 
     297        char *body;             /**< Odebrana strona */ 
     298        unsigned int body_size; /**< Rozmiar strony */ 
     299 
     300        void *data;             /**< Dane prywatne usługi HTTP */ 
     301 
     302        char *user_data;        /**< Dane prywatne uÅŒytkownika (nie sÄ 
     303 zwalniane) */ 
     304 
     305        void *resolver;         /**< Dane prywatne procesu lub wÄ 
     306tku rozwiÄ 
     307zujÄ 
     308cego nazwę */ 
     309 
     310        unsigned int body_done; /**< Liczba odebranych bajtów strony */ 
     311}; 
     312 
     313/** \cond ignore */ 
    167314 
    168315#ifdef __GNUC__ 
     
    172319#endif 
    173320 
    174 #define GG_MAX_PATH 276 
    175  
    176 /* 
    177  * struct gg_file_info 
    178  *  
    179  * odpowiednik windowsowej struktury WIN32_FIND_DATA niezbêdnej przy 
    180  * wysy³aniu plików. 
     321/** \endcond */ 
     322 
     323#define GG_MAX_PATH 276         /**< Maksymalny rozmiar nazwy pliku w strukturze \c gg_file_info */ 
     324 
     325/** 
     326 * Odpowiednik struktury WIN32_FIND_DATA z API WIN32. 
     327 * 
     328 * Wykorzystywana przy połĠ
     329czeniach bezpośrednich do wersji Gadu-Gadu 6.x. 
    181330 */ 
    182331struct gg_file_info { 
    183         uint32_t mode;                  /* dwFileAttributes */ 
    184         uint32_t ctime[2];              /* ftCreationTime */ 
    185         uint32_t atime[2];              /* ftLastAccessTime */ 
    186         uint32_t mtime[2];              /* ftLastWriteTime */ 
    187         uint32_t size_hi;               /* nFileSizeHigh */ 
    188         uint32_t size;                  /* nFileSizeLow */ 
    189         uint32_t reserved0;             /* dwReserved0 */ 
    190         uint32_t reserved1;             /* dwReserved1 */ 
    191         unsigned char filename[GG_MAX_PATH - 14];       /* cFileName */ 
    192         unsigned char short_filename[14];               /* cAlternateFileName */ 
    193 } GG_PACKED; 
    194  
    195 /* 
    196  * struct gg_dcc 
    197  *  
    198  * struktura opisuj±ca nas³uchuj±ce gniazdo po³±czeñ miêdzy klientami. 
    199  * tworzona przez gg_dcc_socket_create(), zwalniana przez gg_dcc_free(). 
     332        uint32_t mode;                  /**< dwFileAttributes */ 
     333        uint32_t ctime[2];              /**< ftCreationTime */ 
     334        uint32_t atime[2];              /**< ftLastAccessTime */ 
     335        uint32_t mtime[2];              /**< ftLastWriteTime */ 
     336        uint32_t size_hi;               /**< nFileSizeHigh */ 
     337        uint32_t size;                  /**< nFileSizeLow */ 
     338        uint32_t reserved0;             /**< dwReserved0 */ 
     339        uint32_t reserved1;             /**< dwReserved1 */ 
     340        unsigned char filename[GG_MAX_PATH - 14];       /**< cFileName */ 
     341        unsigned char short_filename[14];               /**< cAlternateFileName */ 
     342} /** \cond ignore */ GG_PACKED /** \endcond */; 
     343 
     344/** 
     345 * PołĠ
     346czenie bezpośrednie do wersji Gadu-Gadu 6.x. 
     347 * 
     348 * Tworzone przez \c gg_dcc_socket_create(), \c gg_dcc_get_file(), 
     349 * \c gg_dcc_send_file() lub \c gg_dcc_voice_chat(), zwalniane przez 
     350 * \c gg_dcc_free(). 
     351 * 
     352 * \ingroup dcc6 
    200353 */ 
    201354struct gg_dcc { 
    202355        gg_common_head(struct gg_dcc) 
    203356 
    204         struct gg_event *event; /* opis zdarzenia */ 
    205  
    206         int active;             /* czy to my siê ³±czymy? */ 
    207         int port;               /* port, na którym siedzi */ 
    208         uin_t uin;              /* uin klienta */ 
    209         uin_t peer_uin;         /* uin drugiej strony */ 
    210         int file_fd;            /* deskryptor pliku */ 
    211         unsigned int offset;    /* offset w pliku */ 
    212         unsigned int chunk_size;/* rozmiar kawa³ka */ 
    213         unsigned int chunk_offset;/* offset w aktualnym kawa³ku */ 
     357        struct gg_event *event; /**< Zdarzenie po wywołaniu \c callback */ 
     358 
     359        int active;             /**< Flaga połĠ
     360czenia aktywnego (nieuÅŒywana) */ 
     361        int port;               /**< Port gniazda nasłuchujÄ 
     362cego */ 
     363        uin_t uin;              /**< Własny numer Gadu-Gadu */ 
     364        uin_t peer_uin;         /**< Numer Gadu-Gadu drugiej strony połĠ
     365czenia */ 
     366        int file_fd;            /**< deskryptor pliku */ 
     367        unsigned int offset;    /**< PołoÅŒenie w pliku */ 
     368        unsigned int chunk_size; 
     369                                /**< Rozmiar kawałka pliku */ 
     370        unsigned int chunk_offset; 
     371                                /**< PołoÅŒenie w aktualnym kawałku pliku */ 
    214372        struct gg_file_info file_info; 
    215                                 /* informacje o pliku */ 
    216         int established;        /* po³±czenie ustanowione */ 
    217         char *voice_buf;        /* bufor na pakiet po³±czenia g³osowego */ 
    218         int incoming;           /* po³±czenie przychodz±ce */ 
    219         char *chunk_buf;        /* bufor na kawa³ek danych */ 
    220         uint32_t remote_addr;   /* adres drugiej strony */ 
    221         uint16_t remote_port;   /* port drugiej strony */ 
    222 }; 
    223  
    224 /* 
    225  * enum gg_session_t 
    226  * 
    227  * rodzaje sesji. 
     373                                /**< Informacje o pliku */ 
     374        int established;        /**< Flaga ustanowienia połĠ
     375czenia */ 
     376        char *voice_buf;        /**< Bufor na pakiet połĠ
     377czenia głosowego */ 
     378        int incoming;           /**< Flaga połĠ
     379czenia przychodzÄ 
     380cego */ 
     381        char *chunk_buf;        /**< Bufor na fragment danych */ 
     382        uint32_t remote_addr;   /**< Adres drugiej strony */ 
     383        uint16_t remote_port;   /**< Port drugiej strony */ 
     384}; 
     385 
     386#define GG_DCC7_HASH_LEN        20      /**< Maksymalny rozmiar skrótu pliku w połĠ
     387czeniach bezpośrenich */ 
     388#define GG_DCC7_FILENAME_LEN    255     /**< Maksymalny rozmiar nazwy pliku w połĠ
     389czeniach bezpośrednich */ 
     390#define GG_DCC7_INFO_LEN        64      /**< Maksymalny rozmiar informacji o połĠ
     391czeniach bezpośrednich */ 
     392 
     393/** 
     394 * PołĠ
     395czenie bezpośrednie od wersji Gadu-Gadu 7.x. 
     396 * 
     397 * \ingroup dcc7 
     398 */ 
     399struct gg_dcc7 { 
     400        gg_common_head(struct gg_dcc7) 
     401 
     402        gg_dcc7_id_t cid;       /**< Identyfikator połĠ
     403czenia */ 
     404 
     405        struct gg_event *event; /**< Struktura zdarzenia */ 
     406 
     407        uin_t uin;              /**< Własny numer Gadu-Gadu */ 
     408        uin_t peer_uin;         /**< Numer Gadu-Gadu drugiej strony połĠ
     409czenia */ 
     410 
     411        int file_fd;            /**< Deskryptor przesyłanego pliku */ 
     412        unsigned int offset;    /**< Aktualne połoÅŒenie w przesyłanym pliku */ 
     413        unsigned int size;      /**< Rozmiar przesyłanego pliku */ 
     414        unsigned char filename[GG_DCC7_FILENAME_LEN + 1]; 
     415                                /**< Nazwa przesyłanego pliku */ 
     416        unsigned char hash[GG_DCC7_HASH_LEN]; 
     417                                /**< Skrót SHA1 przesyłanego pliku */ 
     418 
     419        int dcc_type;           /**< Rodzaj połĠ
     420czenia bezpośredniego */ 
     421        int established;        /**< Flaga ustanowienia połĠ
     422czenia */ 
     423        int incoming;           /**< Flaga połĠ
     424czenia przychodzÄ 
     425cego */ 
     426        int reverse;            /**< Flaga połĠ
     427czenia zwrotnego */ 
     428 
     429        uint32_t local_addr;    /**< Adres lokalny */ 
     430        uint16_t local_port;    /**< Port lokalny */ 
     431 
     432        uint32_t remote_addr;   /**< Adres drugiej strony */ 
     433        uint16_t remote_port;   /**< Port drugiej strony */ 
     434 
     435        struct gg_session *sess; 
     436                                /**< Sesja do której przypisano połĠ
     437czenie */ 
     438        struct gg_dcc7 *next;   /**< Następne połĠ
     439czenie w liście */ 
     440 
     441        int soft_timeout;       /**< Flaga mówiÄ 
     442ca, ÅŒe po przekroczeniu \c timeout naleÅŒy wywołać \c gg_dcc7_watch_fd() */ 
     443        int seek;               /**< Flaga mówiÄ 
     444ca, ÅŒe moÅŒna zmieniać połoÅŒenie w wysyłanym pliku */ 
     445}; 
     446 
     447/** 
     448 * Rodzaj sesji. 
    228449 */ 
    229450enum gg_session_t { 
    230         GG_SESSION_GG = 1,      /* po³±czenie z serwerem gg */ 
    231         GG_SESSION_HTTP,        /* ogólna sesja http */ 
    232         GG_SESSION_SEARCH,      /* szukanie */ 
    233         GG_SESSION_REGISTER,    /* rejestrowanie */ 
    234         GG_SESSION_REMIND,      /* przypominanie has³a */ 
    235         GG_SESSION_PASSWD,      /* zmiana has³a */ 
    236         GG_SESSION_CHANGE,      /* zmiana informacji o sobie */ 
    237         GG_SESSION_DCC,         /* ogólne po³±czenie DCC */ 
    238         GG_SESSION_DCC_SOCKET,  /* nas³uchuj±cy socket */ 
    239         GG_SESSION_DCC_SEND,    /* wysy³anie pliku */ 
    240         GG_SESSION_DCC_GET,     /* odbieranie pliku */ 
    241         GG_SESSION_DCC_VOICE,   /* rozmowa g³osowa */ 
    242         GG_SESSION_USERLIST_GET,        /* pobieranie userlisty */ 
    243         GG_SESSION_USERLIST_PUT,        /* wysy³anie userlisty */ 
    244         GG_SESSION_UNREGISTER,  /* usuwanie konta */ 
    245         GG_SESSION_USERLIST_REMOVE,     /* usuwanie userlisty */ 
    246         GG_SESSION_TOKEN,       /* pobieranie tokenu */ 
    247          
    248         GG_SESSION_USER0 = 256, /* zdefiniowana dla u¿ytkownika */ 
    249         GG_SESSION_USER1,       /* j.w. */ 
    250         GG_SESSION_USER2,       /* j.w. */ 
    251         GG_SESSION_USER3,       /* j.w. */ 
    252         GG_SESSION_USER4,       /* j.w. */ 
    253         GG_SESSION_USER5,       /* j.w. */ 
    254         GG_SESSION_USER6,       /* j.w. */ 
    255         GG_SESSION_USER7        /* j.w. */ 
    256 }; 
    257  
    258 /* 
    259  * enum gg_state_t 
    260  * 
    261  * opisuje stan asynchronicznej maszyny. 
     451        GG_SESSION_GG = 1,      /**< PołĠ
     452czenie z serwerem Gadu-Gadu */ 
     453        GG_SESSION_HTTP,        /**< PołĠ
     454czenie HTTP */ 
     455        GG_SESSION_SEARCH,      /**< Wyszukiwanie w katalogu publicznym (nieaktualne) */ 
     456        GG_SESSION_REGISTER,    /**< Rejestracja nowego konta */ 
     457        GG_SESSION_REMIND,      /**< Przypominanie hasła */ 
     458        GG_SESSION_PASSWD,      /**< Zmiana hasła */ 
     459        GG_SESSION_CHANGE,      /**< Zmiana informacji w katalogu publicznym (nieaktualne) */ 
     460        GG_SESSION_DCC,         /**< PołĠ
     461czenie bezpośrednie (do wersji 6.x) */ 
     462        GG_SESSION_DCC_SOCKET,  /**< Gniazdo nasłuchujÄ 
     463ce (do wersji 6.x) */ 
     464        GG_SESSION_DCC_SEND,    /**< Wysyłanie pliku (do wersji 6.x) */ 
     465        GG_SESSION_DCC_GET,     /**< Odbieranie pliku (do wersji 6.x) */ 
     466        GG_SESSION_DCC_VOICE,   /**< Rozmowa głosowa (do wersji 6.x) */ 
     467        GG_SESSION_USERLIST_GET,        /**< Import listy kontaktów z serwera (nieaktualne) */ 
     468        GG_SESSION_USERLIST_PUT,        /**< Eksport listy kontaktów do serwera (nieaktualne) */ 
     469        GG_SESSION_UNREGISTER,  /**< Usuwanie konta */ 
     470        GG_SESSION_USERLIST_REMOVE,     /**< Usuwanie listy kontaktów z serwera (nieaktualne) */ 
     471        GG_SESSION_TOKEN,       /**< Pobieranie tokenu */ 
     472        GG_SESSION_DCC7_SOCKET, /**< Gniazdo nasłuchujÄ 
     473ce (od wersji 7.x) */ 
     474        GG_SESSION_DCC7_SEND,   /**< Wysyłanie pliku (od wersji 7.x) */ 
     475        GG_SESSION_DCC7_GET,    /**< Odbieranie pliku (od wersji 7.x) */ 
     476        GG_SESSION_DCC7_VOICE,  /**< Rozmowa głosowa (od wersji 7.x) */ 
     477 
     478        GG_SESSION_USER0 = 256, /**< Rodzaj zadeklarowany dla uÅŒytkownika */ 
     479        GG_SESSION_USER1,       /**< Rodzaj zadeklarowany dla uÅŒytkownika */ 
     480        GG_SESSION_USER2,       /**< Rodzaj zadeklarowany dla uÅŒytkownika */ 
     481        GG_SESSION_USER3,       /**< Rodzaj zadeklarowany dla uÅŒytkownika */ 
     482        GG_SESSION_USER4,       /**< Rodzaj zadeklarowany dla uÅŒytkownika */ 
     483        GG_SESSION_USER5,       /**< Rodzaj zadeklarowany dla uÅŒytkownika */ 
     484        GG_SESSION_USER6,       /**< Rodzaj zadeklarowany dla uÅŒytkownika */ 
     485        GG_SESSION_USER7        /**< Rodzaj zadeklarowany dla uÅŒytkownika */ 
     486}; 
     487 
     488/** 
     489 * Aktualny stan sesji. 
    262490 */ 
    263491enum gg_state_t { 
    264                 /* wspólne */ 
    265         GG_STATE_IDLE = 0,              /* nie powinno wyst±piæ. */ 
    266         GG_STATE_RESOLVING,             /* wywo³a³ gethostbyname() */ 
    267         GG_STATE_CONNECTING,            /* wywo³a³ connect() */ 
    268         GG_STATE_READING_DATA,          /* czeka na dane http */ 
    269         GG_STATE_ERROR,                 /* wyst±pi³ b³±d. kod w x->error */ 
    270  
    271                 /* gg_session */ 
    272         GG_STATE_CONNECTING_HUB,        /* wywo³a³ connect() na huba */ 
    273         GG_STATE_CONNECTING_GG,         /* wywo³a³ connect() na serwer */ 
    274         GG_STATE_READING_KEY,           /* czeka na klucz */ 
    275         GG_STATE_READING_REPLY,         /* czeka na odpowiedŒ */ 
    276         GG_STATE_CONNECTED,             /* po³±czy³ siê */ 
    277  
    278                 /* gg_http */ 
    279         GG_STATE_SENDING_QUERY,         /* wysy³a zapytanie http */ 
    280         GG_STATE_READING