Dokumentacja pliku dcc.c


Opis szczegółowy

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


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.
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.
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.
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.
struct gg_dccgg_dcc_send_file (uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin)
 Rozpoczyna wysyłanie pliku.
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.
void gg_dcc_set_type (struct gg_dcc *d, int type)
 Ustawia typ przychodzącego połączenia bezpośredniego.
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.
int gg_dcc_voice_send (struct gg_dcc *d, char *buf, int length)
 Wysyła ramkę danych połączenia głosowego.
struct gg_eventgg_dcc_watch_fd (struct gg_dcc *h)
 Funkcja wywoływana po zaobserwowaniu zmian na deskryptorze połączenia.
void gg_dcc_free (struct gg_dcc *d)
 Zwalnia zasoby używane przez połączenie bezpośrednie.


Dokumentacja definicji

#define gg_dcc_read ( fd,
buf,
size   ) 

Wartość:

{ \
        int tmp = read(fd, buf, size); \
        \
        if (tmp < (int) size) { \
                if (tmp == -1) { \
                        gg_debug(GG_DEBUG_MISC, "// gg_dcc_watch_fd() read() failed (errno=%d, %s)\n", errno, strerror(errno)); \
                } else if (tmp == 0) { \
                        gg_debug(GG_DEBUG_MISC, "// gg_dcc_watch_fd() read() failed, connection broken\n"); \
                } else { \
                        gg_debug(GG_DEBUG_MISC, "// gg_dcc_watch_fd() read() failed (%d bytes, %d 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); \
}

Tylko do użytku wewnętrznego.

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 tmp; \
        gg_dcc_debug_data("write", fd, buf, size); \
        tmp = write(fd, buf, size); \
        if (tmp < (int) size) { \
                if (tmp == -1) { \
                        gg_debug(GG_DEBUG_MISC, "// gg_dcc_watch_fd() write() failed (errno=%d, %s)\n", errno, strerror(errno)); \
                } else { \
                        gg_debug(GG_DEBUG_MISC, "// gg_dcc_watch_fd() write() failed (%d needed, %d done)\n", size, tmp); \
                } \
                e->type = GG_EVENT_DCC_ERROR; \
                e->event.dcc_error = GG_ERROR_DCC_HANDSHAKE; \
                return e; \
        } \
}

Tylko do użytku wewnętrznego.

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]

Tylko do użytku wewnętrznego.

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]

Tylko do użytku wewnętrznego.

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, read]

Tylko do użytku wewnętrznego.

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]

Tylko do użytku wewnętrznego.

Funkcja zwrotna połączenia bezpośredniego.

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

Nota:
Funkcjonalność funkcjo zwrotnej nie jest już wspierana.
Parametry:
d Struktura połączenia
Zwraca:
0 jeśli się powiodło, -1 w przypadku błędu


Wygenerowano Sun Dec 7 03:27:43 2008 dla libgadu programem  doxygen 1.5.6