libgadu  1.12.2
All Struktury Danych Pliki Funkcje Zmienne Definicje typów Wyliczenia Wartości wyliczeń Definicje Grupay Strony
Struktury danych | Definicje typów | Wyliczenia | Funkcje
Własne funkcje do nawiązywania połączeń TCP/TLS

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_dataDane prywatne aplikacji
hostNazwa hosta
portNumer portu
is_tlsFlaga określająca, czy ma zostać nawiązane połączenie TLS
is_asyncFlaga określająca połączenie asynchroniczne (patrz szczegóły powyżej)
privDane 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_dataDane prywatne aplikacji
handleUchwyt 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_dataDane prywatne aplikacji
handleUchwyt gniazda
bufferBufor do zapisu danych
bufsizeRozmiar 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_dataDane prywatne aplikacji
handleUchwyt gniazda
dataDane do wysłania
lengthRozmiar danych
Zwraca
Ilość wysłanych danych, lub -1 (oraz ustawiony errno) w przypadku niepowodzenia

Dokumentacja typów wyliczanych

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
handleUchwyt gniazda
privDane prywatne biblioteki libgadu
fdDeskryptor 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