libgadu.h   libgadu.h 
skipping to change at line 74 skipping to change at line 74
/* Defined if this machine has va_copy(). */ /* Defined if this machine has va_copy(). */
#define GG_CONFIG_HAVE_VA_COPY /**/ #define GG_CONFIG_HAVE_VA_COPY /**/
/* Defined if this machine has __va_copy(). */ /* Defined if this machine has __va_copy(). */
#define GG_CONFIG_HAVE___VA_COPY /**/ #define GG_CONFIG_HAVE___VA_COPY /**/
/* Defined if this machine supports long long. */ /* Defined if this machine supports long long. */
#define GG_CONFIG_HAVE_LONG_LONG /**/ #define GG_CONFIG_HAVE_LONG_LONG /**/
/* Defined if libgadu was compiled and linked with TLS support. */ /* Defined if libgadu was compiled and linked with GnuTLS support. */
#define GG_CONFIG_HAVE_OPENSSL /**/ #define GG_CONFIG_HAVE_GNUTLS /**/
/* Defined if libgadu was compiled and linked with OpenSSL support. */
/* #undef GG_CONFIG_HAVE_OPENSSL */
/* Defined if uintX_t types are defined in <stdint.h>. */ /* Defined if uintX_t types are defined in <stdint.h>. */
#define GG_CONFIG_HAVE_STDINT_H /**/ #define GG_CONFIG_HAVE_STDINT_H /**/
/* Defined if uintX_t types are defined in <inttypes.h>. */ /* Defined if uintX_t types are defined in <inttypes.h>. */
/* #undef GG_CONFIG_HAVE_INTTYPES_H */ /* #undef GG_CONFIG_HAVE_INTTYPES_H */
/* Defined if uintX_t types are defined in <sys/inttypes.h>. */ /* Defined if uintX_t types are defined in <sys/inttypes.h>. */
/* #undef GG_CONFIG_HAVE_SYS_INTTYPES_H */ /* #undef GG_CONFIG_HAVE_SYS_INTTYPES_H */
skipping to change at line 151 skipping to change at line 154
typedef uint32_t uin_t; typedef uint32_t uin_t;
/** /**
* Identyfikator połączenia bezpośredniego Gadu-Gadu 7.x. * Identyfikator połączenia bezpośredniego Gadu-Gadu 7.x.
*/ */
typedef struct { typedef struct {
uint8_t id[8]; uint8_t id[8];
} gg_dcc7_id_t; } gg_dcc7_id_t;
/** /**
* Identyfikator sesji multilogowania.
*/
typedef struct {
uint8_t id[8];
} gg_multilogon_id_t;
/**
* Makro deklarujące pola wspólne dla struktur sesji. * Makro deklarujące pola wspólne dla struktur sesji.
*/ */
#define gg_common_head(x) \ #define gg_common_head(x) \
int fd; /**< Obserwowany deskryptor */ \ int fd; /**< Obserwowany deskryptor */ \
int check; /**< Informacja o żądaniu odczytu/zapisu (pa trz \ref gg_check_t) */ \ int check; /**< Informacja o żądaniu odczytu/zapisu (pa trz \ref gg_check_t) */ \
int state; /**< Aktualny stan połączenia (patrz \ref gg _state_t) */ \ int state; /**< Aktualny stan połączenia (patrz \ref gg _state_t) */ \
int error; /**< Kod błędu dla \c GG_STATE_ERROR (patrz \ref gg_error_t) */ \ int error; /**< Kod błędu dla \c GG_STATE_ERROR (patrz \ref gg_error_t) */ \
int type; /**< Rodzaj sesji (patrz \ref gg_session_t) */ \ int type; /**< Rodzaj sesji (patrz \ref gg_session_t) */ \
int id; /**< Identyfikator sesji */ \ int id; /**< Identyfikator sesji */ \
int timeout; /**< Czas pozostały do zakończenia stanu */ \ int timeout; /**< Czas pozostały do zakończenia stanu */ \
skipping to change at line 176 skipping to change at line 186
* rzutowanie niezależne od rodzaju połączenia. * rzutowanie niezależne od rodzaju połączenia.
*/ */
struct gg_common { struct gg_common {
gg_common_head(struct gg_common) gg_common_head(struct gg_common)
}; };
struct gg_image_queue; struct gg_image_queue;
struct gg_dcc7; struct gg_dcc7;
struct gg_dcc7_relay;
/** /**
* Sposób rozwiązywania nazw serwerów. * Sposób rozwiązywania nazw serwerów.
*/ */
typedef enum { typedef enum {
GG_RESOLVER_DEFAULT = 0, /**< Domyślny sposób rozwiązywania n azw (jeden z poniższych) */ GG_RESOLVER_DEFAULT = 0, /**< Domyślny sposób rozwiązywania n azw (jeden z poniższych) */
GG_RESOLVER_FORK, /**< Rozwiązywanie nazw bazujące na procesach */ GG_RESOLVER_FORK, /**< Rozwiązywanie nazw bazujące na procesach */
GG_RESOLVER_PTHREAD, /**< Rozwiązywanie nazw bazujące na wątkach */ GG_RESOLVER_PTHREAD, /**< Rozwiązywanie nazw bazujące na wątkach */
GG_RESOLVER_CUSTOM, /**< Funkcje rozwiązywania nazw dost arczone przed aplikację */ GG_RESOLVER_CUSTOM, /**< Funkcje rozwiązywania nazw dost arczone przed aplikację */
GG_RESOLVER_INVALID = -1 /**< Nieprawidłowy sposób rozwiązywa nia nazw (wynik \c gg_session_get_resolver) */ GG_RESOLVER_INVALID = -1 /**< Nieprawidłowy sposób rozwiązywa nia nazw (wynik \c gg_session_get_resolver) */
} gg_resolver_t; } gg_resolver_t;
skipping to change at line 283 skipping to change at line 295
int protocol_flags; /**< Flagi protokołu */ int protocol_flags; /**< Flagi protokołu */
gg_encoding_t encoding; /**< Rodzaj kodowania znaków */ gg_encoding_t encoding; /**< Rodzaj kodowania znaków */
gg_resolver_t resolver_type; /**< Sposób rozwiązywania nazw serwe rów */ gg_resolver_t resolver_type; /**< Sposób rozwiązywania nazw serwe rów */
int (*resolver_start)(int *fd, void **private_data, const char *host name); /**< Funkcja rozpoczynająca rozwiązywanie nazwy */ int (*resolver_start)(int *fd, void **private_data, const char *host name); /**< Funkcja rozpoczynająca rozwiązywanie nazwy */
void (*resolver_cleanup)(void **private_data, int force); /**< Funkcja zwalniająca zasoby po rozwiązaniu nazwy */ void (*resolver_cleanup)(void **private_data, int force); /**< Funkcja zwalniająca zasoby po rozwiązaniu nazwy */
int protocol_features; /**< Opcje protokołu */ int protocol_features; /**< Opcje protokołu */
int status_flags; /**< Flagi statusu */ int status_flags; /**< Flagi statusu */
int recv_msg_count; /**< Liczba odebranych wiadomości */
}; };
/** /**
* Połączenie HTTP. * Połączenie HTTP.
* *
* Tworzone przez \c gg_http_connect(), zwalniane przez \c gg_http_free(). * Tworzone przez \c gg_http_connect(), zwalniane przez \c gg_http_free().
* *
* \ingroup http * \ingroup http
*/ */
struct gg_http { struct gg_http {
skipping to change at line 390 skipping to change at line 403
int established; /**< Flaga ustanowienia połączenia */ int established; /**< Flaga ustanowienia połączenia */
char *voice_buf; /**< Bufor na pakiet połączenia głosowego */ char *voice_buf; /**< Bufor na pakiet połączenia głosowego */
int incoming; /**< Flaga połączenia przychodzącego */ int incoming; /**< Flaga połączenia przychodzącego */
char *chunk_buf; /**< Bufor na fragment danych */ char *chunk_buf; /**< Bufor na fragment danych */
uint32_t remote_addr; /**< Adres drugiej strony */ uint32_t remote_addr; /**< Adres drugiej strony */
uint16_t remote_port; /**< Port drugiej strony */ uint16_t remote_port; /**< Port drugiej strony */
}; };
#define GG_DCC7_HASH_LEN 20 /**< Maksymalny rozmiar skrótu pliku w połączeniach bezpośrenich */ #define GG_DCC7_HASH_LEN 20 /**< Maksymalny rozmiar skrótu pliku w połączeniach bezpośrenich */
#define GG_DCC7_FILENAME_LEN 255 /**< Maksymalny rozmiar nazwy pliku w połączeniach bezpośrednich */ #define GG_DCC7_FILENAME_LEN 255 /**< Maksymalny rozmiar nazwy pliku w połączeniach bezpośrednich */
#define GG_DCC7_INFO_LEN 64 /**< Maksymalny rozmiar informacji o #define GG_DCC7_INFO_LEN 32 /**< Maksymalny rozmiar informacji o
połączeniach bezpośrednich */ połączeniach bezpośrednich */
#define GG_DCC7_INFO_HASH_LEN 32 /**< Maksymalny rozmiar skrótu ip in
formacji o połączeniach bezpośrednich */
/** /**
* Połączenie bezpośrednie od wersji Gadu-Gadu 7.x. * Połączenie bezpośrednie od wersji Gadu-Gadu 7.x.
* *
* \ingroup dcc7 * \ingroup dcc7
*/ */
struct gg_dcc7 { struct gg_dcc7 {
gg_common_head(struct gg_dcc7) gg_common_head(struct gg_dcc7)
gg_dcc7_id_t cid; /**< Identyfikator połączenia */ gg_dcc7_id_t cid; /**< Identyfikator połączenia */
skipping to change at line 432 skipping to change at line 446
uint32_t remote_addr; /**< Adres drugiej strony */ uint32_t remote_addr; /**< Adres drugiej strony */
uint16_t remote_port; /**< Port drugiej strony */ uint16_t remote_port; /**< Port drugiej strony */
struct gg_session *sess; struct gg_session *sess;
/**< Sesja do której przypisano połączenie * / /**< Sesja do której przypisano połączenie * /
struct gg_dcc7 *next; /**< Następne połączenie w liście */ struct gg_dcc7 *next; /**< Następne połączenie w liście */
int soft_timeout; /**< Flaga mówiąca, że po przekroczeniu \c t imeout należy wywołać \c gg_dcc7_watch_fd() */ int soft_timeout; /**< Flaga mówiąca, że po przekroczeniu \c t imeout należy wywołać \c gg_dcc7_watch_fd() */
int seek; /**< Flaga mówiąca, że można zmieniać położe nie w wysyłanym pliku */ int seek; /**< Flaga mówiąca, że można zmieniać położe nie w wysyłanym pliku */
void *resolver; /**< Dane prywatne procesu lub wątku rozwiąz
ującego nazwę serwera */
int relay; /**< Flaga mówiąca, że laczymy sie przez ser
wer */
int relay_index; /**< Numer serwera pośredniczącego, do które
go się łączymy */
int relay_count; /**< Rozmiar listy serwerów pośredniczących
*/
struct gg_dcc7_relay *relay_list; /**< Lista serwerów pośredni
czących */
}; };
/** /**
* Rodzaj sesji. * Rodzaj sesji.
*/ */
enum gg_session_t { enum gg_session_t {
GG_SESSION_GG = 1, /**< Połączenie z serwerem Gadu-Gadu */ GG_SESSION_GG = 1, /**< Połączenie z serwerem Gadu-Gadu */
GG_SESSION_HTTP, /**< Połączenie HTTP */ GG_SESSION_HTTP, /**< Połączenie HTTP */
GG_SESSION_SEARCH, /**< Wyszukiwanie w katalogu publicznym (nie aktualne) */ GG_SESSION_SEARCH, /**< Wyszukiwanie w katalogu publicznym (nie aktualne) */
GG_SESSION_REGISTER, /**< Rejestracja nowego konta */ GG_SESSION_REGISTER, /**< Rejestracja nowego konta */
skipping to change at line 527 skipping to change at line 548
GG_STATE_READING_TYPE, /* czeka na typ połączenia */ GG_STATE_READING_TYPE, /* czeka na typ połączenia */
/* nowe. bez sensu jest to API. */ /* nowe. bez sensu jest to API. */
GG_STATE_TLS_NEGOTIATION, /**< Negocjacja połączenia szyfrowan ego */ GG_STATE_TLS_NEGOTIATION, /**< Negocjacja połączenia szyfrowan ego */
GG_STATE_REQUESTING_ID, /**< Oczekiwanie na nadanie identyfi katora połączenia bezpośredniego */ GG_STATE_REQUESTING_ID, /**< Oczekiwanie na nadanie identyfi katora połączenia bezpośredniego */
GG_STATE_WAITING_FOR_ACCEPT, /**< Oczekiwanie na potwierdzenie lu b odrzucenie połączenia bezpośredniego */ GG_STATE_WAITING_FOR_ACCEPT, /**< Oczekiwanie na potwierdzenie lu b odrzucenie połączenia bezpośredniego */
GG_STATE_WAITING_FOR_INFO, /**< Oczekiwanie na informacje o poł ączeniu bezpośrednim */ GG_STATE_WAITING_FOR_INFO, /**< Oczekiwanie na informacje o poł ączeniu bezpośrednim */
GG_STATE_READING_ID, /**< Odebranie identyfikatora połącz enia bezpośredniego */ GG_STATE_READING_ID, /**< Odebranie identyfikatora połącz enia bezpośredniego */
GG_STATE_SENDING_ID /**< Wysłano identyfikatora połączen GG_STATE_SENDING_ID, /**< Wysłano identyfikator połączeni
ia bezpośredniego */ a bezpośredniego */
GG_STATE_RESOLVING_GG, /**< Oczekiwanie na rozwiązanie nazw
y serwera Gadu-Gadu */
GG_STATE_RESOLVING_RELAY, /**< Oczekiwanie na rozwiązanie nazw
y serwera pośredniczącego */
GG_STATE_CONNECTING_RELAY, /**< Oczekiwanie na połączenie z ser
werem pośredniczącym */
GG_STATE_READING_RELAY, /**< Odbieranie danych */
GG_STATE_DISCONNECTING, /**< Oczekiwanie na potwierdzenie ro
złączenia */
}; };
/** /**
* Informacja o tym, czy biblioteka chce zapisywać i/lub czytać * Informacja o tym, czy biblioteka chce zapisywać i/lub czytać
* z deskryptora. Maska bitowa. * z deskryptora. Maska bitowa.
* *
* \ingroup events * \ingroup events
*/ */
enum gg_check_t { enum gg_check_t {
GG_CHECK_NONE = 0, /**< Nie sprawdzaj niczego */ GG_CHECK_NONE = 0, /**< Nie sprawdzaj niczego */
skipping to change at line 605 skipping to change at line 633
int gg_change_status_flags(struct gg_session *sess, int flags); int gg_change_status_flags(struct gg_session *sess, int flags);
int gg_send_message(struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message); int gg_send_message(struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message);
int gg_send_message_richtext(struct gg_session *sess, int msgclass, uin_t r ecipient, const unsigned char *message, const unsigned char *format, int fo rmatlen); int gg_send_message_richtext(struct gg_session *sess, int msgclass, uin_t r ecipient, const unsigned char *message, const unsigned char *format, int fo rmatlen);
int gg_send_message_confer(struct gg_session *sess, int msgclass, int recip ients_count, uin_t *recipients, const unsigned char *message); int gg_send_message_confer(struct gg_session *sess, int msgclass, int recip ients_count, uin_t *recipients, const unsigned char *message);
int gg_send_message_confer_richtext(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message, cons t unsigned char *format, int formatlen); int gg_send_message_confer_richtext(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message, cons t unsigned char *format, int formatlen);
int gg_send_message_ctcp(struct gg_session *sess, int msgclass, uin_t recip ient, const unsigned char *message, int message_len); int gg_send_message_ctcp(struct gg_session *sess, int msgclass, uin_t recip ient, const unsigned char *message, int message_len);
int gg_ping(struct gg_session *sess); int gg_ping(struct gg_session *sess);
int gg_userlist_request(struct gg_session *sess, char type, const char *req uest); int gg_userlist_request(struct gg_session *sess, char type, const char *req uest);
int gg_image_request(struct gg_session *sess, uin_t recipient, int size, ui nt32_t crc32); int gg_image_request(struct gg_session *sess, uin_t recipient, int size, ui nt32_t crc32);
int gg_image_reply(struct gg_session *sess, uin_t recipient, const char *fi lename, const char *image, int size); int gg_image_reply(struct gg_session *sess, uin_t recipient, const char *fi lename, const char *image, int size);
int gg_typing_notification(struct gg_session *sess, uin_t recipient, int le ngth);
uint32_t gg_crc32(uint32_t crc, const unsigned char *buf, int len); uint32_t gg_crc32(uint32_t crc, const unsigned char *buf, int len);
int gg_session_set_resolver(struct gg_session *gs, gg_resolver_t type); int gg_session_set_resolver(struct gg_session *gs, gg_resolver_t type);
gg_resolver_t gg_session_get_resolver(struct gg_session *gs); gg_resolver_t gg_session_get_resolver(struct gg_session *gs);
int gg_session_set_custom_resolver(struct gg_session *gs, int (*resolver_st art)(int*, void**, const char*), void (*resolver_cleanup)(void**, int)); int gg_session_set_custom_resolver(struct gg_session *gs, int (*resolver_st art)(int*, void**, const char*), void (*resolver_cleanup)(void**, int));
int gg_http_set_resolver(struct gg_http *gh, gg_resolver_t type); int gg_http_set_resolver(struct gg_http *gh, gg_resolver_t type);
gg_resolver_t gg_http_get_resolver(struct gg_http *gh); gg_resolver_t gg_http_get_resolver(struct gg_http *gh);
int gg_http_set_custom_resolver(struct gg_http *gh, int (*resolver_start)(i nt*, void**, const char*), void (*resolver_cleanup)(void**, int)); int gg_http_set_custom_resolver(struct gg_http *gh, int (*resolver_start)(i nt*, void**, const char*), void (*resolver_cleanup)(void**, int));
int gg_global_set_resolver(gg_resolver_t type); int gg_global_set_resolver(gg_resolver_t type);
gg_resolver_t gg_global_get_resolver(void); gg_resolver_t gg_global_get_resolver(void);
int gg_global_set_custom_resolver(int (*resolver_start)(int*, void**, const char*), void (*resolver_cleanup)(void**, int)); int gg_global_set_custom_resolver(int (*resolver_start)(int*, void**, const char*), void (*resolver_cleanup)(void**, int));
int gg_multilogon_disconnect(struct gg_session *gs, gg_multilogon_id_t conn
_id);
/** /**
* Rodzaj zdarzenia. * Rodzaj zdarzenia.
* *
* \ingroup events * \ingroup events
*/ */
enum gg_event_t { enum gg_event_t {
GG_EVENT_NONE = 0, /**< Nie wydarzyło się nic wartego u wagi */ GG_EVENT_NONE = 0, /**< Nie wydarzyło się nic wartego u wagi */
GG_EVENT_MSG, /**< \brief Otrzymano wiadomość. Prz ekazuje również wiadomości systemowe od numeru 0. */ GG_EVENT_MSG, /**< \brief Otrzymano wiadomość. Prz ekazuje również wiadomości systemowe od numeru 0. */
GG_EVENT_NOTIFY, /**< \brief Informacja o statusach o sób z listy kontaktów (przed 6.0). Zdarzenie należy obsługiwać, jeśli planu je się używać protokołu w wersji starszej niż domyślna. Ostatni element tab licy zawiera uin równy 0, a pozostałe pola są niezainicjowane. */ GG_EVENT_NOTIFY, /**< \brief Informacja o statusach o sób z listy kontaktów (przed 6.0). Zdarzenie należy obsługiwać, jeśli planu je się używać protokołu w wersji starszej niż domyślna. Ostatni element tab licy zawiera uin równy 0, a pozostałe pola są niezainicjowane. */
GG_EVENT_NOTIFY_DESCR, /**< \brief Informacja o statusie op isowym osoby z listy kontaktów (przed 6.0). Zdarzenie należy obsługiwać, je śli planuje się używać protokołu w wersji starszej niż domyślna. */ GG_EVENT_NOTIFY_DESCR, /**< \brief Informacja o statusie op isowym osoby z listy kontaktów (przed 6.0). Zdarzenie należy obsługiwać, je śli planuje się używać protokołu w wersji starszej niż domyślna. */
skipping to change at line 652 skipping to change at line 683
GG_EVENT_DCC_NEED_FILE_INFO, /**< Należy wypełnić \c file_info dl a połączenia bezpośredniego (6.x) */ GG_EVENT_DCC_NEED_FILE_INFO, /**< Należy wypełnić \c file_info dl a połączenia bezpośredniego (6.x) */
GG_EVENT_DCC_NEED_FILE_ACK, /**< Czeka na potwierdzenie pliku w połączeniu bezpośrednim (6.x) */ GG_EVENT_DCC_NEED_FILE_ACK, /**< Czeka na potwierdzenie pliku w połączeniu bezpośrednim (6.x) */
GG_EVENT_DCC_NEED_VOICE_ACK, /**< Czeka na potwierdzenie rozmowy w połączeniu bezpośrednim (6.x) */ GG_EVENT_DCC_NEED_VOICE_ACK, /**< Czeka na potwierdzenie rozmowy w połączeniu bezpośrednim (6.x) */
GG_EVENT_DCC_VOICE_DATA, /**< Dane bezpośredniego połączenia głosowego (6.x) */ GG_EVENT_DCC_VOICE_DATA, /**< Dane bezpośredniego połączenia głosowego (6.x) */
GG_EVENT_PUBDIR50_SEARCH_REPLY, /**< Odpowiedź katalogu publicznego */ GG_EVENT_PUBDIR50_SEARCH_REPLY, /**< Odpowiedź katalogu publicznego */
GG_EVENT_PUBDIR50_READ, /**< Odczytano własne dane z katalog u publicznego */ GG_EVENT_PUBDIR50_READ, /**< Odczytano własne dane z katalog u publicznego */
GG_EVENT_PUBDIR50_WRITE, /**< Zmieniono własne dane w katalog u publicznym */ GG_EVENT_PUBDIR50_WRITE, /**< Zmieniono własne dane w katalog u publicznym */
GG_EVENT_STATUS60, /**< Zmiana statusu osoby z listy ko ntaktów */ GG_EVENT_STATUS60, /**< Zmiana statusu osoby z listy ko ntaktów */
GG_EVENT_NOTIFY60, /**< Informacja o statusach osób z l isty kontaktów. Ostatni element tablicy zawiera uin równy 0, a pozostałe po la są niezainicjowane. */ GG_EVENT_NOTIFY60, /**< Informacja o statusach osób z l isty kontaktów. Ostatni element tablicy zawiera uin równy 0, a pozostałe po la są niezainicjowane. */
GG_EVENT_USERLIST, /**< Wynik importu lub eksportu list y kontaktów */ GG_EVENT_USERLIST, /**< Wynik importu lub eksportu list y kontaktów */
GG_EVENT_IMAGE_REQUEST, /**< Żądanie przesłania obrazka z wi adomości */ GG_EVENT_IMAGE_REQUEST, /**< Żądanie przesłania obrazka z wi adomości */
GG_EVENT_IMAGE_REPLY, /**< Przysłano obrazek z wiadomości */ GG_EVENT_IMAGE_REPLY, /**< Przysłano obrazek z wiadomości */
GG_EVENT_DCC_ACK, /**< Potwierdzenie transmisji w połą czeniu bezpośrednim (6.x) */ GG_EVENT_DCC_ACK, /**< Potwierdzenie transmisji w połą czeniu bezpośrednim (6.x) */
GG_EVENT_DCC7_NEW, /**< Nowe połączenie bezpośrednie (7 .x) */ GG_EVENT_DCC7_NEW, /**< Nowe połączenie bezpośrednie (7 .x) */
GG_EVENT_DCC7_ACCEPT, /**< Zaakceptowano połączenie bezpoś rednie (7.x), nowy deskryptor */ GG_EVENT_DCC7_ACCEPT, /**< Zaakceptowano połączenie bezpoś rednie (7.x), nowy deskryptor */
GG_EVENT_DCC7_REJECT, /**< Odrzucono połączenie bezpośredn ie (7.x) */ GG_EVENT_DCC7_REJECT, /**< Odrzucono połączenie bezpośredn ie (7.x) */
GG_EVENT_DCC7_CONNECTED, /**< Zestawiono połączenie bezpośred nie (7.x), nowy deskryptor */ GG_EVENT_DCC7_CONNECTED, /**< Zestawiono połączenie bezpośred nie (7.x), nowy deskryptor */
GG_EVENT_DCC7_ERROR, /**< Błąd połączenia bezpośredniego (7.x) */ GG_EVENT_DCC7_ERROR, /**< Błąd połączenia bezpośredniego (7.x) */
GG_EVENT_DCC7_DONE, /**< Zakończono połączenie bezpośred nie (7.x) */ GG_EVENT_DCC7_DONE, /**< Zakończono połączenie bezpośred nie (7.x) */
GG_EVENT_DCC7_PENDING, /**< Trwa próba połączenia bezpośred niego (7.x), nowy deskryptor */ GG_EVENT_DCC7_PENDING, /**< Trwa próba połączenia bezpośred niego (7.x), nowy deskryptor */
GG_EVENT_XML_EVENT, /**< Otrzymano komunikat systemowy ( 7.7) */ GG_EVENT_XML_EVENT, /**< Otrzymano komunikat systemowy ( 7.7) */
GG_EVENT_DISCONNECT_ACK, /**< \brief Potwierdzenie zakończeni a sesji. Informuje o tym, że zmiana stanu na niedostępny z opisem dotarła d o serwera i można zakończyć połączenie TCP. */ GG_EVENT_DISCONNECT_ACK, /**< \brief Potwierdzenie zakończeni a sesji. Informuje o tym, że zmiana stanu na niedostępny z opisem dotarła d o serwera i można zakończyć połączenie TCP. */
GG_EVENT_TYPING_NOTIFICATION, /**< Powiadomienie o pisaniu */
GG_EVENT_USER_DATA, /**< Informacja o kontaktach */
GG_EVENT_MULTILOGON_MSG, /**< Wiadomość wysłana z innej sesji
multilogowania */
GG_EVENT_MULTILOGON_INFO, /**< Informacja o innych sesjach mul
tilogowania */
}; };
#define GG_EVENT_SEARCH50_REPLY GG_EVENT_PUBDIR50_SEARCH_REPLY #define GG_EVENT_SEARCH50_REPLY GG_EVENT_PUBDIR50_SEARCH_REPLY
/** /**
* Powód nieudanego połączenia. * Powód nieudanego połączenia.
*/ */
enum gg_failure_t { enum gg_failure_t {
GG_FAILURE_RESOLVING = 1, /**< Nie znaleziono serwera */ GG_FAILURE_RESOLVING = 1, /**< Nie znaleziono serwera */
GG_FAILURE_CONNECTING, /**< Błąd połączenia */ GG_FAILURE_CONNECTING, /**< Błąd połączenia */
skipping to change at line 712 skipping to change at line 747
GG_ERROR_DCC_HANDSHAKE, /**< Błąd negocjacji */ GG_ERROR_DCC_HANDSHAKE, /**< Błąd negocjacji */
GG_ERROR_DCC_FILE, /**< Błąd odczytu/zapisu pliku */ GG_ERROR_DCC_FILE, /**< Błąd odczytu/zapisu pliku */
GG_ERROR_DCC_EOF, /**< Przedwczesny koniec pliku */ GG_ERROR_DCC_EOF, /**< Przedwczesny koniec pliku */
GG_ERROR_DCC_NET, /**< Błąd wysyłania/odbierania */ GG_ERROR_DCC_NET, /**< Błąd wysyłania/odbierania */
GG_ERROR_DCC_REFUSED, /**< Połączenie odrzucone */ GG_ERROR_DCC_REFUSED, /**< Połączenie odrzucone */
GG_ERROR_DCC7_HANDSHAKE, /**< Błąd negocjacji */ GG_ERROR_DCC7_HANDSHAKE, /**< Błąd negocjacji */
GG_ERROR_DCC7_FILE, /**< Błąd odczytu/zapisu pliku */ GG_ERROR_DCC7_FILE, /**< Błąd odczytu/zapisu pliku */
GG_ERROR_DCC7_EOF, /**< Przedwczesny koniec pliku */ GG_ERROR_DCC7_EOF, /**< Przedwczesny koniec pliku */
GG_ERROR_DCC7_NET, /**< Błąd wysyłania/odbierania */ GG_ERROR_DCC7_NET, /**< Błąd wysyłania/odbierania */
GG_ERROR_DCC7_REFUSED /**< Połączenie odrzucone */ GG_ERROR_DCC7_REFUSED, /**< Połączenie odrzucone */
GG_ERROR_DCC7_RELAY, /**< Problem z serwerem pośrednicząc
ym */
}; };
/** /**
* Pole zapytania lub odpowiedzi katalogu publicznego. * Pole zapytania lub odpowiedzi katalogu publicznego.
*/ */
struct gg_pubdir50_entry { struct gg_pubdir50_entry {
int num; /**< Numer wyniku */ int num; /**< Numer wyniku */
char *field; /**< Nazwa pola */ char *field; /**< Nazwa pola */
char *value; /**< Wartość pola */ char *value; /**< Wartość pola */
} /* GG_DEPRECATED */; } /* GG_DEPRECATED */;
skipping to change at line 747 skipping to change at line 783
/** /**
* Zapytanie lub odpowiedź katalogu publicznego. * Zapytanie lub odpowiedź katalogu publicznego.
* *
* Do pól nie należy się odwoływać bezpośrednio -- wszystkie niezbędne * Do pól nie należy się odwoływać bezpośrednio -- wszystkie niezbędne
* informacje są dostępne za pomocą funkcji \c gg_pubdir50_* * informacje są dostępne za pomocą funkcji \c gg_pubdir50_*
*/ */
typedef struct gg_pubdir50_s *gg_pubdir50_t; typedef struct gg_pubdir50_s *gg_pubdir50_t;
/** /**
* Opis zdarzenia \c GG_EVENT_MSG. * Opis zdarzeń \c GG_EVENT_MSG i \c GG_EVENT_MULTILOGON_MSG.
*/ */
struct gg_event_msg { struct gg_event_msg {
uin_t sender; /**< Numer nadawcy */ uin_t sender; /**< Numer nadawcy/odbiorcy */
int msgclass; /**< Klasa wiadomości */ int msgclass; /**< Klasa wiadomości */
time_t time; /**< Czas nadania */ time_t time; /**< Czas nadania */
unsigned char *message; /**< Treść wiadomości */ unsigned char *message; /**< Treść wiadomości */
int recipients_count; /**< Liczba odbiorców konferencji */ int recipients_count; /**< Liczba odbiorców konferencji */
uin_t *recipients; /**< Odbiorcy konferencji */ uin_t *recipients; /**< Odbiorcy konferencji */
int formats_length; /**< Długość informacji o formatowaniu tekst u */ int formats_length; /**< Długość informacji o formatowaniu tekst u */
void *formats; /**< Informacje o formatowaniu tekstu */ void *formats; /**< Informacje o formatowaniu tekstu */
uint32_t seq; /**< Numer sekwencyjny wiadomości */ uint32_t seq; /**< Numer sekwencyjny wiadomości */
skipping to change at line 902 skipping to change at line 938
}; };
/** /**
* Opis zdarzenia \c GG_EVENT_DCC7_DONE. * Opis zdarzenia \c GG_EVENT_DCC7_DONE.
*/ */
struct gg_event_dcc7_done { struct gg_event_dcc7_done {
struct gg_dcc7 *dcc7; /**< Struktura połączenia */ struct gg_dcc7 *dcc7; /**< Struktura połączenia */
}; };
/** /**
* Opis zdarzenia \c GG_EVENT_TYPING_NOTIFICATION.
*/
struct gg_event_typing_notification {
uin_t uin; /**< Numer rozmówcy */
int length; /**< Długość tekstu */
};
/**
* Atrybut użytkownika.
*/
struct gg_event_user_data_attr {
int type; /**< Typ atrybutu */
char *key; /**< Klucz */
char *value; /**< Wartość */
};
/**
* Struktura opisująca kontakt w zdarzeniu GG_EVENT_USER_DATA.
*/
struct gg_event_user_data_user {
uin_t uin; /**< Numer kontaktu */
size_t attr_count; /**< Liczba atrybutów */
struct gg_event_user_data_attr *attrs; /**< Lista atrybutów */
};
/**
* Opis zdarzenia \c GG_EVENT_USER_DATA.
*/
struct gg_event_user_data {
int type; /**< Rodzaj informacji o kontaktach */
size_t user_count; /**< Liczba kontaktów */
struct gg_event_user_data_user *users; /**< Lista kontaktów */
};
/**
* Struktura opisująca sesję multilogowania.
*/
struct gg_multilogon_session {
gg_multilogon_id_t id; /**< Identyfikator sesji */
char *name; /**< Nazwa sesji (podana w \c gg_log
in_params.client_version) */
uint32_t remote_addr; /**< Adres sesji */
int status_flags; /**< Flagi statusu sesji */
int protocol_features; /**< Opcje protokolu sesji */
time_t logon_time; /**< Czas zalogowania */
};
/**
* Opis zdarzenia \c GG_EVENT_MULTILOGON_INFO.
*/
struct gg_event_multilogon_info {
int count; /**< Liczba sesji */
struct gg_multilogon_session *sessions; /** Lista sesji */
};
/**
* Unia wszystkich zdarzeń zwracanych przez funkcje \c gg_watch_fd(), * Unia wszystkich zdarzeń zwracanych przez funkcje \c gg_watch_fd(),
* \c gg_dcc_watch_fd() i \c gg_dcc7_watch_fd(). * \c gg_dcc_watch_fd() i \c gg_dcc7_watch_fd().
* *
* \ingroup events * \ingroup events
*/ */
union gg_event_union { union gg_event_union {
enum gg_failure_t failure; /**< Błąd połączenia (\c GG_EVENT_CO NN_FAILED) */ enum gg_failure_t failure; /**< Błąd połączenia (\c GG_EVENT_CO NN_FAILED) */
struct gg_notify_reply *notify; /**< Zmiana statusu kontaktów (\c GG _EVENT_NOTIFY) */ struct gg_notify_reply *notify; /**< Zmiana statusu kontaktów (\c GG _EVENT_NOTIFY) */
struct gg_event_notify_descr notify_descr; /**< Zmiana statusu kontaktów (\c GG_EVENT_NOTIFY_DESCR) */ struct gg_event_notify_descr notify_descr; /**< Zmiana statusu kontaktów (\c GG_EVENT_NOTIFY_DESCR) */
struct gg_event_status status; /**< Zmiana statusu kontaktów (\c GG _EVENT_STATUS) */ struct gg_event_status status; /**< Zmiana statusu kontaktów (\c GG _EVENT_STATUS) */
skipping to change at line 931 skipping to change at line 1022
struct gg_dcc *dcc_new; /**< Nowe połączenie bezpośrednie (\c GG_EVE NT_DCC_NEW) */ struct gg_dcc *dcc_new; /**< Nowe połączenie bezpośrednie (\c GG_EVE NT_DCC_NEW) */
enum gg_error_t dcc_error; /**< Błąd połączenia bezpośredniego (\c GG_EVENT_DCC_ERROR) */ enum gg_error_t dcc_error; /**< Błąd połączenia bezpośredniego (\c GG_EVENT_DCC_ERROR) */
struct gg_event_dcc_voice_data dcc_voice_data; /**< Dane połączenia głosowego (\c GG_EVENT_DCC_VOICE_DATA) */ struct gg_event_dcc_voice_data dcc_voice_data; /**< Dane połączenia głosowego (\c GG_EVENT_DCC_VOICE_DATA) */
struct gg_dcc7 *dcc7_new; /**< Nowe połączenie bezpośrednie (\ c GG_EVENT_DCC7_NEW) */ struct gg_dcc7 *dcc7_new; /**< Nowe połączenie bezpośrednie (\ c GG_EVENT_DCC7_NEW) */
enum gg_error_t dcc7_error; /**< Błąd połączenia bezpośredniego (\c GG_EVENT_DCC7_ERROR) */ enum gg_error_t dcc7_error; /**< Błąd połączenia bezpośredniego (\c GG_EVENT_DCC7_ERROR) */
struct gg_event_dcc7_connected dcc7_connected; /**< Informacja o ze stawieniu połączenia bezpośredniego (\c GG_EVENT_DCC7_CONNECTED) */ struct gg_event_dcc7_connected dcc7_connected; /**< Informacja o ze stawieniu połączenia bezpośredniego (\c GG_EVENT_DCC7_CONNECTED) */
struct gg_event_dcc7_pending dcc7_pending; /**< Trwa próba połą czenia bezpośredniego (\c GG_EVENT_DCC7_PENDING) */ struct gg_event_dcc7_pending dcc7_pending; /**< Trwa próba połą czenia bezpośredniego (\c GG_EVENT_DCC7_PENDING) */
struct gg_event_dcc7_reject dcc7_reject; /**< Odrzucono połąc zenia bezpośredniego (\c GG_EVENT_DCC7_REJECT) */ struct gg_event_dcc7_reject dcc7_reject; /**< Odrzucono połąc zenia bezpośredniego (\c GG_EVENT_DCC7_REJECT) */
struct gg_event_dcc7_accept dcc7_accept; /**< Zaakceptowano p ołączenie bezpośrednie (\c GG_EVENT_DCC7_ACCEPT) */ struct gg_event_dcc7_accept dcc7_accept; /**< Zaakceptowano p ołączenie bezpośrednie (\c GG_EVENT_DCC7_ACCEPT) */
struct gg_event_dcc7_done dcc7_done; /**< Zakończono połączenie b ezpośrednie (\c GG_EVENT_DCC7_DONE) */ struct gg_event_dcc7_done dcc7_done; /**< Zakończono połączenie b ezpośrednie (\c GG_EVENT_DCC7_DONE) */
struct gg_event_typing_notification typing_notification; /**<
Powiadomienie o pisaniu */
struct gg_event_user_data user_data; /**< Informacje o kontaktach
*/
struct gg_event_msg multilogon_msg; /**< Inna sesja wysłała wiad
omość (\c GG_EVENT_MULTILOGON_MSG) */
struct gg_event_multilogon_info multilogon_info; /**< Informa
cja o innych sesjach multilogowania (\c GG_EVENT_MULTILOGON_INFO) */
}; };
/** /**
* Opis zdarzenia. * Opis zdarzenia.
* *
* Zwracany przez funkcje \c gg_watch_fd(), \c gg_dcc_watch_fd() * Zwracany przez funkcje \c gg_watch_fd(), \c gg_dcc_watch_fd()
* i \c gg_dcc7_watch_fd(). Po przeanalizowaniu należy zwolnić * i \c gg_dcc7_watch_fd(). Po przeanalizowaniu należy zwolnić
* za pomocą \c gg_event_free(). * za pomocą \c gg_event_free().
* *
* \ingroup events * \ingroup events
skipping to change at line 1349 skipping to change at line 1444
uin_t sender; /**< Nadawca obrazka */ uin_t sender; /**< Nadawca obrazka */
uint32_t size; /**< Rozmiar obrazka */ uint32_t size; /**< Rozmiar obrazka */
uint32_t crc32; /**< Suma kontrolna CRC32 */ uint32_t crc32; /**< Suma kontrolna CRC32 */
char *filename; /**< Nazwa pliku */ char *filename; /**< Nazwa pliku */
char *image; /**< Bufor z odebranymi danymi */ char *image; /**< Bufor z odebranymi danymi */
uint32_t done; /**< Rozmiar odebranych danych */ uint32_t done; /**< Rozmiar odebranych danych */
struct gg_image_queue *next; /**< Kolejny element listy */ struct gg_image_queue *next; /**< Kolejny element listy */
} GG_DEPRECATED; } GG_DEPRECATED;
int gg_dcc7_handle_id(struct gg_session *sess, struct gg_event *e, void *pa int gg_dcc7_handle_id(struct gg_session *sess, struct gg_event *e, const vo
yload, int len) GG_DEPRECATED; id *payload, int len) GG_DEPRECATED;
int gg_dcc7_handle_new(struct gg_session *sess, struct gg_event *e, void *p int gg_dcc7_handle_new(struct gg_session *sess, struct gg_event *e, const v
ayload, int len) GG_DEPRECATED; oid *payload, int len) GG_DEPRECATED;
int gg_dcc7_handle_info(struct gg_session *sess, struct gg_event *e, void * int gg_dcc7_handle_info(struct gg_session *sess, struct gg_event *e, const
payload, int len) GG_DEPRECATED; void *payload, int len) GG_DEPRECATED;
int gg_dcc7_handle_accept(struct gg_session *sess, struct gg_event *e, void int gg_dcc7_handle_accept(struct gg_session *sess, struct gg_event *e, cons
*payload, int len) GG_DEPRECATED; t void *payload, int len) GG_DEPRECATED;
int gg_dcc7_handle_reject(struct gg_session *sess, struct gg_event *e, void int gg_dcc7_handle_reject(struct gg_session *sess, struct gg_event *e, cons
*payload, int len) GG_DEPRECATED; t void *payload, int len) GG_DEPRECATED;
#define GG_APPMSG_HOST "appmsg.gadu-gadu.pl" #define GG_APPMSG_HOST "appmsg.gadu-gadu.pl"
#define GG_APPMSG_PORT 80 #define GG_APPMSG_PORT 80
#define GG_PUBDIR_HOST "pubdir.gadu-gadu.pl" #define GG_PUBDIR_HOST "pubdir.gadu-gadu.pl"
#define GG_PUBDIR_PORT 80 #define GG_PUBDIR_PORT 80
#define GG_REGISTER_HOST "register.gadu-gadu.pl" #define GG_REGISTER_HOST "register.gadu-gadu.pl"
#define GG_REGISTER_PORT 80 #define GG_REGISTER_PORT 80
#define GG_REMIND_HOST "retr.gadu-gadu.pl" #define GG_REMIND_HOST "retr.gadu-gadu.pl"
#define GG_REMIND_PORT 80 #define GG_REMIND_PORT 80
#define GG_RELAY_HOST "relay.gadu-gadu.pl"
#define GG_RELAY_PORT 80
#define GG_DEFAULT_PORT 8074 #define GG_DEFAULT_PORT 8074
#define GG_HTTPS_PORT 443 #define GG_HTTPS_PORT 443
#define GG_HTTP_USERAGENT "Mozilla/4.7 [en] (Win98; I)" #define GG_HTTP_USERAGENT "Mozilla/4.7 [en] (Win98; I)"
#define GG_DEFAULT_CLIENT_VERSION "8.0.0.7669" #define GG_DEFAULT_CLIENT_VERSION "10.1.0.11070"
#define GG_DEFAULT_PROTOCOL_VERSION 0x2e #define GG_DEFAULT_PROTOCOL_VERSION 0x2e
#define GG_DEFAULT_TIMEOUT 30 #define GG_DEFAULT_TIMEOUT 30
#define GG_HAS_AUDIO_MASK 0x40000000 #define GG_HAS_AUDIO_MASK 0x40000000
#define GG_HAS_AUDIO7_MASK 0x20000000 #define GG_HAS_AUDIO7_MASK 0x20000000
#define GG_ERA_OMNIX_MASK 0x04000000 #define GG_ERA_OMNIX_MASK 0x04000000
#define GG_LIBGADU_VERSION "1.9.1" #define GG_LIBGADU_VERSION "1.10.0"
#ifndef DOXYGEN #ifndef DOXYGEN
#define GG_FEATURE_MSG77 0x0001 #define GG_FEATURE_MSG77 0x0001
#define GG_FEATURE_STATUS77 0x0002 #define GG_FEATURE_STATUS77 0x0002
#define GG_FEATURE_UNKNOWN_4 0x0004 #define GG_FEATURE_UNKNOWN_4 0x0004
#define GG_FEATURE_UNKNOWN_8 0x0008 #define GG_FEATURE_UNKNOWN_8 0x0008
#define GG_FEATURE_DND_FFC 0x0010 #define GG_FEATURE_DND_FFC 0x0010
#define GG_FEATURE_IMAGE_DESCR 0x0020 #define GG_FEATURE_IMAGE_DESCR 0x0020
#define GG_FEATURE_UNKNOWN_40 0x0040
#define GG_FEATURE_UNKNOWN_80 0x0080
#define GG_FEATURE_UNKNOWN_100 0x0100
#define GG_FEATURE_USER_DATA 0x0200
#define GG_FEATURE_MSG_ACK 0x0400
#define GG_FEATURE_UNKNOWN_800 0x0800
#define GG_FEATURE_UNKNOWN_1000 0x1000
#define GG_FEATURE_TYPING_NOTIFICATION 0x2000
#define GG_FEATURE_MULTILOGON 0x4000
/* Poniższe makra zostały zachowane dla zgodności API */ /* Poniższe makra zostały zachowane dla zgodności API */
#define GG_FEATURE_MSG80 0 #define GG_FEATURE_MSG80 0
#define GG_FEATURE_STATUS80 0 #define GG_FEATURE_STATUS80 0
#define GG_FEATURE_STATUS80BETA 0 #define GG_FEATURE_STATUS80BETA 0
#define GG_FEATURE_ALL (GG_FEATURE_MSG80 | GG_FEATURE_STATU
S80 | GG_FEATURE_DND_FFC | GG_FEATURE_IMAGE_DESCR) #define GG_FEATURE_ALL (GG_FEATURE_MSG80 | GG_FEATURE_STATU
S80 | GG_FEATURE_DND_FFC | GG_FEATURE_IMAGE_DESCR | GG_FEATURE_UNKNOWN_100
| GG_FEATURE_USER_DATA | GG_FEATURE_MSG_ACK | GG_FEATURE_TYPING_NOTIFICATIO
N)
#else #else
/** /**
* \ingroup login * \ingroup login
* *
* Flagi opcji protokołu. * Flagi opcji protokołu.
*/ */
enum { enum {
GG_FEATURE_MSG77, /**< Klient życzy sobie otrzymywać wiadomośc i zgodnie z protokołem 7.7 */ GG_FEATURE_MSG77, /**< Klient życzy sobie otrzymywać wiadomośc i zgodnie z protokołem 7.7 */
skipping to change at line 2008 skipping to change at line 2115
#define GG_DCC_TIMEOUT_FILE_ACK 300 /* 5 minut */ #define GG_DCC_TIMEOUT_FILE_ACK 300 /* 5 minut */
#define GG_DCC_TIMEOUT_VOICE_ACK 300 /* 5 minut */ #define GG_DCC_TIMEOUT_VOICE_ACK 300 /* 5 minut */
#define GG_DCC7_INFO 0x1f #define GG_DCC7_INFO 0x1f
struct gg_dcc7_info { struct gg_dcc7_info {
uint32_t uin; /* numer nadawcy */ uint32_t uin; /* numer nadawcy */
uint32_t type; /* sposób połączenia */ uint32_t type; /* sposób połączenia */
gg_dcc7_id_t id; /* identyfikator połączenia */ gg_dcc7_id_t id; /* identyfikator połączenia */
char info[GG_DCC7_INFO_LEN]; /* informacje o połączeniu "ip port" */ char info[GG_DCC7_INFO_LEN]; /* informacje o połączeniu "ip port" */
char hash[GG_DCC7_INFO_HASH_LEN];/* skrót "ip" */
} GG_PACKED; } GG_PACKED;
#define GG_DCC7_NEW 0x20 #define GG_DCC7_NEW 0x20
struct gg_dcc7_new { struct gg_dcc7_new {
gg_dcc7_id_t id; /* identyfikator połączenia */ gg_dcc7_id_t id; /* identyfikator połączenia */
uint32_t uin_from; /* numer nadawcy */ uint32_t uin_from; /* numer nadawcy */
uint32_t uin_to; /* numer odbiorcy */ uint32_t uin_to; /* numer odbiorcy */
uint32_t type; /* rodzaj transmisji */ uint32_t type; /* rodzaj transmisji */
unsigned char filename[GG_DCC7_FILENAME_LEN]; /* nazwa pliku */ unsigned char filename[GG_DCC7_FILENAME_LEN]; /* nazwa pliku */
 End of changes. 23 change blocks. 
24 lines changed or deleted 153 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/