Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

ft.h

Go to the documentation of this file.
00001 
00025 #ifndef _GAIM_FT_H_
00026 #define _GAIM_FT_H_
00027 
00028 /**************************************************************************/
00030 /**************************************************************************/
00031 typedef struct _GaimXfer GaimXfer;
00032 
00033 #include "account.h"
00034 
00038 typedef enum
00039 {
00040     GAIM_XFER_UNKNOWN = 0,  
00041     GAIM_XFER_SEND,         
00042     GAIM_XFER_RECEIVE       
00044 } GaimXferType;
00045 
00049 typedef enum
00050 {
00051     GAIM_XFER_STATUS_UNKNOWN = 0,   
00052     GAIM_XFER_STATUS_NOT_STARTED,   
00053     GAIM_XFER_STATUS_ACCEPTED,      
00054     GAIM_XFER_STATUS_STARTED,       
00055     GAIM_XFER_STATUS_DONE,          
00056     GAIM_XFER_STATUS_CANCEL_LOCAL,  
00057     GAIM_XFER_STATUS_CANCEL_REMOTE  
00058 } GaimXferStatusType;
00059 
00066 typedef struct
00067 {
00068     void (*new_xfer)(GaimXfer *xfer);
00069     void (*destroy)(GaimXfer *xfer);
00070     void (*add_xfer)(GaimXfer *xfer);
00071     void (*update_progress)(GaimXfer *xfer, double percent);
00072     void (*cancel_local)(GaimXfer *xfer);
00073     void (*cancel_remote)(GaimXfer *xfer);
00074 
00075 } GaimXferUiOps;
00076 
00080 struct _GaimXfer
00081 {
00082     guint ref;                    
00083     GaimXferType type;            
00085     GaimAccount *account;         
00087     char *who;                    
00090     char *message;                
00091     char *filename;               
00092     char *local_filename;         
00093     size_t size;                  
00095     FILE *dest_fp;                
00097     char *remote_ip;              
00098     int local_port;               
00099     int remote_port;              
00101     int fd;                       
00102     int watcher;                  
00104     size_t bytes_sent;            
00105     size_t bytes_remaining;       
00107     GaimXferStatusType status;    
00109     /* I/O operations. */
00110     struct
00111     {
00112         void (*init)(GaimXfer *xfer);
00113         void (*request_denied)(GaimXfer *xfer);
00114         void (*start)(GaimXfer *xfer);
00115         void (*end)(GaimXfer *xfer);
00116         void (*cancel_send)(GaimXfer *xfer);
00117         void (*cancel_recv)(GaimXfer *xfer);
00118         ssize_t (*read)(char **buffer, GaimXfer *xfer);
00119         ssize_t (*write)(const char *buffer, size_t size, GaimXfer *xfer);
00120         void (*ack)(GaimXfer *xfer, const char *buffer, size_t size);
00121 
00122     } ops;
00123 
00124     GaimXferUiOps *ui_ops;            
00125     void *ui_data;                    
00127     void *data;                       
00128 };
00129 
00130 #ifdef __cplusplus
00131 extern "C" {
00132 #endif
00133 
00134 /**************************************************************************/
00136 /**************************************************************************/
00152 GaimXfer *gaim_xfer_new(GaimAccount *account,
00153                                 GaimXferType type, const char *who);
00154 
00161 void gaim_xfer_ref(GaimXfer *xfer);
00162 
00172 void gaim_xfer_unref(GaimXfer *xfer);
00173 
00183 void gaim_xfer_request(GaimXfer *xfer);
00184 
00191 void gaim_xfer_request_accepted(GaimXfer *xfer, const char *filename);
00192 
00198 void gaim_xfer_request_denied(GaimXfer *xfer);
00199 
00207 GaimXferType gaim_xfer_get_type(const GaimXfer *xfer);
00208 
00216 GaimAccount *gaim_xfer_get_account(const GaimXfer *xfer);
00217 
00225 GaimXferStatusType gaim_xfer_get_status(const GaimXfer *xfer);
00226 
00234 gboolean gaim_xfer_is_canceled(const GaimXfer *xfer);
00235 
00243 gboolean gaim_xfer_is_completed(const GaimXfer *xfer);
00244 
00252 const char *gaim_xfer_get_filename(const GaimXfer *xfer);
00253 
00261 const char *gaim_xfer_get_local_filename(const GaimXfer *xfer);
00262 
00270 size_t gaim_xfer_get_bytes_sent(const GaimXfer *xfer);
00271 
00279 size_t gaim_xfer_get_bytes_remaining(const GaimXfer *xfer);
00280 
00288 size_t gaim_xfer_get_size(const GaimXfer *xfer);
00289 
00299 double gaim_xfer_get_progress(const GaimXfer *xfer);
00300 
00308 unsigned int gaim_xfer_get_local_port(const GaimXfer *xfer);
00309 
00317 const char *gaim_xfer_get_remote_ip(const GaimXfer *xfer);
00318 
00326 unsigned int gaim_xfer_get_remote_port(const GaimXfer *xfer);
00327 
00334 void gaim_xfer_set_completed(GaimXfer *xfer, gboolean completed);
00335 
00342 void gaim_xfer_set_message(GaimXfer *xfer, const char *message);
00343 
00350 void gaim_xfer_set_filename(GaimXfer *xfer, const char *filename);
00351 
00358 void gaim_xfer_set_local_filename(GaimXfer *xfer, const char *filename);
00359 
00366 void gaim_xfer_set_size(GaimXfer *xfer, size_t size);
00367 
00375 GaimXferUiOps *gaim_xfer_get_ui_ops(const GaimXfer *xfer);
00376 
00383 void gaim_xfer_set_read_fnc(GaimXfer *xfer,
00384         ssize_t (*fnc)(char **, GaimXfer *));
00385 
00392 void gaim_xfer_set_write_fnc(GaimXfer *xfer,
00393         ssize_t (*fnc)(const char *, size_t, GaimXfer *));
00394 
00401 void gaim_xfer_set_ack_fnc(GaimXfer *xfer,
00402         void (*fnc)(GaimXfer *, const char *, size_t));
00403 
00410 void gaim_xfer_set_request_denied_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00411 
00422 void gaim_xfer_set_init_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00423 
00430 void gaim_xfer_set_start_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00431 
00438 void gaim_xfer_set_end_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00439 
00446 void gaim_xfer_set_cancel_send_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00447 
00454 void gaim_xfer_set_cancel_recv_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00455 
00464 ssize_t gaim_xfer_read(GaimXfer *xfer, char **buffer);
00465 
00475 ssize_t gaim_xfer_write(GaimXfer *xfer, const char *buffer, size_t size);
00476 
00489 void gaim_xfer_start(GaimXfer *xfer, int fd, const char *ip,
00490                      unsigned int port);
00491 
00497 void gaim_xfer_end(GaimXfer *xfer);
00498 
00505 void gaim_xfer_add(GaimXfer *xfer);
00506 
00512 void gaim_xfer_cancel_local(GaimXfer *xfer);
00513 
00519 void gaim_xfer_cancel_remote(GaimXfer *xfer);
00520 
00532 void gaim_xfer_error(GaimXferType type, const char *who, const char *msg);
00533 
00539 void gaim_xfer_update_progress(GaimXfer *xfer);
00540 
00543 /**************************************************************************/
00545 /**************************************************************************/
00553 void gaim_xfers_set_ui_ops(GaimXferUiOps *ops);
00554 
00560 GaimXferUiOps *gaim_xfers_get_ui_ops(void);
00561 
00564 #ifdef __cplusplus
00565 }
00566 #endif
00567 
00568 #endif /* _GAIM_FT_H_ */

Generated on Sun Jun 5 18:07:36 2005 for gaim by  doxygen 1.3.9.1