libgadu 1.12.2

- Strona główna
- Dodatkowe strony
- Moduły
- Struktury Danych
- Pliki

Struktury danych | Definicje typów | Wyliczenia | Funkcje
Własne funkcje do nawiązywania połączeń TCP/TLS
Pozostałe funkcje

## Struktury danych
struct | gg_socket_manager_t
| Struktura opisująca funkcje zarządzające gniazdami, jeżeli aplikacja sama je obsługuje. Więcej...

## Definicje typów
typedef void *(* | gg_socket_manager_connect_cb_t) (void *cb_data, const char *host, int port, int is_tls, int is_async, void *priv)
| Funkcja dostarczona przez aplikację, tworząca nowe gniazdo TCP/TLS. Więcej...
typedef void(* | gg_socket_manager_close_cb_t) (void *cb_data, void *handle)
| Niszczy gniazdo i zwalnia wszystkie powiązane z nim zasoby. Więcej...
typedef ssize_t(* | gg_socket_manager_read_cb_t) (void *cb_data, void *handle, unsigned char *buffer, size_t bufsize)
| Odbiera z gniazda dane binarne. Więcej...
typedef ssize_t(* | gg_socket_manager_write_cb_t) (void *cb_data, void *handle, const unsigned char *data, size_t length)
| Wysyła przez gniazdo dane binarne. Więcej...

## Wyliczenia
enum | gg_socket_manager_type_t { GG_SOCKET_MANAGER_TYPE_INTERNAL = 0, GG_SOCKET_MANAGER_TYPE_TCP, GG_SOCKET_MANAGER_TYPE_TLS }
| Metody nawiązywania połączeń TCP/TLS. Więcej...

## Funkcje
int | gg_socket_manager_connected (void *handle, void *priv, int fd)
| Odbiera nowo utworzone gniazdo TCP/TLS. Więcej...

## Opis szczegółowy

## Dokumentacja definicji typów

typedef void*(* gg_socket_manager_connect_cb_t) (void *cb_data, const char *host, int port, int is_tls, int is_async, void *priv)

Funkcja dostarczona przez aplikację, tworząca nowe gniazdo TCP/TLS.

Po nawiązaniu połączenia aplikacja musi wywołać gg_socket_manager_connected. Jeżeli połączenie jest asynchroniczne, wywołanie musi nastąpić po wyjściu z kontekstu tej funkcji. Dla połączeń synchronicznych z kolei, musi nastąpić jeszcze przed wyjściem z kontekstu.

Parametry

  cb_data | Dane prywatne aplikacji
  host | Nazwa hosta
  port | Numer portu
  is_tls | Flaga określająca, czy ma zostać nawiązane połączenie TLS
  is_async | Flaga określająca połączenie asynchroniczne (patrz szczegóły powyżej)
  priv | Dane prywatne biblioteki libgadu (do przekazania do gg_socket_manager_connected)

Zwraca
  Uchwyt gniazda

typedef void(* gg_socket_manager_close_cb_t) (void *cb_data, void *handle)

Niszczy gniazdo i zwalnia wszystkie powiązane z nim zasoby.

Parametry

  cb_data | Dane prywatne aplikacji
  handle | Uchwyt gniazda

typedef ssize_t(* gg_socket_manager_read_cb_t) (void *cb_data, void *handle, unsigned char *buffer, size_t bufsize)

Odbiera z gniazda dane binarne.

Funkcja powinna zajmować się obsługą TLS, jeżeli gniazdo jest w takim trybie.

Parametry

  cb_data | Dane prywatne aplikacji
  handle | Uchwyt gniazda
  buffer | Bufor do zapisu danych
  bufsize | Rozmiar bufora

Zwraca
  Ilość zapisanych danych, lub -1 (oraz ustawiony errno) w przypadku niepowodzenia

typedef ssize_t(* gg_socket_manager_write_cb_t) (void *cb_data, void *handle, const unsigned char *data, size_t length)

Wysyła przez gniazdo dane binarne.

Funkcja powinna zajmować się obsługą TLS, jeżeli gniazdo jest w takim trybie.

Parametry

  cb_data | Dane prywatne aplikacji
  handle | Uchwyt gniazda
  data | Dane do wysłania
  length | Rozmiar danych

Zwraca
  Ilość wysłanych danych, lub -1 (oraz ustawiony errno) w przypadku niepowodzenia

## Dokumentacja typów wyliczanych

enum gg_socket_manager_type_t

Metody nawiązywania połączeń TCP/TLS.

Wartości wyliczeń
GG_SOCKET_MANAGER_TYPE_INTERNAL | Wewnętrzna obsługa gniazd (domyślne).
GG_SOCKET_MANAGER_TYPE_TCP | Dostarczona przez aplikację - tylko obsługa TCP.
GG_SOCKET_MANAGER_TYPE_TLS | Dostarczona przez aplikację - obsługa zarówno TCP, jak i TLS.

## Dokumentacja funkcji

int gg_socket_manager_connected | ( | void * | handle,
|  | void * | priv,
|  | int | fd
| ) |  |

Odbiera nowo utworzone gniazdo TCP/TLS.

Po wywołaniu tej funkcji należy zacząć obserwować deskryptor sesji (nawet w przypadku niepowodzenia).

Jeżeli gniazdo nie zostanie obsłużone, należy je zniszczyć.

Parametry

  handle | Uchwyt gniazda
  priv | Dane prywatne biblioteki libgadu
  fd | Deskryptor nowo utworzonego gniazda, lub -1 w przypadku błędu

Zwraca
  Wartość różna od zera, jeżeli gniazdo zostało obsłużone, 0 w przeciwnym przypadku