|
libgadu
1.12.2
|
Struktury danych | |
| struct | gg_msg_richtext_format |
| Struktura opisująca formatowanie tekstu. Więcej... | |
| struct | gg_msg_richtext_color |
Struktura opisującą kolor tekstu dla atrybutu GG_FONT_COLOR. Więcej... | |
| struct | gg_msg_richtext_image |
Strukturya opisująca obrazek wstawiony do wiadomości dla atrubutu GG_FONT_IMAGE. Więcej... | |
Definicje | |
| #define | GG_MSG_MAXSIZE 1989 |
| Maksymalna długość wiadomości. Więcej... | |
Wyliczenia | |
| enum | { GG_CLASS_MSG, GG_CLASS_CHAT, GG_CLASS_CTCP, GG_CLASS_ACK, GG_CLASS_QUEUED } |
| Klasy wiadomości. Więcej... | |
| enum | { GG_FONT_BOLD, GG_FONT_ITALIC, GG_FONT_UNDERLINE, GG_FONT_COLOR, GG_FONT_IMAGE } |
| Atrybuty formatowania wiadomości. Więcej... | |
| enum | { GG_ACK_DELIVERED, GG_ACK_QUEUED, GG_ACK_BLOCKED, GG_ACK_MBOXFULL, GG_ACK_NOT_DELIVERED } |
| Status doręczenia wiadomości. Więcej... | |
Funkcje | |
| int | gg_send_message (struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message) |
| Wysyła wiadomość do użytkownika. Więcej... | |
| int | gg_send_message_richtext (struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message, const unsigned char *format, int formatlen) |
| Wysyła wiadomość formatowaną. Więcej... | |
| int | gg_send_message_html (struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *html_message) |
| Wysyła formatowaną wiadomość HTML. Więcej... | |
| int | gg_send_message_confer (struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message) |
| Wysyła wiadomość w ramach konferencji. Więcej... | |
| int | gg_send_message_confer_richtext (struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message, const unsigned char *format, int formatlen) |
| Wysyła wiadomość formatowaną w ramach konferencji. Więcej... | |
| int | gg_send_message_confer_html (struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *html_message) |
| Wysyła formatowaną wiadomość HTML w ramach konferencji. Więcej... | |
| int | gg_send_message_ctcp (struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message, int message_len) |
| Wysyła wiadomość binarną przeznaczoną dla klienta. Więcej... | |
| int | gg_image_request (struct gg_session *sess, uin_t recipient, int size, uint32_t crc32) |
| Wysyła żądanie obrazka o podanych parametrach. Więcej... | |
| int | gg_image_reply (struct gg_session *sess, uin_t recipient, const char *filename, const char *image, int size) |
| Wysyła żądany obrazek. Więcej... | |
| int | gg_typing_notification (struct gg_session *sess, uin_t recipient, int length) |
| Informuje rozmówcę o pisaniu wiadomości. Więcej... | |
Zmienne | |
| struct gg_header | GG_PACKED |
Wysyłanie zwykłych wiadomości jest prostą operacją i większości przypadków wystarczy użycie funkcji gg_send_message:
Funkcja zwraca numer sekwencyjny wiadomości, który może zostać użyty do potwierdzenia dostarczenia wiadomości za pomocą zdarzenia GG_EVENT_ACK . Wiadomości przeznaczone do wyświetlania w osobny oknie były wykorzystywane w starszych wersjach Gadu-Gadu, gdzie istniały osobne opcje — wiadomości i rozmowa. Obecnie wykorzystuje się wiadomość typu GG_CLASS_CHAT.
Wiadomość, która ma zawierać formatowanie tekstu, musi zostać wysłana za pomocą funkcji gg_send_message_richtext(). Wiadomości konferencyjne wysyła się funkcjami gg_send_message_confer() lub gg_send_message_confer_richtext().
Rozmowy konferencyjne w Gadu-Gadu polegają na wysyłaniu tej samej wiadomości do wszystkich uczestników wraz z metainformacją zawierającą listę uczestników. Osoba, która pierwsza wyśle wiadomość, dołącza listę rozmówców do wiadomości, z której korzysta się przy wysyłaniu odpowiedzi. Z tego powodu nie ma możliwości dołączania się lub opuszczania "pokojów" — po zamknięciu rozmowy konferencyjnej należy ignorować kolejne wiadomości, ponieważ inni uczestnicy nie są o tym fakcie informowani.
Funkcje gg_send_message_confer() i gg_send_message_confer_richtext() zajmują się wysłaniem wiadomości do wszystkich uczestników oraz dołączaniem odpowiednich metainformowacji. Aplikacja musi jedynie dołączyć listę rozmówców w postaci listy ich identyfikatorów.
Po odebraniu wiadomości konferencyjnej za pomocą zdarzenia GG_EVENT_MSG ,pola recipients_count oraz recipients struktury zdarzenia określają listę rozmówców.
Wiadomości formatowane zawierają metainformacje opisujące formatowanie poszczególnych fragmentów tekstu. Blok metainformacji zawiera dowolną liczbę struktur gg_msg_richtext_format. Pole position określa pierwszy znak, którego dotyczy formatowanie. Pole font jest sumą logiczną atrybutów:
GG_FONT_BOLD — pogrubienie, GG_FONT_ITALIC — kursywa, GG_FONT_UNDERLINE — podkreślenie, GG_FONT_COLOR — kolor, GG_FONT_IMAGE — obrazek. Jeśli występuje atrybut GG_FONT_COLOR, zaraz za strukturą gg_msg_richtext_format znajduje się struktura gg_msg_richtext_color opisująca kolor za pomocą składowych RGB.
Jeśli występuje atrybut GG_FONT_IMAGE, za strukturą znajduje się struktura gg_msg_richtext_image. Pole unknown1 zawiera rozmiar (0x09) oraz rodzaj struktury (0x01), ale ze względów historycznych jest liczbą 16-bitową i należy przypisać mu wartość 0x0109. Pola size i crc32 identyfikują obrazek, który można pobrać od nadawcy lub z dysku lokalnego, jeśli był już wcześniej pobierany (np. często używana ikonka). Opis pobierania obrazków od nadawcy znajduje się poniżej.
gg_fix16() i gg_fix32(), które w razie konieczności dokonają konwersji.Wiadomości odebrane od serwera są przekazywane za pomocą zdarzenia GG_EVENT_MSG
Każda przesyłana wiadomość zawiera numer sekwencyjny, który może zostać użyty do potwierdzenia doręczenia. Zdarzenie GG_EVENT_ACK zawiera informację o doręczeniulub powód niedoręczenia, chyba że wiadomość została wysłania z klasą GG_CLASS_ACK. Lista kodów jest opisana poniżej.
Po odebraniu wiadomości zawierającej strukturę gg_msg_richtext_image, mając informację o rozmiarze i sumie kontrolnej obrazka, należy użyć funkcji:
Następnie należy oczekiwać na zdarzenie GG_EVENT_IMAGE_REPLY , które będzie zawierać rozmiar pliku (size) i sumę kontrolą (crc32) do identifikacji zdarzenia, oraz nazwę obrazka (filename) i jego treść (image). Rodzaj pliku graficznego nie jest określony przy transmisji, więc należy go rozpoznać po rozszerzeniu lub treści.
Jeśli została wysłana wiadomość graficzną, należy obsługiwać zdarzenie GG_EVENT_IMAGE_REQUEST , które w polachsize i crc32 zawiera informacje o obrazku, którego potrzebuje nasz rozmówca. Obrazek wysyła się funkcją:
Począwszy od Gadu-Gadu 10 rozmówca jest informowany o tym, że jesteśmy w trakcie pisania wiadomości:
Informacje o pisaniu przesyłane są do aplikacji za pomocą zdarzenia GG_EVENT_TYPING_NOTIFICATION .
| #define GG_MSG_MAXSIZE 1989 |
Maksymalna długość wiadomości.
| anonymous enum |
Klasy wiadomości.
Wartości są maskami bitowymi, które w większości przypadków można łączyć (połączenie GG_CLASS_MSG i GG_CLASS_CHAT nie ma sensu).
| anonymous enum |
| anonymous enum |
Status doręczenia wiadomości.
| int gg_send_message | ( | struct gg_session * | sess, |
| int | msgclass, | ||
| uin_t | recipient, | ||
| const unsigned char * | message | ||
| ) |
Wysyła wiadomość do użytkownika.
Zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
| sess | Struktura sesji |
| msgclass | Klasa wiadomości |
| recipient | Numer adresata |
| message | Treść wiadomości |
| int gg_send_message_richtext | ( | struct gg_session * | sess, |
| int | msgclass, | ||
| uin_t | recipient, | ||
| const unsigned char * | message, | ||
| const unsigned char * | format, | ||
| int | formatlen | ||
| ) |
Wysyła wiadomość formatowaną.
Zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
| sess | Struktura sesji |
| msgclass | Klasa wiadomości |
| recipient | Numer adresata |
| message | Treść wiadomości |
| format | Informacje o formatowaniu |
| formatlen | Długość informacji o formatowaniu |
| int gg_send_message_html | ( | struct gg_session * | sess, |
| int | msgclass, | ||
| uin_t | recipient, | ||
| const unsigned char * | html_message | ||
| ) |
Wysyła formatowaną wiadomość HTML.
Zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
| sess | Struktura sesji |
| msgclass | Klasa wiadomości |
| recipient | Numer adresata |
| html_message | Treść wiadomości HTML |
| int gg_send_message_confer | ( | struct gg_session * | sess, |
| int | msgclass, | ||
| int | recipients_count, | ||
| uin_t * | recipients, | ||
| const unsigned char * | message | ||
| ) |
Wysyła wiadomość w ramach konferencji.
Zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
| sess | Struktura sesji |
| msgclass | Klasa wiadomości |
| recipients_count | Liczba adresatów |
| recipients | Wskaźnik do tablicy z numerami adresatów |
| message | Treść wiadomości |
| int gg_send_message_confer_richtext | ( | struct gg_session * | sess, |
| int | msgclass, | ||
| int | recipients_count, | ||
| uin_t * | recipients, | ||
| const unsigned char * | message, | ||
| const unsigned char * | format, | ||
| int | formatlen | ||
| ) |
Wysyła wiadomość formatowaną w ramach konferencji.
Zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
| sess | Struktura sesji |
| msgclass | Klasa wiadomości |
| recipients_count | Liczba adresatów |
| recipients | Wskaźnik do tablicy z numerami adresatów |
| message | Treść wiadomości |
| format | Informacje o formatowaniu |
| formatlen | Długość informacji o formatowaniu |
| int gg_send_message_confer_html | ( | struct gg_session * | sess, |
| int | msgclass, | ||
| int | recipients_count, | ||
| uin_t * | recipients, | ||
| const unsigned char * | html_message | ||
| ) |
Wysyła formatowaną wiadomość HTML w ramach konferencji.
Zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
| sess | Struktura sesji |
| msgclass | Klasa wiadomości |
| recipients_count | Liczba adresatów |
| recipients | Wskaźnik do tablicy z numerami adresatów |
| html_message | Treść wiadomości HTML |
| int gg_send_message_ctcp | ( | struct gg_session * | sess, |
| int | msgclass, | ||
| uin_t | recipient, | ||
| const unsigned char * | message, | ||
| int | message_len | ||
| ) |
Wysyła wiadomość binarną przeznaczoną dla klienta.
Wiadomości między klientami przesyła się np. w celu wywołania zwrotnego połączenia bezpośredniego. Funkcja zwraca losowy numer sekwencyjny, który można zignorować albo wykorzystać do potwierdzenia.
| sess | Struktura sesji |
| msgclass | Klasa wiadomości |
| recipient | Numer adresata |
| message | Treść wiadomości |
| message_len | Długość wiadomości |
| int gg_image_request | ( | struct gg_session * | sess, |
| uin_t | recipient, | ||
| int | size, | ||
| uint32_t | crc32 | ||
| ) |
Wysyła żądanie obrazka o podanych parametrach.
Wiadomości obrazkowe nie zawierają samych obrazków, a tylko ich rozmiary i sumy kontrolne. Odbiorca najpierw szuka obrazków w swojej pamięci podręcznej i dopiero gdy ich nie znajdzie, wysyła żądanie do nadawcy. Wynik zostanie przekazany zdarzeniem GG_EVENT_IMAGE_REPLY.
| sess | Struktura sesji |
| recipient | Numer adresata |
| size | Rozmiar obrazka w bajtach |
| crc32 | Suma kontrola obrazka |
| int gg_image_reply | ( | struct gg_session * | sess, |
| uin_t | recipient, | ||
| const char * | filename, | ||
| const char * | image, | ||
| int | size | ||
| ) |
Wysyła żądany obrazek.
| sess | Struktura sesji |
| recipient | Numer adresata |
| filename | Nazwa pliku |
| image | Bufor z obrazkiem |
| size | Rozmiar obrazka |
| int gg_typing_notification | ( | struct gg_session * | sess, |
| uin_t | recipient, | ||
| int | length | ||
| ) |
Informuje rozmówcę o pisaniu wiadomości.
| sess | Struktura sesji |
| recipient | Numer adresata |
| length | Długość wiadomości lub 0 jeśli jest pusta |
| struct gg_chat_left GG_PACKED |
1.8.6