libgadu 1.12.2

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

- Lista plików
- Globalne

Definicje | Funkcje
Dokumentacja pliku dcc.c

Obsługa połączeń bezpośrednich do wersji Gadu-Gadu 6.x. Więcej...

## Definicje
#define | gg_dcc_read(fd, buf, size)
#define | gg_dcc_write(fd, buf, size)

## Funkcje
static void | gg_dcc_debug_data (const char *prefix, int fd, const void *buf, unsigned int size)
int | gg_dcc_request (struct gg_session *sess, uin_t uin)
| Wysyła żądanie zwrotnego połączenia bezpośredniego. Więcej...
static void | gg_dcc_fill_filetime (uint32_t ut, uint32_t *ft)
int | gg_dcc_fill_file_info (struct gg_dcc *d, const char *filename)
| Wypełnia pola struktury `gg_dcc` niezbędne do wysłania pliku. Więcej...
int | gg_dcc_fill_file_info2 (struct gg_dcc *d, const char *filename, const char *local_filename)
| Wypełnia pola struktury `gg_dcc` niezbędne do wysłania pliku. Więcej...
static struct gg_dcc * | gg_dcc_transfer (uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin, int type)
struct gg_dcc * | gg_dcc_get_file (uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin)
| Rozpoczyna odbieranie pliku przez zwrotne połączenie bezpośrednie. Więcej...
struct gg_dcc * | gg_dcc_send_file (uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin)
| Rozpoczyna wysyłanie pliku. Więcej...
struct gg_dcc * | gg_dcc_voice_chat (uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin)
| Rozpoczyna połączenie głosowe. Więcej...
void | gg_dcc_set_type (struct gg_dcc *d, int type)
| Ustawia typ przychodzącego połączenia bezpośredniego. Więcej...
static int | gg_dcc_callback (struct gg_dcc *d)
struct gg_dcc * | gg_dcc_socket_create (uin_t uin, uint16_t port)
| Tworzy gniazdo nasłuchujące dla połączeń bezpośrednich. Więcej...
int | gg_dcc_voice_send (struct gg_dcc *d, char *buf, int length)
| Wysyła ramkę danych połączenia głosowego. Więcej...
struct gg_event * | gg_dcc_watch_fd (struct gg_dcc *h)
| Funkcja wywoływana po zaobserwowaniu zmian na deskryptorze połączenia. Więcej...
void | gg_dcc_free (struct gg_dcc *d)
| Zwalnia zasoby używane przez połączenie bezpośrednie. Więcej...

## Opis szczegółowy

Obsługa połączeń bezpośrednich do wersji Gadu-Gadu 6.x.

## Dokumentacja definicji

#define gg_dcc_read | ( |  | fd,
|  |  | buf,
|  |  | size
| ) |  |

Wartość:
{ \
int _tmp = recv(fd, buf, size, 0); \
\
if (_tmp < (int) size) { \
if (_tmp == -1) { \
gg_debug(GG_DEBUG_MISC, "// gg_dcc_watch_fd() recv() failed " \
"(errno=%d, %s)\n", errno, strerror(errno)); \
} else if (_tmp == 0) { \
gg_debug(GG_DEBUG_MISC, "// gg_dcc_watch_fd() recv() failed, " \
"connection broken\n"); \
} else { \
gg_debug(GG_DEBUG_MISC, "// gg_dcc_watch_fd() recv() failed " \
"(%d bytes, %" GG_SIZE_FMT " needed)\n", \
_tmp, size); \
} \
e->type = GG_EVENT_DCC_ERROR; \
e->event.dcc_error = GG_ERROR_DCC_HANDSHAKE; \
return e; \
} \
gg_dcc_debug_data("read", fd, buf, size); \
}
gg_debug
void gg_debug(int level, const char *format,...)
Definition: debug.c:123
GG_SIZE_FMT
#define GG_SIZE_FMT
Definition: internal.h:60
GG_DEBUG_MISC
#define GG_DEBUG_MISC
Rejestracja różnych informacji.
Definition: libgadu.h:1588
gg_dcc_debug_data
static void gg_dcc_debug_data(const char *prefix, int fd, const void *buf, unsigned int size)
Definition: dcc.c:47
GG_ERROR_DCC_HANDSHAKE
Błąd negocjacji.
Definition: libgadu.h:950
GG_EVENT_DCC_ERROR
Błąd połączenia bezpośredniego (6.x)
Definition: libgadu.h:865

