libgadu
1.12.2
|
Funkcje rozwiązywania nazw. Więcej...
Funkcje | |
int | gg_gethostbyname_real (const char *hostname, struct in_addr **result, unsigned int *count, int pthread) |
static int | gg_resolver_run (int fd, const char *hostname, int pthread) |
struct in_addr * | gg_gethostbyname (const char *hostname) |
int | gg_session_set_resolver (struct gg_session *gs, gg_resolver_t type) |
Ustawia sposób rozwiązywania nazw w sesji. Więcej... | |
gg_resolver_t | gg_session_get_resolver (struct gg_session *gs) |
Zwraca sposób rozwiązywania nazw w sesji. Więcej... | |
int | gg_session_set_custom_resolver (struct gg_session *gs, int(*resolver_start)(int *, void **, const char *), void(*resolver_cleanup)(void **, int)) |
Ustawia własny sposób rozwiązywania nazw w sesji. Więcej... | |
int | gg_http_set_resolver (struct gg_http *gh, gg_resolver_t type) |
Ustawia sposób rozwiązywania nazw połączenia HTTP. Więcej... | |
gg_resolver_t | gg_http_get_resolver (struct gg_http *gh) |
Zwraca sposób rozwiązywania nazw połączenia HTTP. Więcej... | |
int | gg_http_set_custom_resolver (struct gg_http *gh, int(*resolver_start)(int *, void **, const char *), void(*resolver_cleanup)(void **, int)) |
Ustawia własny sposób rozwiązywania nazw połączenia HTTP. Więcej... | |
int | gg_global_set_resolver (gg_resolver_t type) |
Ustawia sposób rozwiązywania nazw globalnie dla biblioteki. Więcej... | |
gg_resolver_t | gg_global_get_resolver (void) |
Zwraca sposób rozwiązywania nazw globalnie dla biblioteki. Więcej... | |
int | gg_global_set_custom_resolver (int(*resolver_start)(int *, void **, const char *), void(*resolver_cleanup)(void **, int)) |
Ustawia własny sposób rozwiązywania nazw globalnie dla biblioteki. Więcej... | |
int | gg_resolver_recv (int fd, void *buf, size_t len) |
Odczytuje dane z procesu/wątku rozwiązywania nazw. Więcej... | |
Zmienne | |
static gg_resolver_t | gg_global_resolver_type = GG_RESOLVER_DEFAULT |
Sposób rozwiązywania nazw serwerów. Więcej... | |
static int(* | gg_global_resolver_start )(int *fd, void **private_data, const char *hostname) |
Funkcja rozpoczynająca rozwiązywanie nazwy. Więcej... | |
static void(* | gg_global_resolver_cleanup )(void **private_data, int force) |
Funkcja zwalniająca zasoby po rozwiązaniu nazwy. Więcej... | |
Funkcje rozwiązywania nazw.
int gg_gethostbyname_real | ( | const char * | hostname, |
struct in_addr ** | result, | ||
unsigned int * | count, | ||
int | pthread | ||
) |
Odpowiednik gethostbyname
zapewniający współbieżność.
Jeśli dany system dostarcza gethostbyname_r
, używa się tej wersji, jeśli nie, to zwykłej gethostbyname
. Wynikiem jest tablica adresów zakończona wartością INADDR_NONE, którą należy zwolnić po użyciu.
hostname | Nazwa serwera |
result | Wskaźnik na wskaźnik z tablicą adresów zakończoną INADDR_NONE |
count | Wskaźnik na zmienną, do ktorej zapisze się liczbę wyników |
pthread | Flaga blokowania unicestwiania wątku podczas alokacji pamięci |
|
static |
Rozwiązuje nazwę i zapisuje wynik do podanego gniazda.
fd | Deskryptor gniazda |
hostname | Nazwa serwera |
pthread | Flaga blokowania unicestwiania wątku podczas alokacji pamięci |
struct in_addr* gg_gethostbyname | ( | const char * | hostname | ) |
Odpowiednik gethostbyname
zapewniający współbieżność.
Jeśli dany system dostarcza gethostbyname_r
, używa się tej wersji, jeśli nie, to zwykłej gethostbyname
. Funkcja służy do zachowania zgodności ABI i służy do pobierania tylko pierwszego adresu – pozostałe mogą zostać zignorowane przez aplikację.
hostname | Nazwa serwera |
in_addr
lub NULL w przypadku błędu. int gg_session_set_resolver | ( | struct gg_session * | gs, |
gg_resolver_t | type | ||
) |
Ustawia sposób rozwiązywania nazw w sesji.
gs | Struktura sesji |
type | Sposób rozwiązywania nazw (patrz Rozwiązywanie nazw) |
gg_resolver_t gg_session_get_resolver | ( | struct gg_session * | gs | ) |
Zwraca sposób rozwiązywania nazw w sesji.
gs | Struktura sesji |
int gg_session_set_custom_resolver | ( | struct gg_session * | gs, |
int(*)(int *, void **, const char *) | resolver_start, | ||
void(*)(void **, int) | resolver_cleanup | ||
) |
Ustawia własny sposób rozwiązywania nazw w sesji.
gs | Struktura sesji |
resolver_start | Funkcja rozpoczynająca rozwiązywanie nazwy |
resolver_cleanup | Funkcja zwalniająca zasoby |
Parametry funkcji rozpoczynającej rozwiązywanie nazwy wyglądają następująco:
"int *fd"
— wskaźnik na zmienną, gdzie zostanie umieszczony deskryptor gniazda"void **priv_data"
— wskaźnik na zmienną, gdzie można umieścić wskaźnik do prywatnych danych na potrzeby rozwiązywania nazwy"const char *name"
— nazwa serwera do rozwiązaniaParametry funkcji zwalniającej zasoby wyglądają następująco:
"void **priv_data"
— wskaźnik na zmienną przechowującą wskaźnik do prywatnych danych, należy go ustawić na NULL
po zakończeniu"int force"
— flaga mówiąca o tym, że zasoby są zwalniane przed zakończeniem rozwiązywania nazwy, np. z powodu zamknięcia sesji.Własny kod rozwiązywania nazwy powinien stworzyć potok, parę gniazd lub inny deskryptor pozwalający na co najmniej odbiór danych i przekazać go w parametrze fd
. Na platformie Windows możliwe jest przekazanie jedynie deskryptora gniazda. Po zakończeniu rozwiązywania nazwy powinien wysłać otrzymany adres IP w postaci sieciowej (big-endian) do deskryptora. Jeśli rozwiązywanie nazwy się nie powiedzie, należy wysłać INADDR_NONE
. Następnie zostanie wywołana funkcja zwalniająca zasoby z parametrem force
równym 0
. Gdyby sesja została zakończona przed rozwiązaniem nazwy, np. za pomocą funkcji gg_logoff()
, funkcja zwalniająca zasoby zostanie wywołana z parametrem force
równym 1
.
int gg_http_set_resolver | ( | struct gg_http * | gh, |
gg_resolver_t | type | ||
) |
Ustawia sposób rozwiązywania nazw połączenia HTTP.
gh | Struktura połączenia |
type | Sposób rozwiązywania nazw (patrz Rozwiązywanie nazw) |
gg_resolver_t gg_http_get_resolver | ( | struct gg_http * | gh | ) |
Zwraca sposób rozwiązywania nazw połączenia HTTP.
gh | Struktura połączenia |
int gg_http_set_custom_resolver | ( | struct gg_http * | gh, |
int(*)(int *, void **, const char *) | resolver_start, | ||
void(*)(void **, int) | resolver_cleanup | ||
) |
Ustawia własny sposób rozwiązywania nazw połączenia HTTP.
gh | Struktura sesji |
resolver_start | Funkcja rozpoczynająca rozwiązywanie nazwy |
resolver_cleanup | Funkcja zwalniająca zasoby |
int gg_global_set_resolver | ( | gg_resolver_t | type | ) |
Ustawia sposób rozwiązywania nazw globalnie dla biblioteki.
type | Sposób rozwiązywania nazw (patrz Rozwiązywanie nazw) |
gg_resolver_t gg_global_get_resolver | ( | void | ) |
Zwraca sposób rozwiązywania nazw globalnie dla biblioteki.
int gg_global_set_custom_resolver | ( | int(*)(int *, void **, const char *) | resolver_start, |
void(*)(void **, int) | resolver_cleanup | ||
) |
Ustawia własny sposób rozwiązywania nazw globalnie dla biblioteki.
resolver_start | Funkcja rozpoczynająca rozwiązywanie nazwy |
resolver_cleanup | Funkcja zwalniająca zasoby |
Patrz gg_session_set_custom_resolver.
int gg_resolver_recv | ( | int | fd, |
void * | buf, | ||
size_t | len | ||
) |
Odczytuje dane z procesu/wątku rozwiązywania nazw.
fd | Deskryptor |
buf | Wskaźnik na bufor |
len | Długość bufora |
|
static |
Sposób rozwiązywania nazw serwerów.
|
static |
Funkcja rozpoczynająca rozwiązywanie nazwy.
|
static |
Funkcja zwalniająca zasoby po rozwiązaniu nazwy.