libgadu 1.12.2

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

- Lista plików
- Globalne

Definicje | Funkcje
Dokumentacja pliku dcc7.c

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

## Definicje
#define | gg_debug_dcc(dcc, level, fmt...) gg_debug_session(((dcc) != NULL) ? (dcc)->sess : NULL, level, fmt)
#define | gg_debug_dump_dcc(dcc, level, buf, len) gg_debug_dump(((dcc) != NULL) ? (dcc)->sess : NULL, level, buf, len)

## Funkcje
static int | gg_dcc7_session_add (struct gg_session *sess, struct gg_dcc7 *dcc)
static int | gg_dcc7_session_remove (struct gg_session *sess, struct gg_dcc7 *dcc)
static struct gg_dcc7 * | gg_dcc7_session_find (struct gg_session *sess, gg_dcc7_id_t id, uin_t uin)
static int | gg_dcc7_get_relay_addr (struct gg_dcc7 *dcc)
static int | gg_dcc7_connect (struct gg_dcc7 *dcc)
static int | gg_dcc7_listen (struct gg_dcc7 *dcc, uint32_t addr, uint16_t port)
static int | gg_dcc7_listen_and_send_info (struct gg_dcc7 *dcc)
static int | gg_dcc7_reverse_connect (struct gg_dcc7 *dcc)
static int | gg_dcc7_request_id (struct gg_session *sess, uint32_t type)
static struct gg_dcc7 * | gg_dcc7_send_file_common (struct gg_session *sess, uin_t rcpt, int fd, size_t size, const char *filename1250, const char *hash, int seek)
struct gg_dcc7 * | gg_dcc7_send_file (struct gg_session *sess, uin_t rcpt, const char *filename, const char *filename1250, const char *hash)
| Rozpoczyna wysyłanie pliku o danej nazwie. Więcej...
struct gg_dcc7 * | gg_dcc7_send_file_fd (struct gg_session *sess, uin_t rcpt, int fd, size_t size, const char *filename1250, const char *hash)
int | gg_dcc7_accept (struct gg_dcc7 *dcc, unsigned int offset)
| Potwierdza chęć odebrania pliku. Więcej...
int | gg_dcc7_reject (struct gg_dcc7 *dcc, int reason)
| Odrzuca próbę przesłania pliku. Więcej...
int | gg_dcc7_handle_id (struct gg_session *sess, struct gg_event *e, const void *payload, int len)
int | gg_dcc7_handle_accept (struct gg_session *sess, struct gg_event *e, const void *payload, int len)
int | gg_dcc7_handle_info (struct gg_session *sess, struct gg_event *e, const void *payload, int len)
int | gg_dcc7_handle_reject (struct gg_session *sess, struct gg_event *e, const void *payload, int len)
int | gg_dcc7_handle_new (struct gg_session *sess, struct gg_event *e, const void *payload, int len)
static int | gg_dcc7_postauth_fixup (struct gg_dcc7 *dcc)
struct gg_event * | gg_dcc7_watch_fd (struct gg_dcc7 *dcc)
| Funkcja wywoływana po zaobserwowaniu zmian na deskryptorze połączenia. Więcej...
void | gg_dcc7_free (struct gg_dcc7 *dcc)
| Zwalnia zasoby używane przez połączenie bezpośrednie. Więcej...

## Opis szczegółowy

Obsługa połączeń bezpośrednich od wersji Gadu-Gadu 7.x.

## Dokumentacja definicji

#define gg_debug_dcc | ( |  | dcc,
|  |  | level,
|  |  | fmt...
| ) |  | gg_debug_session(((dcc) != NULL) ? (dcc)->sess : NULL, level, fmt)

#define gg_debug_dump_dcc | ( |  | dcc,
|  |  | level,
|  |  | buf,
|  |  | len
| ) |  | gg_debug_dump(((dcc) != NULL) ? (dcc)->sess : NULL, level, buf, len)

## Dokumentacja funkcji

static int gg_dcc7_session_add | ( | struct gg_session * | sess,
|  | struct gg_dcc7 * | dcc
| ) |  |
| static

Dodaje połączenie bezpośrednie do sesji.

Parametry

  sess | Struktura sesji
  dcc | Struktura połączenia

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

static int gg_dcc7_session_remove | ( | struct gg_session * | sess,
|  | struct gg_dcc7 * | dcc
| ) |  |
| static

Usuwa połączenie bezpośrednie z sesji.

