|
libgadu 1.11.0
|
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. | |
| 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. | |
Obsługa połączeń bezpośrednich do wersji Gadu-Gadu 6.x.
| #define gg_dcc_read | ( | fd, | |
| buf, | |||
| size | |||
| ) |
{ \
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); \
}
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 | |||
| ) |
{ \
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; \
} \
}
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] |
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] |
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] |
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] |
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.7.3