14192
|
1 #ifndef _QQ_QQ_SEND_FILE_H_
|
|
2 #define _QQ_QQ_SEND_FILE_H_
|
|
3
|
|
4 #include "ft.h"
|
|
5
|
|
6 typedef struct _ft_info {
|
|
7 guint32 to_uid;
|
|
8 guint16 send_seq;
|
|
9 guint8 file_session_key[16];
|
|
10 guint8 conn_method;
|
|
11 guint32 remote_internet_ip;
|
|
12 guint16 remote_internet_port;
|
|
13 guint16 remote_major_port;
|
|
14 guint32 remote_real_ip;
|
|
15 guint16 remote_minor_port;
|
|
16 guint32 local_internet_ip;
|
|
17 guint16 local_internet_port;
|
|
18 guint16 local_major_port;
|
|
19 guint32 local_real_ip;
|
|
20 guint16 local_minor_port;
|
|
21 /* we use these to control the packets sent or received */
|
|
22 guint32 fragment_num;
|
|
23 guint32 fragment_len;
|
|
24 /* The max index of sending/receiving fragment
|
|
25 * for sender, it is the lower bolder of a slide window for sending
|
|
26 * for receiver, it seems that packets having a fragment index lower
|
|
27 * than max_fragment_index have been received already
|
|
28 */
|
|
29 guint32 max_fragment_index;
|
|
30 guint32 window;
|
|
31
|
|
32 /* It seems that using xfer's function is not enough for our
|
|
33 * transfer module. So I will use our own structure instead
|
|
34 * of xfer provided
|
|
35 */
|
|
36 int major_fd;
|
|
37 int minor_fd;
|
|
38 int sender_fd;
|
|
39 int recv_fd;
|
|
40 union {
|
|
41 FILE *dest_fp;
|
|
42 guint8 *buffer;
|
|
43 };
|
|
44 gboolean use_major;
|
|
45 } ft_info;
|
|
46
|
|
47 void qq_process_recv_file_accept(guint8 *data, guint8 **cursor, gint data_len,
|
|
48 guint32 sender_uid, GaimConnection *gc);
|
|
49 void qq_process_recv_file_reject(guint8 *data, guint8 **cursor, gint data_len,
|
|
50 guint32 sender_uid, GaimConnection *gc);
|
|
51 void qq_process_recv_file_cancel(guint8 *data, guint8 **cursor, gint data_len,
|
|
52 guint32 sender_uid, GaimConnection *gc);
|
|
53 void qq_process_recv_file_request(guint8 *data, guint8 **cursor, gint data_len,
|
|
54 guint32 sender_uid, GaimConnection *gc);
|
|
55 void qq_process_recv_file_notify(guint8 *data, guint8 **cursor, gint data_len,
|
|
56 guint32 sender_uid, GaimConnection *gc);
|
|
57 gboolean qq_can_receive_file(GaimConnection *gc, const char *who);
|
|
58 void qq_send_file(GaimConnection *gc, const char *who, const char *file);
|
|
59 void qq_get_conn_info(guint8 *data, guint8 **cursor, gint data_len, ft_info *info);
|
|
60 gint qq_fill_conn_info(guint8 *data, guint8 **cursor, ft_info *info);
|
14242
|
61 gssize _qq_xfer_write(const guint8 *buf, size_t len, GaimXfer *xfer);
|
|
62
|
14192
|
63 #endif
|