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_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. | |
| 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. | |
| 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. | |
| 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_dcc * | gg_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_event * | gg_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. | |
| #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.
| 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.
| fd | Deskryptor gniazda | |
| buf | Bufor z danymi | |
| size | Rozmiar bufora z danymi |
| 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.
| 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.
long long.| 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.
| 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) |
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.
| d | Struktura połączenia |
1.5.6