gg_debug
Działanie:
Wyświetla komunikat o danym poziomie, o ile użytkownik sobie tego życzy.
Deklaracja:
void gg_debug(int level, const char *format, ...);
Parametry:
int levelpoziom wiadomości
const char *format...treść wiadomości (kompatybilna z printf())
Zwracana wartość:
Brak.
gg_vsaprintf
Działanie:
Robi dokładnie to samo, co vsprintf(), tyle że alokuje sobie wcześniej miejsce na dane. Powinno działać na tych maszynach, które mają funkcję vsnprintf() zgodną z C99, jak i na wcześniejszych.
Deklaracja:
char *gg_vsaprintf(const char *format, va_list ap);
Parametry:
const char *formatopis wyświetlanego tekstu jak dla printf()
va_list aplista argumentów dla printf()
Zwracana wartość:
Zaalokowany bufor, który należy później zwolnić, lub NULL jeśli nie udało się wykonać zadania.
gg_saprintf
Działanie:
Robi dokładnie to samo, co sprintf(), tyle że alokuje sobie wcześniej miejsce na dane. Powinno działać na tych maszynach, które mają funkcję vsnprintf() zgodną z C99, jak i na wcześniejszych.
Deklaracja:
char *gg_saprintf(const char *format, ...);
Parametry:
const char *format...treść taka sama jak w funkcji printf()
Zwracana wartość:
Zaalokowany bufor, który należy później zwolnić, lub NULL jeśli nie udało się wykonać zadania.
gg_get_line
Działanie:
Podaje kolejną linię z bufora tekstowego. Niszczy go bezpowrotnie, dzieląc na kolejne stringi. Zdarza się, nie ma potrzeby pisania funkcji dublującej bufor żeby tylko mieć nieruszone dane wejściowe, skoro i tak nie będą nam poźniej potrzebne. Obcina `\r\n'.
Deklaracja:
char *gg_get_line(char **ptr);
Parametry:
char **ptrwskaźnik do zmiennej, która przechowuje aktualną pozycję w przemiatanym buforze
Zwracana wartość:
Wskaźnik do kolejnej linii tekstu lub NULL, jeśli to już koniec bufora.
gg_connect
Działanie:
Łączy się z serwerem. Pierwszy argument jest typu (void *), żeby nie musieć niczego inkludować w libgadu.h i nie psuć jakiś głupich zależności na dziwnych systemach.
Deklaracja:
int gg_connect(void *addr, int port, int async);
Parametry:
void *addradres serwera (struct in_addr *)
int portport serwera
int asyncasynchroniczne połączenie
Zwracana wartość:
Deskryptor gniazda lub -1 w przypadku błędu (kod błędu w zmiennej errno).
gg_read_line
Działanie:
Czyta jedną linię tekstu z gniazda.
Deklaracja:
char *gg_read_line(int sock, char *buf, int length);
Parametry:
int sockdeskryptor gniazda
char *bufwskaźnik do bufora
int lengthdługość bufora
Zwracana wartość:
Jeśli trafi na błąd odczytu, zwraca NULL. Inaczej zwraca buf.
gg_chomp
Działanie:
Ucina "\r\n" lub "\n" z końca linii.
Deklaracja:
void gg_chomp(char *line);
Parametry:
char *linelinia do przycięcia
Zwracana wartość:
Brak.
gg_urlencode
Działanie:
Zamienia podany tekst na ciąg znaków do formularza http. Przydaje się przy różnych usługach katalogu publicznego.
Deklaracja:
char *gg_urlencode(const char *str);
Parametry:
const char *strciąg znaków do zakodowania
Zwracana wartość:
Zaalokowany bufor, który należy później zwolnić albo NULL w przypadku błędu.
gg_http_hash
Działanie:
Funkcja licząca hash dla adresu e-mail, hasła i paru innych.
Deklaracja:
int gg_http_hash(const char *format, ...);
Parametry:
const char *format...format kolejnych parametrów ('s' jeśli dany parametr jest ciągiem znaków lub 'u' jeśli numerem GG)
Zwracana wartość:
Hash wykorzystywany przy rejestracji i wszelkich manipulacjach własnego wpisu w katalogu publicznym.
gg_gethostbyname
Działanie:
Odpowiednik gethostbyname() używający gethostbyname_r(), gdy potrzebna jest wielobieżność. Chwilowo korzysta ze zwykłego gethostbyname().
Deklaracja:
struct hostent *gg_gethostbyname(const char *hostname);
Parametry:
const char *hostnamenazwa serwera
Zwracana wartość:
Zaalokowany bufor, który należy zwolnić lub NULL w przypadku błędu.
gg_win32_thread_socket
Działanie:
Zwraca deskryptor gniazda, które było ostatnio tworzone dla wątku o podanym identyfikatorze.

jeśli na win32 przy połączeniach synchronicznych zapamiętamy w jakim wątku uruchomiliśmy funkcję, która się z czymkolwiek łączy, to z osobnego wątku możemy anulować połączenie poprzez gg_win32_thread_socket(watek, -1);

Deklaracja:
int gg_win32_thread_socket(int thread_id, int socket);
Parametry:
int thread_idid wątku. jeśli jest równe 0, brany jest aktualny wątek, jeśli równe -1, usuwa wpis o podanym sockecie.
int socketdeskryptor gniazda. jeśli równe 0, zwraca deskryptor gniazda dla podanego wątku, jeśli równe -1, usuwa wpis, jeśli coś innego, ustawia dla podanego wątku dany numer deskryptora.
Zwracana wartość:
Jeśli socket jest równe 0, zwraca deskryptor gniazda dla podanego wątku.
gg_base64_encode
Działanie:
Zapisuje ciąg znaków w base64.
Deklaracja:
char *gg_base64_encode(const char *buf);
Parametry:
const char *bufciąg znaków.
Zwracana wartość:
Zaalokowany bufor.
gg_base64_decode
Działanie:
Dekoduje ciąg znaków z base64.
Deklaracja:
char *gg_base64_decode(const char *buf);
Parametry:
const char *bufciąg znaków.
Zwracana wartość:
Zaalokowany bufor.
gg_proxy_auth
Działanie:
Tworzy nagłówek autoryzacji dla proxy.

zaalokowany tekst lub NULL, jeśli proxy nie jest włączone lub nie wymaga autoryzacji.

Deklaracja:
char *gg_proxy_auth();
Zwracana wartość:
Brak.
gg_crc32_make_table
Działanie:
Static void gg_crc32_make_table() { uint32_t h = 1; int i, j;

memset(gg_crc32_table, 0, sizeof(gg_crc32_table));

for (i = 128; i; i >>= 1) { h = (h >> 1) ^ ((h & 1) ? 0xedb88320L : 0);

for (j = 0; j < 256; j += 2 * i) gg_crc32_table[i + j] = gg_crc32_table[j] ^ h; }

gg_crc32_initialized = 1; }

/* gg_crc32()

wyznacza sumę kontrolną CRC32 danego bloku danych.

Deklaracja:
uint32_t gg_crc32(uint32_t crc, unsigned char *buf, int len);
Parametry:
uint32_t crcsuma kontrola poprzedniego bloku danych lub 0 jeśli pierwszy
unsigned char *bufbufor danych
sizeilość danych
Zwracana wartość:
Suma kontrolna CRC32.
gg_dcc_request
Działanie:
Wysyła informację o tym, że dany klient powinien się z nami połączyć. Wykorzystywane, kiedy druga strona, której chcemy coś wysłać jest za maskaradą.
Deklaracja:
int gg_dcc_request(struct gg_session *sess, uin_t uin);
Parametry:
struct gg_session *sessstruktura opisująca sesję GG
uin_t uinnumerek odbiorcy
Zwracana wartość:
gg_dcc_fill_filetime
Działanie:
Zamienia czas w postaci unixowej na windowsowy.
Deklaracja:
void gg_dcc_fill_filetime(uint32_t ut, uint32_t *ft);
Parametry:
unixczas w postaci unixowej
filetimeczas w postaci windowsowej
Zwracana wartość:
Brak.
gg_dcc_fill_file_info
Działanie:
Wypełnia pola struct gg_dcc niezbędne do wysłania pliku.
Deklaracja:
int gg_dcc_fill_file_info(struct gg_dcc *d, const char *filename);
Parametry:
struct gg_dcc *dstruktura opisująca połączenie DCC
const char *filenamenazwa pliku
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_dcc_get_file
Działanie:
Inicjuje proces odbierania pliku od danego klienta, gdy ten wysłał do nas żądanie połączenia.
Deklaracja:
struct gg_dcc *gg_dcc_get_file(uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin);
Parametry:
uint32_t ipadres ip odbiorcy
uint16_t portport odbiorcy
uin_t my_uinwłasny numer
uin_t peer_uinnumer obiorcy
Zwracana wartość:
Zaalokowana struct gg_dcc lub NULL jeśli wystąpił błąd.
gg_dcc_send_file
Działanie:
Inicjuje proces wysyłania pliku do danego klienta.
Deklaracja:
struct gg_dcc *gg_dcc_send_file(uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin);
Parametry:
uint32_t ipadres ip odbiorcy
uint16_t portport odbiorcy
uin_t my_uinwłasny numer
uin_t peer_uinnumer obiorcy
Zwracana wartość:
Zaalokowana struct gg_dcc lub NULL jeśli wystąpił błąd.
gg_dcc_voice_chat
Działanie:
Próbuje nawiązać połączenie głosowe.
Deklaracja:
struct gg_dcc *gg_dcc_voice_chat(uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin);
Parametry:
uint32_t ipadres ip odbiorcy
uint16_t portport odbiorcy
uin_t my_uinwłasny numer
uin_t peer_uinnumer obiorcy
Zwracana wartość:
Zaalokowana struct gg_dcc lub NULL jeśli wystąpił błąd.
gg_dcc_set_type
Działanie:
Po zdarzeniu GG_EVENT_DCC_CALLBACK należy ustawić typ połączenia za pomocą tej funkcji.
Deklaracja:
void gg_dcc_set_type(struct gg_dcc *d, int type);
Parametry:
struct gg_dcc *dstruktura opisująca połączenie
int typetyp połączenia (GG_SESSION_DCC_SEND lub GG_SESSION_DCC_VOICE)
Zwracana wartość:
Brak.
gg_dcc_socket_create
Działanie:
Tworzy gniazdo dla bezpośredniej komunikacji między klientami.
Deklaracja:
struct gg_dcc *gg_dcc_socket_create(uin_t uin, uint16_t port);
Parametry:
uin_t uinwłasny numer
uint16_t portpreferowany port, jeśli równy 0 lub -1, próbuje domyślnego
Zwracana wartość:
Zaalokowana struct gg_dcc, którą poźniej należy zwolnić funkcją gg_dcc_free(), albo NULL jeśli wystąpił błąd.
gg_dcc_voice_send
Działanie:
Wysyła ramkę danych dla rozmowy głosowej.
Deklaracja:
int gg_dcc_voice_send(struct gg_dcc *d, char *buf, int length);
Parametry:
struct gg_dcc *dstruktura opisująca połączenie dcc
char *bufbufor z danymi
int lengthrozmiar ramki
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_dcc_watch_fd
Działanie:
Funkcja, którą należy wywołać, gdy coś się zmieni na gg_dcc->fd.
Deklaracja:
struct gg_event *gg_dcc_watch_fd(struct gg_dcc *h);
Parametry:
struct gg_dcc *hstruktura zwrócona przez gg_create_dcc_socket()
Zwracana wartość:
Zaalokowana struct gg_event lub NULL, jeśli zabrakło pamięci na nią.
gg_dcc_free
Działanie:
Zwalnia pamięć po strukturze połączenia dcc.
Deklaracja:
void gg_dcc_free(struct gg_dcc *d);
Parametry:
struct gg_dcc *dzwalniana struktura
Zwracana wartość:
Brak.
gg_event_free
Działanie:
Zwalnia pamięć zajmowaną przez informację o zdarzeniu.
Deklaracja:
void gg_event_free(struct gg_event *e);
Parametry:
struct gg_event *ewskaźnik do informacji o zdarzeniu
Zwracana wartość:
Brak.
gg_image_queue_remove
Działanie:
Usuwa z kolejki dany wpis.
Deklaracja:
int gg_image_queue_remove(struct gg_session *s, struct gg_image_queue *q, int freeq);
Parametry:
struct gg_session *ssesja
struct gg_image_queue *qkolejka
int freeqczy zwolnić kolejkę
Zwracana wartość:
0/-1
gg_watch_fd
Działanie:
Funkcja, którą należy wywołać, gdy coś się stanie z obserwowanym deskryptorem. Zwraca klientowi informację o tym, co się dzieje.
Deklaracja:
struct gg_event *gg_watch_fd(struct gg_session *sess);
Parametry:
struct gg_session *sessopis sesji
Zwracana wartość:
Wskaźnik do struktury gg_event, którą trzeba zwolnić później za pomocą gg_event_free(). Jesli rodzaj zdarzenia jest równy GG_EVENT_NONE, należy je zignorować. Jeśli zwróciło NULL, stało się coś niedobrego -- albo zabrakło pamięci albo zerwało połączenie.
gg_http_connect
Działanie:
Rozpoczyna połączenie po http.
Deklaracja:
struct gg_http *gg_http_connect(const char *hostname, int port, int async, const char *method, const char *path, const char *header);
Parametry:
const char *hostnameadres serwera
int portport serwera
int asyncasynchroniczne połączenie
const char *methodmetoda http (GET, POST, cokolwiek)
const char *pathścieżka do zasobu (musi być poprzedzona ,,/'')
const char *headernagłówek zapytania plus ewentualne dane dla POST
Zwracana wartość:
Zaalokowana struct gg_http, którą poźniej należy zwolnić funkcją gg_http_free(), albo NULL jeśli wystąpił błąd.
gg_http_watch_fd
Działanie:
Przy asynchronicznej obsłudze HTTP funkcję tą należy wywołać, jeśli zmieniło się coś na obserwowanym deskryptorze.
Deklaracja:
int gg_http_watch_fd(struct gg_http *h);
Parametry:
struct gg_http *hstruktura opisująca połączenie
Zwracana wartość:
Jeśli wszystko poszło dobrze to 0, inaczej -1. Połączenie będzie zakończone, jeśli h->state == GG_STATE_PARSING. Jeśli wystąpi jakiś błąd, to będzie tam GG_STATE_ERROR i odpowiedni kod błędu w h->error.
gg_http_stop
Działanie:
Jeśli połączenie jest w trakcie, przerywa je. Nie zwalnia h->data.
Deklaracja:
void gg_http_stop(struct gg_http *h);
Parametry:
struct gg_http *hstruktura opisująca połączenie
Zwracana wartość:
Brak.
gg_http_free_fields
Działanie:
Zwalnia pola struct gg_http, ale nie zwalnia samej struktury.
Deklaracja:
void gg_http_free_fields(struct gg_http *h);
Zwracana wartość:
Brak.
gg_http_free
Działanie:
Próbuje zamknąć połączenie i zwalnia pamięć po nim.
Deklaracja:
void gg_http_free(struct gg_http *h);
Parametry:
struct gg_http *hstruktura, którą należy zlikwidować
Zwracana wartość:
Brak.
gg_libgadu_version
Działanie:
Zwraca wersję libgadu.
Deklaracja:
const char *gg_libgadu_version();
Parametry:
brak
Zwracana wartość:
Wersja libgadu.
gg_fix32
Działanie:
Zamienia kolejność bajtów w liczbie 32-bitowej tak, by odpowiadała kolejności bajtów w protokole GG. Ze względu na LE-owość serwera, zamienia tylko na maszynach BE-wych.
Deklaracja:
uint32_t gg_fix32(uint32_t x);
Parametry:
uint32_t xliczba do zamiany
Zwracana wartość:
Liczba z odpowiednią kolejnością bajtów.
gg_fix16
Działanie:
Zamienia kolejność bajtów w liczbie 16-bitowej tak, by odpowiadała kolejności bajtów w protokole GG. Ze względu na LE-owość serwera, zamienia tylko na maszynach BE-wych.
Deklaracja:
uint16_t gg_fix16(uint16_t x);
Parametry:
uint16_t xliczba do zamiany
Zwracana wartość:
Liczba z odpowiednią kolejnością bajtów.
gg_login_hash
Działanie:
Liczy hash z hasła i danego seeda.
Deklaracja:
unsigned int gg_login_hash(unsigned char *password, unsigned int seed);
Parametry:
unsigned char *passwordhasło do hashowania
unsigned int seedwartość podana przez serwer
Zwracana wartość:
Hash.
gg_resolve
Działanie:
Tworzy potok, forkuje się i w drugim procesie zaczyna resolvować podanego hosta. Zapisuje w sesji deskryptor potoku. Jeśli coś tam będzie gotowego, znaczy, że można wczytać struct in_addr. Jeśli nie znajdzie, zwraca INADDR_NONE.
Deklaracja:
int gg_resolve(int *fd, int *pid, const char *hostname);
Parametry:
int *fdwskaźnik gdzie wrzucić deskryptor
int *pidgdzie wrzucić pid procesu potomnego
const char *hostnamenazwa hosta do zresolvowania
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_resolve_pthread
Działanie:
Tworzy potok, nowy wątek i w nim zaczyna resolvować podanego hosta. Zapisuje w sesji deskryptor potoku. Jeśli coś tam będzie gotowego, znaczy, że można wczytać struct in_addr. Jeśli nie znajdzie, zwraca INADDR_NONE.
Deklaracja:
int gg_resolve_pthread(int *fd, void **resolver, const char *hostname);
Parametry:
int *fdwskaźnik do zmiennej przechowującej desktyptor resolvera
void **resolverwskaźnik do wskaźnika resolvera
const char *hostnamenazwa hosta do zresolvowania
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_read
Działanie:
Czyta z gniazda określoną ilość bajtów. Bierze pod uwagę, czy mamy połączenie zwykłe czy TLS.
Deklaracja:
int gg_read(struct gg_session *sess, char *buf, int length);
Parametry:
struct gg_session *sesssesja,
char *bufbufor,
int lengthilość bajtów,
Zwracana wartość:
Takie same wartości jak read().
gg_write
Działanie:
Zapisuje do gniazda określoną ilość bajtów. Bierze pod uwagę, czy mamy połączenie zwykłe czy TLS.
Deklaracja:
int gg_write(struct gg_session *sess, const char *buf, int length);
Parametry:
struct gg_session *sesssesja,
const char *bufbufor,
int lengthilość bajtów,
Zwracana wartość:
Takie same wartości jak write().
gg_recv_packet
Działanie:
Odbiera jeden pakiet i zwraca wskaźnik do niego. Pamięć po nim należy zwolnić za pomocą free().
Deklaracja:
void *gg_recv_packet(struct gg_session *sess);
Parametry:
struct gg_session *sessopis sesji
Zwracana wartość:
W przypadku błędu NULL, kod błędu w errno.
gg_send_packet
Działanie:
Konstruuje pakiet i wysyła go do serwera.
Deklaracja:
int gg_send_packet(struct gg_session *sess, int type, ...);
Parametry:
sockdeskryptor gniazda
int typetyp pakietu
payload_1pierwsza część pakietu
payload_length_1długość pierwszej części
payload_2druga część pakietu
payload_length_2długość drugiej części
...kolejne części pakietu i ich długości
NULLkońcowym parametr (konieczny!)
Zwracana wartość:
Jeśli się powiodło, zwraca 0, w przypadku błędu -1. Jeśli errno == ENOMEM, zabrakło pamięci. Inaczej był błąd przy wysyłaniu pakietu. Dla errno == 0 nie wysłano całego pakietu.
gg_login
Działanie:
Rozpoczyna procedurę łączenia się z serwerem. Resztę obsługuje się przez gg_watch_fd().

UWAGA! program musi obsłużyć SIGCHLD, jeśli łączy się asynchronicznie, żeby poprawnie zamknąć proces resolvera.

Deklaracja:
Parametry:
const struct gg_login_params *pstruktura opisująca początkowy stan. wymagane pola: uin, password
Zwracana wartość:
W przypadku błędu NULL, jeśli idzie dobrze (async) albo poszło dobrze (sync), zwróci wskaźnik do zaalokowanej struct gg_session.
gg_free_session
Działanie:
Próbuje zamknąć połączenia i zwalnia pamięć zajmowaną przez sesję.
Deklaracja:
void gg_free_session(struct gg_session *sess);
Parametry:
struct gg_session *sessopis sesji
Zwracana wartość:
Brak.
gg_change_status
Działanie:
Zmienia status użytkownika. Przydatne do /away i /busy oraz /quit.
Deklaracja:
int gg_change_status(struct gg_session *sess, int status);
Parametry:
struct gg_session *sessopis sesji
int statusnowy status użytkownika
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_change_status_descr
Działanie:
Zmienia status użytkownika na opisowy.
Deklaracja:
int gg_change_status_descr(struct gg_session *sess, int status, const char *descr);
Parametry:
struct gg_session *sessopis sesji
int statusnowy status użytkownika
const char *descropis statusu
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_change_status_descr_time
Działanie:
Zmienia status użytkownika na opisowy z godziną powrotu.
Deklaracja:
int gg_change_status_descr_time(struct gg_session *sess, int status, const char *descr, int time);
Parametry:
struct gg_session *sessopis sesji
int statusnowy status użytkownika
const char *descropis statusu
int timeczas w formacie uniksowym
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_logoff
Działanie:
Wylogowuje użytkownika i zamyka połączenie, ale nie zwalnia pamięci.
Deklaracja:
void gg_logoff(struct gg_session *sess);
Parametry:
struct gg_session *sessopis sesji
Zwracana wartość:
Brak.
gg_image_request
Działanie:
Wysyła żądanie wysłania obrazka o podanych parametrach.
Deklaracja:
int gg_image_request(struct gg_session *sess, uin_t recipient, int size, uint32_t crc32);
Parametry:
struct gg_session *sessopis sesji
uin_t recipientnumer adresata
int sizerozmiar obrazka
uint32_t crc32suma kontrolna obrazka
Zwracana wartość:
0/-1
gg_image_reply
Działanie:
Wysyła żądany obrazek.
Deklaracja:
int gg_image_reply(struct gg_session *sess, uin_t recipient, const char *filename, const char *image, int size);
Parametry:
struct gg_session *sessopis sesji
uin_t recipientnumer adresata
const char *filenamenazwa pliku
const char *imagebufor z obrazkiem
int sizerozmiar obrazka
Zwracana wartość:
0/-1
gg_send_message_ctcp
Działanie:
Wysyła wiadomość do innego użytkownika. Zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
Deklaracja:
int gg_send_message_ctcp(struct gg_session *sess, int msgclass, uin_t recipient, unsigned char *message, int message_len);
Parametry:
struct gg_session *sessopis sesji
int msgclassrodzaj wiadomości
uin_t recipientnumer adresata
unsigned char *messagetreść wiadomości
int message_lendługość
Zwracana wartość:
Numer sekwencyjny wiadomości lub -1 w przypadku błędu.
gg_send_message
Działanie:
Wysyła wiadomość do innego użytkownika. Zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
Deklaracja:
int gg_send_message(struct gg_session *sess, int msgclass, uin_t recipient, unsigned char *message);
Parametry:
struct gg_session *sessopis sesji
int msgclassrodzaj wiadomości
uin_t recipientnumer adresata
unsigned char *messagetreść wiadomości
Zwracana wartość:
Numer sekwencyjny wiadomości lub -1 w przypadku błędu.
gg_send_message_richtext
Działanie:
Wysyła kolorową wiadomość do innego użytkownika. Zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
Deklaracja:
int gg_send_message_richtext(struct gg_session *sess, int msgclass, uin_t recipient, unsigned char *message, unsigned char *format, int formatlen);
Parametry:
struct gg_session *sessopis sesji
int msgclassrodzaj wiadomości
uin_t recipientnumer adresata
unsigned char *messagetreść wiadomości
unsigned char *formatinformacje o formatowaniu
int formatlendługość informacji o formatowaniu
Zwracana wartość:
Numer sekwencyjny wiadomości lub -1 w przypadku błędu.
gg_send_message_confer
Działanie:
Wysyła wiadomość do kilku użytkownikow (konferencja). Zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
Deklaracja:
int gg_send_message_confer(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, unsigned char *message);
Parametry:
struct gg_session *sessopis sesji
int msgclassrodzaj wiadomości
int recipients_countilość adresatów
uin_t *recipientsnumerki adresatów
unsigned char *messagetreść wiadomości
Zwracana wartość:
Numer sekwencyjny wiadomości lub -1 w przypadku błędu.
gg_send_message_confer_richtext
Działanie:
Wysyła kolorową wiadomość do kilku użytkownikow (konferencja). Zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
Deklaracja:
int gg_send_message_confer_richtext(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, unsigned char *message, unsigned char *format, int formatlen);
Parametry:
struct gg_session *sessopis sesji
int msgclassrodzaj wiadomości
int recipients_countilość adresatów
uin_t *recipientsnumerki adresatów
unsigned char *messagetreść wiadomości
unsigned char *formatinformacje o formatowaniu
int formatlendługość informacji o formatowaniu
Zwracana wartość:
Numer sekwencyjny wiadomości lub -1 w przypadku błędu.
gg_ping
Działanie:
Wysyła do serwera pakiet ping.
Deklaracja:
int gg_ping(struct gg_session *sess);
Parametry:
struct gg_session *sessopis sesji
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_notify_ex
Działanie:
Wysyła serwerowi listę kontaktów (wraz z odpowiadającymi im typami userów), dzięki czemu wie, czyj stan nas interesuje.
Deklaracja:
int gg_notify_ex(struct gg_session *sess, uin_t *userlist, char *types, int count);
Parametry:
struct gg_session *sessopis sesji
uin_t *userlistwskaźnik do tablicy numerów
char *typeswskaźnik do tablicy typów użytkowników
int countilość numerków
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_notify
Działanie:
Wysyła serwerowi listę kontaktów, dzięki czemu wie, czyj stan nas interesuje.
Deklaracja:
int gg_notify(struct gg_session *sess, uin_t *userlist, int count);
Parametry:
struct gg_session *sessopis sesji
uin_t *userlistwskaźnik do tablicy numerów
int countilość numerków
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_add_notify_ex
Działanie:
Dodaje do listy kontaktów dany numer w trakcie połączenia. Dodawanemu użytkownikowi określamy jego typ (patrz protocol.html)
Deklaracja:
int gg_add_notify_ex(struct gg_session *sess, uin_t uin, char type);
Parametry:
struct gg_session *sessopis sesji
uin_t uinnumer
char typetyp
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_add_notify
Działanie:
Dodaje do listy kontaktów dany numer w trakcie połączenia.
Deklaracja:
int gg_add_notify(struct gg_session *sess, uin_t uin);
Parametry:
struct gg_session *sessopis sesji
uin_t uinnumer
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_remove_notify_ex
Działanie:
Usuwa z listy kontaktów w trakcie połączenia. Usuwanemu użytkownikowi określamy jego typ (patrz protocol.html)
Deklaracja:
int gg_remove_notify_ex(struct gg_session *sess, uin_t uin, char type);
Parametry:
struct gg_session *sessopis sesji
uin_t uinnumer
char typetyp
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_remove_notify
Działanie:
Usuwa z listy kontaktów w trakcie połączenia.
Deklaracja:
int gg_remove_notify(struct gg_session *sess, uin_t uin);
Parametry:
struct gg_session *sessopis sesji
uin_t uinnumer
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_userlist_request
Działanie:
Wysyła żądanie/zapytanie listy kontaktów na serwerze.
Deklaracja:
int gg_userlist_request(struct gg_session *sess, char type, const char *request);
Parametry:
struct gg_session *sessopis sesji
char typerodzaj zapytania/żądania
const char *requesttreść zapytania/żądania (może być NULL)
Zwracana wartość:
0 jeśli operacja się powiodła, -1 w przypadku błędu.
gg_register3
Działanie:
Rozpoczyna rejestrację użytkownika protokołem GG 6.0. Wymaga wcześniejszego pobrania tokenu za pomocą funkcji gg_token().
Deklaracja:
struct gg_http *gg_register3(const char *email, const char *password, const char *tokenid, const char *tokenval, int async);
Parametry:
const char *emailadres e-mail klienta
const char *passwordhasło klienta
const char *tokenididentyfikator tokenu
const char *tokenvalwartość tokenu
int asyncpołączenie asynchroniczne
Zwracana wartość:
Zaalokowana struct gg_http, którą poźniej należy zwolnić funkcją gg_register_free(), albo NULL jeśli wystąpił błąd.
gg_unregister3
Działanie:
Usuwa konto użytkownika z serwera protokołem GG 6.0
Deklaracja:
struct gg_http *gg_unregister3(uin_t uin, const char *password, const char *tokenid, const char *tokenval, int async);
Parametry:
uin_t uinnumerek GG
const char *passwordhasło klienta
const char *tokenididentyfikator tokenu
const char *tokenvalwartość tokenu
int asyncpołączenie asynchroniczne
Zwracana wartość:
Zaalokowana struct gg_http, którą poźniej należy zwolnić funkcją gg_unregister_free(), albo NULL jeśli wystąpił błąd.
gg_change_passwd4
Działanie:
Wysyła żądanie zmiany hasła zgodnie z protokołem GG 6.0. Wymaga wcześniejszego pobrania tokenu za pomocą funkcji gg_token().
Deklaracja:
struct gg_http *gg_change_passwd4(uin_t uin, const char *email, const char *passwd, const char *newpasswd, const char *tokenid, const char *tokenval, int async);
Parametry:
uin_t uinnumer
const char *emailadres e-mail
const char *passwdstare hasło
const char *newpasswdnowe hasło
const char *tokenididentyfikator tokenu
const char *tokenvalwartość tokenu
int asyncpołączenie asynchroniczne
Zwracana wartość:
Zaalokowana struct gg_http, którą poźniej należy zwolnić funkcją gg_change_passwd_free(), albo NULL jeśli wystąpił błąd.
gg_remind_passwd
Działanie:
Wysyła żądanie przypomnienia hasła e-mailem.
Deklaracja:
struct gg_http *gg_remind_passwd2(uin_t uin, const char *tokenid, const char *tokenval, int async);
Parametry:
uin_t uinnumer
int asyncpołączenie asynchroniczne
const char *tokenididentyfikator tokenu
const char *tokenvalwartość tokenu
Zwracana wartość:
Zaalokowana struct gg_http, którą poźniej należy zwolnić funkcją gg_remind_passwd_free(), albo NULL jeśli wystąpił błąd.
gg_pubdir_watch_fd
Działanie:
Przy asynchronicznych operacjach na katalogu publicznym należy wywoływać tę funkcję przy zmianach na obserwowanym deskryptorze.
Deklaracja:
int gg_pubdir_watch_fd(struct gg_http *h);
Parametry:
struct gg_http *hstruktura opisująca połączenie
Zwracana wartość:
Jeśli wszystko poszło dobrze to 0, inaczej -1. Operacja będzie zakończona, jeśli h->state == GG_STATE_DONE. Jeśli wystąpi jakiś błąd, to będzie tam GG_STATE_ERROR i odpowiedni kod błędu w h->error.
gg_pubdir_free
Działanie:
Zwalnia pamięć po efektach operacji na katalogu publicznym.
Deklaracja:
void gg_pubdir_free(struct gg_http *h);
Parametry:
struct gg_http *hzwalniana struktura
Zwracana wartość:
Brak.
gg_token
Działanie:
Pobiera z serwera token do autoryzacji zakładania konta, usuwania konta i zmiany hasła.

zaalokowana struct gg_http, którą poźniej należy zwolnić funkcją gg_token_free(), albo NULL jeśli wystąpił błąd.

Deklaracja:
struct gg_http *gg_token(int async);
Zwracana wartość:
Brak.
gg_token_watch_fd
Działanie:
Przy asynchronicznych operacjach związanych z tokenem należy wywoływać tę funkcję przy zmianach na obserwowanym deskryptorze.
Deklaracja:
int gg_token_watch_fd(struct gg_http *h);
Parametry:
struct gg_http *hstruktura opisująca połączenie
Zwracana wartość:
Jeśli wszystko poszło dobrze to 0, inaczej -1. Operacja będzie zakończona, jeśli h->state == GG_STATE_DONE. Jeśli wystąpi jakiś błąd, to będzie tam GG_STATE_ERROR i odpowiedni kod błędu w h->error.
gg_token_free
Działanie:
Zwalnia pamięć po efektach pobierania tokenu.
Deklaracja:
void gg_token_free(struct gg_http *h);
Parametry:
struct gg_http *hzwalniana struktura
Zwracana wartość:
Brak.
gg_pubdir50_new
Działanie:
Tworzy nową zmienną typu gg_pubdir50_t.

zaalokowana zmienna lub NULL w przypadku braku pamięci.

Deklaracja:
gg_pubdir50_t gg_pubdir50_new(int type);
Zwracana wartość:
Brak.
gg_pubdir50_add_n
Działanie:
Funkcja dodaje lub zastępuje istniejące pole do zapytania lub odpowiedzi.
Deklaracja:
int gg_pubdir50_add_n(gg_pubdir50_t req, int num, const char *field, const char *value);
Parametry:
gg_pubdir50_t reqwskaźnik opisu zapytania,
int numnumer wyniku (0 dla zapytania),
const char *fieldnazwa pola,
const char *valuewartość pola,
Zwracana wartość:
0/-1
gg_pubdir50_add
Działanie:
Funkcja dodaje pole do zapytania.
Deklaracja:
int gg_pubdir50_add(gg_pubdir50_t req, const char *field, const char *value);
Parametry:
gg_pubdir50_t reqwskaźnik opisu zapytania,
const char *fieldnazwa pola,
const char *valuewartość pola,
Zwracana wartość:
0/-1
gg_pubdir50_seq_set
Działanie:
Ustawia numer sekwencyjny zapytania.
Deklaracja:
int gg_pubdir50_seq_set(gg_pubdir50_t req, uint32_t seq);
Parametry:
gg_pubdir50_t reqzapytanie,
uint32_t seqnowy numer sekwencyjny.
Zwracana wartość:
0/-1.
gg_pubdir50_free
Działanie:
Zwalnia pamięć po zapytaniu lub rezultacie szukania użytkownika.
Deklaracja:
void gg_pubdir50_free(gg_pubdir50_t s);
Parametry:
gg_pubdir50_t szwalniana zmienna,
Zwracana wartość:
Brak.
gg_pubdir50
Działanie:
Wysyła zapytanie katalogu publicznego do serwera.
Deklaracja:
uint32_t gg_pubdir50(struct gg_session *sess, gg_pubdir50_t req);
Parametry:
struct gg_session *sesssesja,
gg_pubdir50_t reqzapytanie.
Zwracana wartość:
Numer sekwencyjny wyszukiwania lub 0 w przypadku błędu.
gg_pubdir50_handle_reply
Działanie:
Analizuje przychodzący pakiet odpowiedzi i zapisuje wynik w struct gg_event.
Deklaracja:
int gg_pubdir50_handle_reply(struct gg_event *e, const char *packet, int length);
Parametry:
struct gg_event *eopis zdarzenia
const char *packetzawartość pakietu odpowiedzi
int lengthdługość pakietu odpowiedzi
Zwracana wartość:
0/-1
gg_pubdir50_get
Działanie:
Pobiera informację z rezultatu wyszukiwania.
Deklaracja:
const char *gg_pubdir50_get(gg_pubdir50_t res, int num, const char *field);
Parametry:
gg_pubdir50_t resrezultat wyszukiwania,
int numnumer odpowiedzi,
const char *fieldnazwa pola (wielkość liter nie ma znaczenia).
Zwracana wartość:
Wartość pola lub NULL, jeśli nie znaleziono.
gg_pubdir50_count
Działanie:
Zwraca ilość wyników danego zapytania.
Deklaracja:
int gg_pubdir50_count(gg_pubdir50_t res);
Parametry:
gg_pubdir50_t resodpowiedź
Zwracana wartość:
Ilość lub -1 w przypadku błędu.
gg_pubdir50_type
Działanie:
Zwraca rodzaj zapytania lub odpowiedzi.
Deklaracja:
int gg_pubdir50_type(gg_pubdir50_t res);
Parametry:
gg_pubdir50_t reszapytanie lub odpowiedź
Zwracana wartość:
Ilość lub -1 w przypadku błędu.
gg_pubdir50_next
Działanie:
Zwraca numer, od którego należy rozpocząć kolejne wyszukiwanie, jeśli zależy nam na kolejnych wynikach.
Deklaracja:
uin_t gg_pubdir50_next(gg_pubdir50_t res);
Parametry:
gg_pubdir50_t resodpowiedź
Zwracana wartość:
Numer lub -1 w przypadku błędu.
gg_pubdir50_seq
Działanie:
Zwraca numer sekwencyjny zapytania lub odpowiedzi.
Deklaracja:
uint32_t gg_pubdir50_seq(gg_pubdir50_t res);
Parametry:
gg_pubdir50_t reszapytanie lub odpowiedź
Zwracana wartość:
Numer lub -1 w przypadku błędu.