libgadu 1.12.2

- Strona główna
- Dodatkowe strony
- Moduły
- Struktury Danych
- Pliki

- Lista plików
- Globalne

Funkcje | Zmienne
Dokumentacja pliku resolver.c

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

## Opis szczegółowy

Funkcje rozwiązywania nazw.

## Dokumentacja funkcji

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

static int gg_resolver_run | ( | int | fd,
|  | const char * | hostname,
|  | int | pthread
| ) |  |
| static

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

Nota
  Użycie logowania w tej funkcji może mieć negatywny wpływ na aplikacje jednowątkowe korzystające.

Parametry

  fd | Deskryptor gniazda
  hostname | Nazwa serwera
  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 | ) |

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

Parametry

  hostname | Nazwa serwera

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

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

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

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

Patrz gg_session_set_custom_resolver.

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

int gg_resolver_recv | ( | int | fd,
|  | void * | buf,
|  | size_t | len
| ) |  |

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

Parametry

  fd | Deskryptor
  buf | Wskaźnik na bufor
  len | Długość bufora

Zwraca
  Patrz recv() i read().

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