|
uin_t
Typ reprezentujący numer osoby.
gg_session
| int fd; | podglądany deskryptor |
| int check; | sprawdzamy zapis czy odczyt |
| int state; | aktualny stan maszynki |
| int error; | kod błędu dla GG_STATE_ERROR |
| int type; | rodzaj sesji |
| int id; | identyfikator |
| int timeout; | sugerowany timeout w sekundach |
| int (*callback)(x*); | callback przy zmianach |
| void (*destroy)(x*); | funkcja niszczenia |
| int async; | czy połączenie jest asynchroniczne |
| int pid; | pid procesu resolvera |
| int port; | port, z którym się łączymy |
| int seq; | numer sekwencyjny ostatniej wiadomości |
| int last_pong; | czas otrzymania ostatniego ping/pong |
| int last_event; | czas otrzymania ostatniego pakietu |
| struct gg_event *event; | zdarzenie po ->callback() |
| uint32_t proxy_addr; | adres proxy, keszowany |
| uint16_t proxy_port; | port proxy |
| uint32_t hub_addr; | adres huba po resolvnięciu |
| uint32_t server_addr; | adres serwera, od huba |
| uint32_t client_addr; | adres klienta |
| uint16_t client_port; | port, na którym klient słucha |
| uint32_t external_addr; | adres zewnetrzny klienta |
| uint16_t external_port; | port zewnetrzny klienta |
| uin_t uin; | numerek klienta |
| char *password; | i jego hasło. zwalniane automagicznie |
| int initial_status; | początkowy stan klienta |
| int status; | aktualny stan klienta |
| char *recv_buf; | bufor na otrzymywane pakiety |
| int recv_done; | ile już wczytano do bufora |
| int recv_left; | i ile jeszcze trzeba wczytać |
| int protocol_version; | wersja używanego protokołu |
| char *client_version; | wersja używanego klienta |
| int last_sysmsg; | ostatnia wiadomość systemowa |
| char *initial_descr; | początkowy opis stanu klienta |
| void *resolver; | wskaźnik na informacje resolvera |
| char *header_buf; | bufor na początek nagłówka |
| unsigned int header_done; | ile już mamy |
| void *ssl; | zachowujemy ABI |
| int image_size; | maksymalny rozmiar obrazków w KiB |
| char *userlist_reply; | fragment odpowiedzi listy kontaktów |
| int userlist_blocks; | na ile kawałków podzielono listę kontaktów |
| struct gg_image_queue *images; | aktualnie wczytywane obrazki |
gg_http
| int fd; | podglądany deskryptor |
| int check; | sprawdzamy zapis czy odczyt |
| int state; | aktualny stan maszynki |
| int error; | kod błędu dla GG_STATE_ERROR |
| int type; | rodzaj sesji |
| int id; | identyfikator |
| int timeout; | sugerowany timeout w sekundach |
| int (*callback)(x*); | callback przy zmianach |
| void (*destroy)(x*); | funkcja niszczenia |
| int async; | czy połączenie asynchroniczne |
| int pid; | pid procesu resolvera |
| int port; | port, z którym się łączymy |
| char *query; | bufor zapytania http |
| char *header; | bufor nagłówka |
| int header_size; | rozmiar wczytanego nagłówka |
| char *body; | bufor otrzymanych informacji |
| unsigned int body_size; | oczekiwana ilość informacji |
| void *data; | dane danej operacji http |
| char *user_data; | dane użytkownika, nie są zwalniane przez gg_http_free() |
| void *resolver; | wskaźnik na informacje resolvera |
| unsigned int body_done; | ile już treści odebrano? |
gg_file_info
Odpowiednik windowsowej struktury WIN32_FIND_DATA niezbędnej przy
wysyłaniu plików.
| uint32_t mode; | dwFileAttributes |
| uint32_t ctime[2]; | ftCreationTime |
| uint32_t atime[2]; | ftLastAccessTime |
| uint32_t mtime[2]; | ftLastWriteTime |
| uint32_t size_hi; | nFileSizeHigh |
| uint32_t size; | nFileSizeLow |
| uint32_t reserved0; | dwReserved0 |
| uint32_t reserved1; | dwReserved1 |
| unsigned char filename[GG_MAX_PATH - 14]; | cFileName |
| unsigned char short_filename[14]; | cAlternateFileName |
gg_dcc
| int fd; | podglądany deskryptor |
| int check; | sprawdzamy zapis czy odczyt |
| int state; | aktualny stan maszynki |
| int error; | kod błędu dla GG_STATE_ERROR |
| int type; | rodzaj sesji |
| int id; | identyfikator |
| int timeout; | sugerowany timeout w sekundach |
| int (*callback)(x*); | callback przy zmianach |
| void (*destroy)(x*); | funkcja niszczenia |
| struct gg_event *event; | opis zdarzenia |
| int active; | czy to my się łączymy? |
| int port; | port, na którym siedzi |
| uin_t uin; | uin klienta |
| uin_t peer_uin; | uin drugiej strony |
| int file_fd; | deskryptor pliku |
| unsigned int offset; | offset w pliku |
| unsigned int chunk_size; | rozmiar kawałka |
| unsigned int chunk_offset; | offset w aktualnym kawałku |
| int established; | połączenie ustanowione |
| char *voice_buf; | bufor na pakiet połączenia głosowego |
| int incoming; | połączenie przychodzące |
| char *chunk_buf; | bufor na kawałek danych |
| uint32_t remote_addr; | adres drugiej strony |
| uint16_t remote_port; | port drugiej strony |
gg_session_t
Rodzaje sesji.
| GG_SESSION_GG | połączenie z serwerem gg |
| GG_SESSION_HTTP | ogólna sesja http |
| GG_SESSION_SEARCH | szukanie |
| GG_SESSION_REGISTER | rejestrowanie |
| GG_SESSION_REMIND | przypominanie hasła |
| GG_SESSION_PASSWD | zmiana hasła |
| GG_SESSION_CHANGE | zmiana informacji o sobie |
| GG_SESSION_DCC | ogólne połączenie DCC |
| GG_SESSION_DCC_SOCKET | nasłuchujący socket |
| GG_SESSION_DCC_SEND | wysyłanie pliku |
| GG_SESSION_DCC_GET | odbieranie pliku |
| GG_SESSION_DCC_VOICE | rozmowa głosowa |
| GG_SESSION_USERLIST_GET | pobieranie userlisty |
| GG_SESSION_USERLIST_PUT | wysyłanie userlisty |
| GG_SESSION_UNREGISTER | usuwanie konta |
| GG_SESSION_USERLIST_REMOVE | usuwanie userlisty |
| GG_SESSION_TOKEN | pobieranie tokenu |
| GG_SESSION_USER0 | zdefiniowana dla użytkownika |
| GG_SESSION_USER1 | j.w. |
| GG_SESSION_USER2 | j.w. |
| GG_SESSION_USER3 | j.w. |
| GG_SESSION_USER4 | j.w. |
| GG_SESSION_USER5 | j.w. |
| GG_SESSION_USER6 | j.w. |
| GG_SESSION_USER7 | j.w. |
gg_state_t
Opisuje stan asynchronicznej maszyny.
| GG_STATE_IDLE | nie powinno wystąpić. |
| GG_STATE_RESOLVING | wywołał gethostbyname() |
| GG_STATE_CONNECTING | wywołał connect() |
| GG_STATE_READING_DATA | czeka na dane http |
| GG_STATE_ERROR | wystąpił błąd. kod w x->error |
| GG_STATE_CONNECTING_HUB | wywołał connect() na huba |
| GG_STATE_CONNECTING_GG | wywołał connect() na serwer |
| GG_STATE_READING_KEY | czeka na klucz |
| GG_STATE_READING_REPLY | czeka na odpowiedź |
| GG_STATE_CONNECTED | połączył się |
| GG_STATE_SENDING_QUERY | wysyła zapytanie http |
| GG_STATE_READING_HEADER | czeka na nagłówek http |
| GG_STATE_PARSING | przetwarza dane |
| GG_STATE_DONE | skończył |
| GG_STATE_LISTENING | czeka na połączenia |
| GG_STATE_READING_UIN_1 | czeka na uin peera |
| GG_STATE_READING_UIN_2 | czeka na swój uin |
| GG_STATE_SENDING_ACK | wysyła potwierdzenie dcc |
| GG_STATE_READING_ACK | czeka na potwierdzenie dcc |
| GG_STATE_READING_REQUEST | czeka na komendę |
| GG_STATE_SENDING_REQUEST | wysyła komendę |
| GG_STATE_SENDING_FILE_INFO | wysyła informacje o pliku |
| GG_STATE_READING_PRE_FILE_INFO | czeka na pakiet przed file_info |
| GG_STATE_READING_FILE_INFO | czeka na informacje o pliku |
| GG_STATE_SENDING_FILE_ACK | wysyła potwierdzenie pliku |
| GG_STATE_READING_FILE_ACK | czeka na potwierdzenie pliku |
| GG_STATE_SENDING_FILE_HEADER | wysyła nagłówek pliku |
| GG_STATE_READING_FILE_HEADER | czeka na nagłówek |
| GG_STATE_GETTING_FILE | odbiera plik |
| GG_STATE_SENDING_FILE | wysyła plik |
| GG_STATE_READING_VOICE_ACK | czeka na potwierdzenie voip |
| GG_STATE_READING_VOICE_HEADER | czeka na rodzaj bloku voip |
| GG_STATE_READING_VOICE_SIZE | czeka na rozmiar bloku voip |
| GG_STATE_READING_VOICE_DATA | czeka na dane voip |
| GG_STATE_SENDING_VOICE_ACK | wysyła potwierdzenie voip |
| GG_STATE_SENDING_VOICE_REQUEST | wysyła żądanie voip |
| GG_STATE_READING_TYPE | czeka na typ połączenia |
| GG_STATE_TLS_NEGOTIATION | negocjuje połączenie TLS |
gg_check_t
Informuje, co proces klienta powinien sprawdzić na deskryptorze danego
połączenia.
| GG_CHECK_NONE | nic. nie powinno wystąpić |
| GG_CHECK_WRITE | sprawdzamy możliwość zapisu |
| GG_CHECK_READ | sprawdzamy możliwość odczytu |
gg_login_params
Parametry gg_login(). Przeniesiono do struktury, żeby uniknąć problemów
z ciągłymi zmianami API, gdy dodano coś nowego do protokołu.
| uin_t uin; | numerek |
| char *password; | hasło |
| int async; | asynchroniczne sockety? |
| int status; | początkowy status klienta |
| char *status_descr; | opis statusu |
| uint32_t server_addr; | adres serwera gg |
| uint16_t server_port; | port serwera gg |
| uint32_t client_addr; | adres dcc klienta |
| uint16_t client_port; | port dcc klienta |
| int protocol_version; | wersja protokołu |
| char *client_version; | wersja klienta |
| int has_audio; | czy ma dźwięk? |
| int last_sysmsg; | ostatnia wiadomość systemowa |
| uint32_t external_addr; | adres widziany na zewnatrz |
| uint16_t external_port; | port widziany na zewnatrz |
| int tls; | czy łączymy po TLS? |
| int image_size; | maksymalny rozmiar obrazka w KiB |
| int era_omnix; | czy udawać klienta era omnix? |
gg_event_t
Rodzaje zdarzeń.
| GG_EVENT_NONE | nic się nie wydarzyło |
| GG_EVENT_MSG | otrzymano wiadomość |
| GG_EVENT_NOTIFY | ktoś się pojawił |
| GG_EVENT_NOTIFY_DESCR | ktoś się pojawił z opisem |
| GG_EVENT_STATUS | ktoś zmienił stan |
| GG_EVENT_ACK | potwierdzenie wysłania wiadomości |
| GG_EVENT_PONG | pakiet pong |
| GG_EVENT_CONN_FAILED | połączenie się nie udało |
| GG_EVENT_CONN_SUCCESS | połączenie się powiodło |
| GG_EVENT_DISCONNECT | serwer zrywa połączenie |
| GG_EVENT_DCC_NEW | nowe połączenie między klientami |
| GG_EVENT_DCC_ERROR | błąd połączenia między klientami |
| GG_EVENT_DCC_DONE | zakończono połączenie |
| GG_EVENT_DCC_CLIENT_ACCEPT | moment akceptacji klienta |
| GG_EVENT_DCC_CALLBACK | klient się połączył na żądanie |
| GG_EVENT_DCC_NEED_FILE_INFO | należy wypełnić file_info |
| GG_EVENT_DCC_NEED_FILE_ACK | czeka na potwierdzenie pliku |
| GG_EVENT_DCC_NEED_VOICE_ACK | czeka na potwierdzenie rozmowy |
| GG_EVENT_DCC_VOICE_DATA | ramka danych rozmowy głosowej |
| GG_EVENT_PUBDIR50_SEARCH_REPLY | odpowiedz wyszukiwania |
| GG_EVENT_PUBDIR50_READ | odczytano własne dane z katalogu |
| GG_EVENT_PUBDIR50_WRITE | wpisano własne dane do katalogu |
| GG_EVENT_STATUS60 | ktoś zmienił stan w GG 6.0 |
| GG_EVENT_NOTIFY60 | ktoś się pojawił w GG 6.0 |
| GG_EVENT_USERLIST | odpowiedź listy kontaktów w GG 6.0 |
| GG_EVENT_IMAGE_REQUEST | prośba o wysłanie obrazka GG 6.0 |
| GG_EVENT_IMAGE_REPLY | podesłany obrazek GG 6.0 |
| GG_EVENT_DCC_ACK | potwierdzenie transmisji |
gg_failure_t
Określa powód nieudanego połączenia.
| GG_FAILURE_RESOLVING | nie znaleziono serwera |
| GG_FAILURE_CONNECTING | nie można się połączyć |
| GG_FAILURE_INVALID | serwer zwrócił nieprawidłowe dane |
| GG_FAILURE_READING | zerwano połączenie podczas odczytu |
| GG_FAILURE_WRITING | zerwano połączenie podczas zapisu |
| GG_FAILURE_PASSWORD | nieprawidłowe hasło |
| GG_FAILURE_404 | XXX nieużywane |
| GG_FAILURE_TLS | błąd negocjacji TLS |
| GG_FAILURE_NEED_EMAIL | serwer rozłączył nas z prośbą o zmianę emaila |
| GG_FAILURE_INTRUDER | za dużo prób połączenia się z nieprawidłowym hasłem |
| GG_FAILURE_UNAVAILABLE | serwery są wyłączone |
gg_error_t
Określa rodzaj błędu wywołanego przez daną operację. Nie zawiera
przesadnie szczegółowych informacji o powodzie błędu, by nie komplikować
obsługi błędów. Jeśli wymagana jest większa dokładność, należy sprawdzić
zawartość zmiennej errno.
| GG_ERROR_RESOLVING | błąd znajdowania hosta |
| GG_ERROR_CONNECTING | błąd łaczenia się |
| GG_ERROR_READING | błąd odczytu |
| GG_ERROR_WRITING | błąd wysyłania |
| GG_ERROR_DCC_HANDSHAKE | błąd negocjacji |
| GG_ERROR_DCC_FILE | błąd odczytu/zapisu pliku |
| GG_ERROR_DCC_EOF | plik się skończył? |
| GG_ERROR_DCC_NET | błąd wysyłania/odbierania |
| GG_ERROR_DCC_REFUSED | połączenie odrzucone przez usera |
gg_pubdir_50_t
Typ opisujący zapytanie lub wynik zapytania katalogu publicznego
z protokołu GG 5.0. Nie należy się odwoływać bezpośrednio do jego
pól -- służą do tego funkcje gg_pubdir50_*()
gg_event
| int type; | rodzaj zdarzenia -- gg_event_t |
| struct gg_notify_reply *notify; | informacje o liście kontaktów -- GG_EVENT_NOTIFY |
| enum gg_failure_t failure; | błąd połączenia -- GG_EVENT_FAILURE |
| struct gg_dcc *dcc_new; | nowe połączenie bezpośrednie -- GG_EVENT_DCC_NEW |
| int dcc_error; | błąd połączenia bezpośredniego -- GG_EVENT_DCC_ERROR |
| gg_pubdir50_t pubdir50; | wynik operacji związanej z katalogiem publicznym -- GG_EVENT_PUBDIR50_* |
| uin_t sender; | numer nadawcy |
| int msgclass; | klasa wiadomości |
| time_t time; | czas nadania |
| unsigned char *message; | treść wiadomości |
| int recipients_count; | ilość odbiorców konferencji |
| uin_t *recipients; | odbiorcy konferencji |
| int formats_length; | długość informacji o formatowaniu tekstu |
| void *formats; | informacje o formatowaniu tekstu |
| struct gg_notify_reply *notify; | informacje o liście kontaktów |
| char *descr; | opis stanu |
| uin_t uin; | numer |
| uint32_t status; | nowy stan |
| char *descr; | opis stanu |
| uin_t uin; | numer |
| int status; | nowy stan |
| uint32_t remote_ip; | adres ip |
| uint16_t remote_port; | port |
| int version; | wersja klienta |
| int image_size; | maksymalny rozmiar grafiki w KiB |
| char *descr; | opis stanu |
| time_t time; | czas powrotu |
| uin_t uin; | numer |
| int status; | stan |
| uint32_t remote_ip; | adres ip |
| uint16_t remote_port; | port |
| int version; | wersja klienta |
| int image_size; | maksymalny rozmiar grafiki w KiB |
| char *descr; | opis stanu |
| time_t time; | czas powrotu |
| uin_t recipient; | numer odbiorcy |
| int status; | stan doręczenia wiadomości |
| int seq; | numer sekwencyjny wiadomości |
| uint8_t *data; | dane dźwiękowe |
| int length; | ilość danych dźwiękowych |
| char type; | rodzaj odpowiedzi |
| char *reply; | treść odpowiedzi |
| uin_t sender; | nadawca prośby |
| uint32_t size; | rozmiar obrazka |
| uint32_t crc32; | suma kontrolna |
| uin_t sender; | nadawca odpowiedzi |
| uint32_t size; | rozmiar obrazka |
| uint32_t crc32; | suma kontrolna |
| char *filename; | nazwa pliku |
| char *image; | bufor z obrazkiem |
gg_pubdir
Operacje na katalogu publicznym.
| int success; | czy się udało |
| uin_t uin; | otrzymany numerek. 0 jeśli błąd |
gg_change_info_request
Opis żądania zmiany informacji w katalogu publicznym.
| char *first_name; | imię |
| char *last_name; | nazwisko |
| char *nickname; | pseudonim |
| char *email; | email |
| int born; | rok urodzenia |
| int gender; | płeć |
| char *city; | miasto |
|