libgadu  1.12.2
Definicje | Funkcje
Dokumentacja pliku dcc.c

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

Wykres zależności załączania dla dcc.c:

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, struct gg_dcc *d)
 
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_dccgg_dcc_transfer (uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin, int type)
 
struct gg_dccgg_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_dccgg_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_dccgg_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_dccgg_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_eventgg_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

◆ gg_dcc_read

#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); \
}
#define GG_DEBUG_MISC
Rejestracja różnych informacji.
Definition: libgadu.h:1588
@ GG_EVENT_DCC_ERROR
Błąd połączenia bezpośredniego (6.x)
Definition: libgadu.h:865
#define GG_SIZE_FMT
Definition: internal.h:60
@ GG_ERROR_DCC_HANDSHAKE
Błąd negocjacji.
Definition: libgadu.h:950

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

Parametry
fdDeskryptor gniazda
bufBufor na dane
sizeRozmiar bufora na dane

◆ gg_dcc_write

#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; \
} \
}

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

Parametry
fdDeskryptor gniazda
bufBufor z danymi
sizeRozmiar bufora z danymi

Dokumentacja funkcji

◆ gg_dcc_debug_data()

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

Przekazuje zawartość pakietu do odpluskwiania.

Parametry
prefixPrefiks informacji
fdDeskryptor gniazda
bufBufor z danumi
sizeRozmiar bufora z danymi

◆ gg_dcc_fill_filetime()

static void gg_dcc_fill_filetime ( uint32_t  ut,
struct gg_dcc d 
)
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
utCzas w postaci uniksowej
ftCzas w postaci API WIN32

◆ gg_dcc_transfer()

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
ipAdres IP odbiorcy
portPort odbiorcy
my_uinWłasny numer
peer_uinNumer odbiorcy
typeRodzaj połączenia (GG_SESSION_DCC_SEND lub GG_SESSION_DCC_GET)
Zwraca
Struktura gg_dcc lub NULL w przypadku błędu

◆ gg_dcc_callback()

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
dStruktura połączenia
Zwraca
0 jeśli się powiodło, -1 w przypadku błędu