ft.h
Go to the documentation of this file.
1 
7 /* purple
8  *
9  * Purple is the legal property of its developers, whose names are too numerous
10  * to list here. Please refer to the COPYRIGHT file distributed with this
11  * source distribution.
12  *
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation; either version 2 of the License, or
16  * (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software
25  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
26  */
27 #ifndef _PURPLE_FT_H_
28 #define _PURPLE_FT_H_
29 
30 /**************************************************************************/
32 /**************************************************************************/
33 typedef struct _PurpleXfer PurpleXfer;
34 
35 #include <glib.h>
36 #include <stdio.h>
37 
38 #include "account.h"
39 
43 typedef enum
44 {
50 
54 typedef enum
55 {
64 
71 typedef struct
72 {
73  void (*new_xfer)(PurpleXfer *xfer);
74  void (*destroy)(PurpleXfer *xfer);
75  void (*add_xfer)(PurpleXfer *xfer);
76  void (*update_progress)(PurpleXfer *xfer, double percent);
77  void (*cancel_local)(PurpleXfer *xfer);
78  void (*cancel_remote)(PurpleXfer *xfer);
79 
92  gssize (*ui_write)(PurpleXfer *xfer, const guchar *buffer, gssize size);
93 
107  gssize (*ui_read)(PurpleXfer *xfer, guchar **buffer, gssize size);
108 
121  void (*data_not_sent)(PurpleXfer *xfer, const guchar *buffer, gsize size);
122 
128  void (*add_thumbnail)(PurpleXfer *xfer, const gchar *formats);
130 
135 {
136  guint ref;
141  char *who;
144  char *message;
145  char *filename;
147  size_t size;
149  FILE *dest_fp;
151  char *remote_ip;
155  int fd;
156  int watcher;
158  size_t bytes_sent;
160  time_t start_time;
161  time_t end_time;
172  struct
173  {
174  void (*init)(PurpleXfer *xfer);
175  void (*request_denied)(PurpleXfer *xfer);
176  void (*start)(PurpleXfer *xfer);
177  void (*end)(PurpleXfer *xfer);
178  void (*cancel_send)(PurpleXfer *xfer);
179  void (*cancel_recv)(PurpleXfer *xfer);
180  gssize (*read)(guchar **buffer, PurpleXfer *xfer);
181  gssize (*write)(const guchar *buffer, size_t size, PurpleXfer *xfer);
182  void (*ack)(PurpleXfer *xfer, const guchar *buffer, size_t size);
183  } ops;
184 
186  void *ui_data;
188  void *data;
189 };
190 
191 #ifdef __cplusplus
192 extern "C" {
193 #endif
194 
195 /**************************************************************************/
197 /**************************************************************************/
214  PurpleXferType type, const char *who);
215 
221 GList *purple_xfers_get_all(void);
222 
229 void purple_xfer_ref(PurpleXfer *xfer);
230 
240 void purple_xfer_unref(PurpleXfer *xfer);
241 
251 void purple_xfer_request(PurpleXfer *xfer);
252 
259 void purple_xfer_request_accepted(PurpleXfer *xfer, const char *filename);
260 
267 
276 
285 
295 const char *purple_xfer_get_remote_user(const PurpleXfer *xfer);
296 
305 
314 gboolean purple_xfer_is_canceled(const PurpleXfer *xfer);
315 
323 gboolean purple_xfer_is_completed(const PurpleXfer *xfer);
324 
332 const char *purple_xfer_get_filename(const PurpleXfer *xfer);
333 
341 const char *purple_xfer_get_local_filename(const PurpleXfer *xfer);
342 
350 size_t purple_xfer_get_bytes_sent(const PurpleXfer *xfer);
351 
359 size_t purple_xfer_get_bytes_remaining(const PurpleXfer *xfer);
360 
368 size_t purple_xfer_get_size(const PurpleXfer *xfer);
369 
379 double purple_xfer_get_progress(const PurpleXfer *xfer);
380 
388 unsigned int purple_xfer_get_local_port(const PurpleXfer *xfer);
389 
397 const char *purple_xfer_get_remote_ip(const PurpleXfer *xfer);
398 
406 unsigned int purple_xfer_get_remote_port(const PurpleXfer *xfer);
407 
416 time_t purple_xfer_get_start_time(const PurpleXfer *xfer);
417 
426 time_t purple_xfer_get_end_time(const PurpleXfer *xfer);
427 
434 void purple_xfer_set_completed(PurpleXfer *xfer, gboolean completed);
435 
442 void purple_xfer_set_message(PurpleXfer *xfer, const char *message);
443 
450 void purple_xfer_set_filename(PurpleXfer *xfer, const char *filename);
451 
458 void purple_xfer_set_local_filename(PurpleXfer *xfer, const char *filename);
459 
466 void purple_xfer_set_size(PurpleXfer *xfer, size_t size);
467 
481 void purple_xfer_set_bytes_sent(PurpleXfer *xfer, size_t bytes_sent);
482 
491 
499  gssize (*fnc)(guchar **, PurpleXfer *));
500 
508  gssize (*fnc)(const guchar *, size_t, PurpleXfer *));
509 
517  void (*fnc)(PurpleXfer *, const guchar *, size_t));
518 
525 void purple_xfer_set_request_denied_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
526 
537 void purple_xfer_set_init_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
538 
545 void purple_xfer_set_start_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
546 
553 void purple_xfer_set_end_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
554 
561 void purple_xfer_set_cancel_send_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
562 
569 void purple_xfer_set_cancel_recv_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
570 
579 gssize purple_xfer_read(PurpleXfer *xfer, guchar **buffer);
580 
590 gssize purple_xfer_write(PurpleXfer *xfer, const guchar *buffer, gsize size);
591 
610 void purple_xfer_start(PurpleXfer *xfer, int fd, const char *ip,
611  unsigned int port);
612 
618 void purple_xfer_end(PurpleXfer *xfer);
619 
626 void purple_xfer_add(PurpleXfer *xfer);
627 
634 
641 
654 void purple_xfer_error(PurpleXferType type, PurpleAccount *account, const char *who, const char *msg);
655 
662 
672 void purple_xfer_conversation_write(PurpleXfer *xfer, char *message, gboolean is_error);
673 
683 void purple_xfer_ui_ready(PurpleXfer *xfer);
684 
695 
705 gconstpointer purple_xfer_get_thumbnail(const PurpleXfer *xfer, gsize *len);
706 
714 const gchar *purple_xfer_get_thumbnail_mimetype(const PurpleXfer *xfer);
715 
716 
726 void purple_xfer_set_thumbnail(PurpleXfer *xfer, gconstpointer thumbnail,
727  gsize size, const gchar *mimetype);
728 
738 void purple_xfer_prepare_thumbnail(PurpleXfer *xfer, const gchar *formats);
739 
740 
743 /**************************************************************************/
745 /**************************************************************************/
753 void *purple_xfers_get_handle(void);
754 
758 void purple_xfers_init(void);
759 
763 void purple_xfers_uninit(void);
764 
771 
778 
781 #ifdef __cplusplus
782 }
783 #endif
784 
785 #endif /* _PURPLE_FT_H_ */