|
| 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.
|
| |
| gg_resolver_t | gg_session_get_resolver (struct gg_session *gs) |
| | Zwraca sposób rozwiązywania nazw w sesji.
|
| |
| 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.
|
| |
| int | gg_http_set_resolver (struct gg_http *gh, gg_resolver_t type) |
| | Ustawia sposób rozwiązywania nazw połączenia HTTP.
|
| |
| gg_resolver_t | gg_http_get_resolver (struct gg_http *gh) |
| | Zwraca sposób rozwiązywania nazw połączenia HTTP.
|
| |
| 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.
|
| |
| int | gg_global_set_resolver (gg_resolver_t type) |
| | Ustawia sposób rozwiązywania nazw globalnie dla biblioteki.
|
| |
| gg_resolver_t | gg_global_get_resolver (void) |
| | Zwraca sposób rozwiązywania nazw globalnie dla biblioteki.
|
| |
| 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.
|
| |
| int | gg_resolver_recv (int fd, void *buf, size_t len) |
| | Odczytuje dane z procesu/wątku rozwiązywania nazw.
|
| |
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.
- Parametry
-
| 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 |
- Zwraca
- 0 jeśli się powiodło, -1 w przypadku błędu
| 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.
- Parametry
-
| 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ązania
Parametry 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.
- Zwraca
- 0 jeśli się powiodło, -1 w przypadku błędu