Dokumentacja pliku resolver.c

Funkcje rozwiązywania nazw. Więcej...

Struktury danych

struct  gg_resolver_fork_data

Funkcje

int gg_gethostbyname_real (const char *hostname, struct in_addr *addr, int pthread)
struct in_addr * gg_gethostbyname (const char *hostname)
static int gg_resolver_fork_start (int *fd, void **priv_data, const char *hostname)
void gg_resolver_fork_cleanup (void **priv_data, int force)
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.

Zmienne

static gg_resolver_t gg_global_resolver_type = GG_RESOLVER_DEFAULT
 Sposób rozwiązywania nazw serwerów.
static int(* gg_global_resolver_start )(int *fd, void **private_data, const char *hostname)
 Funkcja rozpoczynająca rozwiązywanie nazwy.
static void(* gg_global_resolver_cleanup )(void **private_data, int force)
 Funkcja zwalniająca zasoby po rozwiązaniu nazwy.

Opis szczegółowy

Funkcje rozwiązywania nazw.


Dokumentacja funkcji

int gg_gethostbyname_real ( const char *  hostname,
struct in_addr *  addr,
int  pthread 
)

Tylko do użytku wewnętrznego.

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.

Parametry:
hostname Nazwa serwera
addr Wskaźnik na rezultat rozwiązywania nazwy
pthread Flaga blokowania unicestwiania wątku podczas alokacji pamięci
Zwraca:
0 jeśli się powiodło, -1 w przypadku błędu

struct in_addr* gg_gethostbyname ( const char *  hostname  )  [read]

Tylko do użytku wewnętrznego.

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.

Parametry:
hostname Nazwa serwera
Zwraca:
Zaalokowana struktura in_addr lub NULL w przypadku błędu.

static int gg_resolver_fork_start ( int *  fd,
void **  priv_data,
const char *  hostname 
) [static]

Tylko do użytku wewnętrznego.

Rozwiązuje nazwę serwera w osobnym procesie.Połączenia asynchroniczne nie mogą blokować procesu w trakcie rozwiązywania nazwy serwera. W tym celu tworzony jest potok, nowy proces i dopiero w nim przeprowadzane jest rozwiązywanie nazwy. Deskryptor strony do odczytu zapisuje się w strukturze sieci i czeka na dane w postaci struktury in_addr. Jeśli nie znaleziono nazwy, zwracana jest INADDR_NONE.

Parametry:
fd Wskaźnik na zmienną, gdzie zostanie umieszczony deskryptor potoku
priv_data Wskaźnik na zmienną, gdzie zostanie umieszczony wskaźnik do numeru procesu potomnego rozwiązującego nazwę
hostname Nazwa serwera do rozwiązania
Zwraca:
0 jeśli się powiodło, -1 w przypadku błędu

void gg_resolver_fork_cleanup ( void **  priv_data,
int  force 
)

Tylko do użytku wewnętrznego.

Usuwanie zasobów po procesie rozwiązywaniu nazwy.Funkcja wywoływana po zakończeniu rozwiązanywania nazwy lub przy zwalnianiu zasobów sesji podczas rozwiązywania nazwy.

Parametry:
priv_data Wskaźnik na zmienną przechowującą wskaźnik do prywatnych danych
force Flaga usuwania zasobów przed zakończeniem działania

int gg_session_set_resolver ( struct gg_session gs,
gg_resolver_t  type 
)

Ustawia sposób rozwiązywania nazw w sesji.

Parametry:
gs Struktura sesji
type Sposób rozwiązywania nazw (patrz Rozwiązywanie nazw)
Zwraca:
0 jeśli się powiodło, -1 w przypadku błędu
gg_resolver_t gg_session_get_resolver ( struct gg_session gs  ) 

Zwraca sposób rozwiązywania nazw w sesji.

Parametry:
gs Struktura sesji
Zwraca:
Sposób rozwiązywania nazw
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
Zwraca:
0 jeśli się powiodło, -1 w przypadku błędu
int gg_http_set_resolver ( struct gg_http gh,
gg_resolver_t  type 
)

Ustawia sposób rozwiązywania nazw połączenia HTTP.

Parametry:
gh Struktura połączenia
type Sposób rozwiązywania nazw (patrz Rozwiązywanie nazw)
Zwraca:
0 jeśli się powiodło, -1 w przypadku błędu
gg_resolver_t gg_http_get_resolver ( struct gg_http gh  ) 

Zwraca sposób rozwiązywania nazw połączenia HTTP.

Parametry:
gh Struktura połączenia
Zwraca:
Sposób rozwiązywania nazw
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.

Parametry:
gh Struktura sesji
resolver_start Funkcja rozpoczynająca rozwiązywanie nazwy
resolver_cleanup Funkcja zwalniająca zasoby
Zwraca:
0 jeśli się powiodło, -1 w przypadku błędu
int gg_global_set_resolver ( gg_resolver_t  type  ) 

Ustawia sposób rozwiązywania nazw globalnie dla biblioteki.

Parametry:
type Sposób rozwiązywania nazw (patrz Rozwiązywanie nazw)
Zwraca:
0 jeśli się powiodło, -1 w przypadku błędu
gg_resolver_t gg_global_get_resolver ( void   ) 

Zwraca sposób rozwiązywania nazw globalnie dla biblioteki.

Zwraca:
Sposób rozwiązywania nazw
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.

Parametry:
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 potoku
  • "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 jednostronną komunikację i przekazać go w parametrze fd. 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

Dokumentacja zmiennych

gg_resolver_t gg_global_resolver_type = GG_RESOLVER_DEFAULT [static]

Sposób rozwiązywania nazw serwerów.

int(* gg_global_resolver_start)(int *fd, void **private_data, const char *hostname) [static]

Funkcja rozpoczynająca rozwiązywanie nazwy.

void(* gg_global_resolver_cleanup)(void **private_data, int force) [static]

Funkcja zwalniająca zasoby po rozwiązaniu nazwy.

 All Struktury Danych Pliki Funkcje Zmienne Definicje typów Wyliczenia Wartości wyliczeń Definicje

Wygenerowano Sat Dec 5 21:53:34 2009 dla libgadu programem  doxygen 1.6.1