view src/protocols/qq/send_file.h @ 13968:6fc412e59214

[gaim-migrate @ 16525] A bunch of little things * Use GAIM_CONNECTION_IS_VALID(gc) in a lot of places where we were doing g_list_find(gaim_connections_get_all(), gc) * Get rid of a lot of places where we were doing g_list_find(gaim_connections_get_all(), gc). The handle used by the request API ensures that the ok and cancel callback functions won't be called if the gc is destroyed. However, GAIM_CONNECTION_IS_VALID(gc) is still very important for callback functions where we can't cancel the request. For example, gaim_proxy_connect() callback functions. * "Added" a function to Yahoo! that should help us notice when our buddies change their buddy icon/display picture * Some comments in a few places * Changed GAIM_CONNECTION_IS_VALID(gc) to only look through the list of "all" connections and not the list of "connecting" connections. Some time ago we changed how this was done so that the list of "all" connections now includes the "connection" connections. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Thu, 20 Jul 2006 08:11:54 +0000
parents 983fd420e86b
children ef8490f9e823
line wrap: on
line source

#ifndef _QQ_QQ_SEND_FILE_H_
#define _QQ_QQ_SEND_FILE_H_

#include "ft.h"

typedef struct _ft_info {
	guint32 to_uid;
	guint16 send_seq;
	guint8 file_session_key[16];
	guint8 conn_method;
	guint32 remote_internet_ip;
	guint16 remote_internet_port;
	guint16 remote_major_port;
	guint32 remote_real_ip;
	guint16 remote_minor_port;
	guint32 local_internet_ip;
	guint16 local_internet_port;
	guint16 local_major_port;
	guint32 local_real_ip;
	guint16 local_minor_port;
	/* we use these to control the packets sent or received */
	guint32 fragment_num;
	guint32 fragment_len;
	/* The max index of sending/receiving fragment
	 * for sender, it is the lower bolder of a slide window for sending
	 * for receiver, it seems that packets having a fragment index lower
	 * than max_fragment_index have been received already
	 */
	guint32 max_fragment_index;
	guint32 window;

	/* It seems that using xfer's function is not enough for our
	 * transfer module. So I will use our own structure instead
	 * of xfer provided
	 */
	int major_fd;
	int minor_fd;
	int sender_fd;
	int recv_fd;
	union {
		FILE *dest_fp;
		guint8 *buffer;
	};
	gboolean use_major;
} ft_info;

void qq_process_recv_file_accept
	(guint8 * data, guint8 ** cursor, gint data_len, guint32 sender_uid,
	 GaimConnection * gc);
void qq_process_recv_file_reject
	(guint8 * data, guint8 ** cursor, gint data_len, guint32 sender_uid,
	 GaimConnection * gc);
void qq_process_recv_file_cancel
	(guint8 * data, guint8 ** cursor, gint data_len, guint32 sender_uid,
	 GaimConnection * gc);
void qq_process_recv_file_request
	(guint8 * data, guint8 ** cursor, gint data_len, guint32 sender_uid,
	 GaimConnection * gc);
void qq_process_recv_file_notify
	(guint8 * data, guint8 ** cursor, gint data_len, guint32 sender_uid,
	 GaimConnection * gc);
gboolean qq_can_receive_file(GaimConnection *gc, const char *who);
void qq_send_file(GaimConnection *gc, const char *who, const char *file);
void qq_get_conn_info(guint8 *data, guint8 **cursor, gint data_len, ft_info *info);
gint qq_fill_conn_info(guint8 *data, guint8 **cursor, ft_info *info);
#endif