Parametry

  sess | Struktura sesji
  dcc | Struktura połączenia

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

static struct gg_dcc7* gg_dcc7_session_find | ( | struct gg_session * | sess,
|  | gg_dcc7_id_t | id,
|  | uin_t | uin
| ) |  |
| static

Zwraca strukturę połączenia o danym identyfikatorze.

Parametry

  sess | Struktura sesji
  id | Identyfikator połączenia
  uin | Numer nadawcy lub odbiorcy

Zwraca
  Struktura połączenia lub `NULL` jeśli nie znaleziono

static int gg_dcc7_get_relay_addr | ( | struct gg_dcc7 * | dcc | ) |
| static

Rozpoczyna proces pobierania adresu

Parametry

  dcc | Struktura połączenia

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

static int gg_dcc7_connect | ( | struct gg_dcc7 * | dcc | ) |
| static

Nawiązuje połączenie bezpośrednie

Parametry

  dcc | Struktura połączenia

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

static int gg_dcc7_listen | ( | struct gg_dcc7 * | dcc,
|  | uint32_t | addr,
|  | uint16_t | port
| ) |  |
| static

Tworzy gniazdo nasłuchujące dla połączenia bezpośredniego

Parametry

  dcc | Struktura połączenia
  addr | Preferowany adres (jeśli równy 0, nasłuchujemy na wszystkich interfejsach)
  port | Preferowany port (jeśli równy 0, nasłuchujemy na losowym)

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

static int gg_dcc7_listen_and_send_info | ( | struct gg_dcc7 * | dcc | ) |
| static

Tworzy gniazdo nasłuchujące i wysyła jego parametry

Parametry

  dcc | Struktura połączenia

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

static int gg_dcc7_reverse_connect | ( | struct gg_dcc7 * | dcc | ) |
| static

Odwraca połączenie po nieudanym connect()

Parametry

  dcc | Struktura połączenia

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

static int gg_dcc7_request_id | ( | struct gg_session * | sess,
|  | uint32_t | type
| ) |  |
| static

Wysyła do serwera żądanie nadania identyfikatora sesji

Parametry

  sess | Struktura sesji
  type | Rodzaj połączenia (`GG_DCC7_TYPE_FILE` lub `GG_DCC7_TYPE_VOICE`)

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

int gg_dcc7_handle_id | ( | struct gg_session * | sess,
|  | struct gg_event * | e,
|  | const void * | payload,
|  | int | len
| ) |  |

Obsługuje pakiet identyfikatora połączenia bezpośredniego.

Parametry

  sess | Struktura sesji
  e | Struktura zdarzenia
  payload | Treść pakietu
  len | Długość pakietu

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

int gg_dcc7_handle_accept | ( | struct gg_session * | sess,
|  | struct gg_event * | e,
|  | const void * | payload,
|  | int | len
| ) |  |

Obsługuje pakiet akceptacji połączenia bezpośredniego.

Parametry

  sess | Struktura sesji
  e | Struktura zdarzenia
  payload | Treść pakietu
  len | Długość pakietu

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

int gg_dcc7_handle_info | ( | struct gg_session * | sess,
|  | struct gg_event * | e,
|  | const void * | payload,
|  | int | len
| ) |  |

Obsługuje pakiet informacji o połączeniu bezpośrednim.

Parametry

  sess | Struktura sesji
  e | Struktura zdarzenia
  payload | Treść pakietu
  len | Długość pakietu

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

int gg_dcc7_handle_reject | ( | struct gg_session * | sess,
|  | struct gg_event * | e,
|  | const void * | payload,
|  | int | len
| ) |  |

Obsługuje pakiet odrzucenia połączenia bezpośredniego.

Parametry

  sess | Struktura sesji
  e | Struktura zdarzenia
  payload | Treść pakietu
  len | Długość pakietu

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

int gg_dcc7_handle_new | ( | struct gg_session * | sess,
|  | struct gg_event * | e,
|  | const void * | payload,
|  | int | len
| ) |  |

Obsługuje pakiet nowego połączenia bezpośredniego.

Parametry

  sess | Struktura sesji
  e | Struktura zdarzenia
  payload | Treść pakietu
  len | Długość pakietu

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

static int gg_dcc7_postauth_fixup | ( | struct gg_dcc7 * | dcc | ) |
| static

Ustawia odpowiednie stany wewnętrzne w zależności od rodzaju połączenia.

Parametry

  dcc | Struktura połączenia

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