resolver.c File Reference

Funkcje rozwiązywania nazw. More...


Functions

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)
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, gg_resolver_t type)
 Odczytuje dane z procesu/wątku rozwiązywania nazw.

Variables

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.


Detailed Description

Funkcje rozwiązywania nazw.


Function Documentation

int gg_gethostbyname_real ( const char *  hostname,
struct in_addr **  result,
unsigned int *  count,
int  pthread 
)

For internal use only.

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.

Parameters:
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
Returns:
0 jeśli się powiodło, -1 w przypadku błędu

static int gg_resolver_run ( int  fd,
const char *  hostname 
) [static]

For internal use only.

Rozwiązuje nazwę i zapisuje wynik do podanego gniazda.

Parameters:
fd Deskryptor gniazda
hostname Nazwa serwera
Returns:
0 jeśli się powiodło, -1 w przypadku błędu

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

For internal use only.

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ę.

Parameters:
hostname Nazwa serwera
Returns:
Zaalokowana struktura 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.

Parameters:
gs Struktura sesji
type Sposób rozwiązywania nazw (patrz Rozwiązywanie nazw)
Returns:
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.

Parameters:
gs Struktura sesji
Returns:
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.

Parameters:
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.

Returns:
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.

Parameters:
gh Struktura połączenia
type Sposób rozwiązywania nazw (patrz Rozwiązywanie nazw)
Returns:
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.

Parameters:
gh Struktura połączenia
Returns:
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.

Parameters:
gh Struktura sesji
resolver_start Funkcja rozpoczynająca rozwiązywanie nazwy
resolver_cleanup Funkcja zwalniająca zasoby
Returns:
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.

Parameters:
type Sposób rozwiązywania nazw (patrz Rozwiązywanie nazw)
Returns:
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.

Returns:
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.

Parameters:
resolver_start Funkcja rozpoczynająca rozwiązywanie nazwy
resolver_cleanup Funkcja zwalniająca zasoby
Patrz gg_session_set_custom_resolver.

Returns:
0 jeśli się powiodło, -1 w przypadku błędu

int gg_resolver_recv ( int  fd,
void *  buf,
size_t  len,
gg_resolver_t  type 
)

Odczytuje dane z procesu/wątku rozwiązywania nazw.

Parameters:
fd Deskryptor
buf Wskaźnik na bufor
len Długość bufora
type Sposób rozwiązywania nazw
Returns:
Patrz recv() i read().


Variable Documentation

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.


Generated on Sat Feb 4 03:01:16 2012 for libgadu by  doxygen 1.5.6