Odbiera dane z połączenia bezpośredniego z obsługą błędów.

Parametry

  fd | Deskryptor gniazda
  buf | Bufor na dane
  size | Rozmiar bufora na dane

#define gg_dcc_write | ( |  | fd,
|  |  | buf,
|  |  | size
| ) |  |

Wartość:
{ \
int write_res; \
gg_dcc_debug_data("write", fd, buf, size); \
write_res = send(fd, buf, size, 0); \
if (write_res < (int) size) { \
if (write_res == -1) { \
gg_debug(GG_DEBUG_MISC, "// gg_dcc_watch_fd() send() " \
"failed (errno=%d, %s)\n", errno, strerror(errno)); \
} else { \
gg_debug(GG_DEBUG_MISC, "// gg_dcc_watch_fd() send() " \
"failed (%" GG_SIZE_FMT " needed, %d done)\n", \
size, write_res); \
} \
e->type = GG_EVENT_DCC_ERROR; \
e->event.dcc_error = GG_ERROR_DCC_HANDSHAKE; \
return e; \
} \
}
gg_debug
void gg_debug(int level, const char *format,...)
Definition: debug.c:123
GG_SIZE_FMT
#define GG_SIZE_FMT
Definition: internal.h:60
GG_DEBUG_MISC
#define GG_DEBUG_MISC
Rejestracja różnych informacji.
Definition: libgadu.h:1588
gg_dcc_debug_data
static void gg_dcc_debug_data(const char *prefix, int fd, const void *buf, unsigned int size)
Definition: dcc.c:47
GG_ERROR_DCC_HANDSHAKE
Błąd negocjacji.
Definition: libgadu.h:950
GG_EVENT_DCC_ERROR
Błąd połączenia bezpośredniego (6.x)
Definition: libgadu.h:865

Wysyła dane do połączenia bezpośredniego z obsługą błędów.

Parametry

  fd | Deskryptor gniazda
  buf | Bufor z danymi
  size | Rozmiar bufora z danymi

## Dokumentacja funkcji

static void gg_dcc_debug_data | ( | const char * | prefix,
|  | int | fd,
|  | const void * | buf,
|  | unsigned int | size
| ) |  |
| static

Przekazuje zawartość pakietu do odpluskwiania.

Parametry

  prefix | Prefiks informacji
  fd | Deskryptor gniazda
  buf | Bufor z danumi
  size | Rozmiar bufora z danymi

static void gg_dcc_fill_filetime | ( | uint32_t | ut,
|  | uint32_t * | ft
| ) |  |
| static

Zamienia znacznik czasu w postaci uniksowej na format API WIN32.

Nota
  Funkcja działa jedynie gdy kompilator obsługuje typ danych `long` `long`.

Parametry

  ut | Czas w postaci uniksowej
  ft | Czas w postaci API WIN32

static struct gg_dcc* gg_dcc_transfer | ( | uint32_t | ip,
|  | uint16_t | port,
|  | uin_t | my_uin,
|  | uin_t | peer_uin,
|  | int | type
| ) |  |
| static

Rozpoczyna połączenie bezpośrednie z danym klientem.

Parametry

  ip | Adres IP odbiorcy
  port | Port odbiorcy
  my_uin | Własny numer
  peer_uin | Numer odbiorcy
  type | Rodzaj połączenia (`GG_SESSION_DCC_SEND` lub `GG_SESSION_DCC_GET`)

Zwraca
  Struktura `gg_dcc` lub `NULL` w przypadku błędu

static int gg_dcc_callback | ( | struct gg_dcc * | d | ) |
| static

Funkcja zwrotna połączenia bezpośredniego.

Pole `callback` struktury `gg_dcc` zawiera wskaźnik do tej funkcji. Wywołuje ona `gg_dcc_watch_fd()` i zachowuje wynik w polu `event`.

Nota
  Funkcjonalność funkcji zwrotnej nie jest już wspierana.

Parametry

  d | Struktura połączenia

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