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 (*request_file)(GaimXfer *xfer);
00071     void (*ask_cancel)(GaimXfer *xfer);
00072     void (*add_xfer)(GaimXfer *xfer);
00073     void (*update_progress)(GaimXfer *xfer, double percent);
00074     void (*cancel_local)(GaimXfer *xfer);
00075     void (*cancel_remote)(GaimXfer *xfer);
00076 
00077 } GaimXferUiOps;
00078 
00082 struct _GaimXfer
00083 {
00084     guint ref;                    
00085     GaimXferType type;            
00087     GaimAccount *account;         
00089     char *who;                    
00092     char *filename;               
00093     char *local_filename;         
00094     size_t size;                  
00096     FILE *dest_fp;                
00098     char *remote_ip;              
00099     int local_port;               
00100     int remote_port;              
00102     int fd;                       
00103     int watcher;                  
00105     size_t bytes_sent;            
00106     size_t bytes_remaining;       
00108     GaimXferStatusType status;    
00110     /* I/O operations. */
00111     struct
00112     {
00113         void (*init)(GaimXfer *xfer);
00114         void (*request_denied)(GaimXfer *xfer);
00115         void (*start)(GaimXfer *xfer);
00116         void (*end)(GaimXfer *xfer);
00117         void (*cancel_send)(GaimXfer *xfer);
00118         void (*cancel_recv)(GaimXfer *xfer);
00119         ssize_t (*read)(char **buffer, GaimXfer *xfer);
00120         ssize_t (*write)(const char *buffer, size_t size, GaimXfer *xfer);
00121         void (*ack)(GaimXfer *xfer, const char *buffer, size_t size);
00122 
00123     } ops;
00124 
00125     GaimXferUiOps *ui_ops;            
00126     void *ui_data;                    
00128     void *data;                       
00129 };
00130 
00131 #ifdef __cplusplus
00132 extern "C" {
00133 #endif
00134 
00135 /**************************************************************************/
00137 /**************************************************************************/
00153 GaimXfer *gaim_xfer_new(GaimAccount *account,
00154                                 GaimXferType type, const char *who);
00155 
00162 void gaim_xfer_ref(GaimXfer *xfer);
00163 
00173 void gaim_xfer_unref(GaimXfer *xfer);
00174 
00184 void gaim_xfer_request(GaimXfer *xfer);
00185 
00192 void gaim_xfer_request_accepted(GaimXfer *xfer, const char *filename);
00193 
00199 void gaim_xfer_request_denied(GaimXfer *xfer);
00200 
00208 GaimXferType gaim_xfer_get_type(const GaimXfer *xfer);
00209 
00217 GaimAccount *gaim_xfer_get_account(const GaimXfer *xfer);
00218 
00226 GaimXferStatusType gaim_xfer_get_status(const GaimXfer *xfer);
00227 
00235 gboolean gaim_xfer_is_canceled(const GaimXfer *xfer);
00236 
00244 gboolean gaim_xfer_is_completed(const GaimXfer *xfer);
00245 
00253 const char *gaim_xfer_get_filename(const GaimXfer *xfer);
00254 
00262 const char *gaim_xfer_get_local_filename(const GaimXfer *xfer);
00263 
00271 size_t gaim_xfer_get_bytes_sent(const GaimXfer *xfer);
00272 
00280 size_t gaim_xfer_get_bytes_remaining(const GaimXfer *xfer);
00281 
00289 size_t gaim_xfer_get_size(const GaimXfer *xfer);
00290 
00300 double gaim_xfer_get_progress(const GaimXfer *xfer);
00301 
00309 unsigned int gaim_xfer_get_local_port(const GaimXfer *xfer);
00310 
00318 const char *gaim_xfer_get_remote_ip(const GaimXfer *xfer);
00319 
00327 unsigned int gaim_xfer_get_remote_port(const GaimXfer *xfer);
00328 
00335 void gaim_xfer_set_completed(GaimXfer *xfer, gboolean completed);
00336 
00343 void gaim_xfer_set_filename(GaimXfer *xfer, const char *filename);
00344 
00351 void gaim_xfer_set_local_filename(GaimXfer *xfer, const char *filename);
00352 
00359 void gaim_xfer_set_size(GaimXfer *xfer, size_t size);
00360 
00368 GaimXferUiOps *gaim_xfer_get_ui_ops(const GaimXfer *xfer);
00369 
00376 void gaim_xfer_set_read_fnc(GaimXfer *xfer,
00377         ssize_t (*fnc)(char **, GaimXfer *));
00378 
00385 void gaim_xfer_set_write_fnc(GaimXfer *xfer,
00386         ssize_t (*fnc)(const char *, size_t, GaimXfer *));
00387 
00394 void gaim_xfer_set_ack_fnc(GaimXfer *xfer,
00395         void (*fnc)(GaimXfer *, const char *, size_t));
00396 
00403 void gaim_xfer_set_request_denied_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00404 
00415 void gaim_xfer_set_init_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00416 
00423 void gaim_xfer_set_start_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00424 
00431 void gaim_xfer_set_end_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00432 
00439 void gaim_xfer_set_cancel_send_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00440 
00447 void gaim_xfer_set_cancel_recv_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *));
00448 
00457 ssize_t gaim_xfer_read(GaimXfer *xfer, char **buffer);
00458 
00468 ssize_t gaim_xfer_write(GaimXfer *xfer, const char *buffer, size_t size);
00469 
00482 void gaim_xfer_start(GaimXfer *xfer, int fd, const char *ip,
00483                      unsigned int port);
00484 
00490 void gaim_xfer_end(GaimXfer *xfer);
00491 
00498 void gaim_xfer_add(GaimXfer *xfer);
00499 
00505 void gaim_xfer_cancel_local(GaimXfer *xfer);
00506 
00512 void gaim_xfer_cancel_remote(GaimXfer *xfer);
00513 
00525 void gaim_xfer_error(GaimXferType type, const char *who, const char *msg);
00526 
00532 void gaim_xfer_update_progress(GaimXfer *xfer);
00533 
00536 /**************************************************************************/
00538 /**************************************************************************/
00546 void gaim_xfers_set_ui_ops(GaimXferUiOps *ops);
00547 
00553 GaimXferUiOps *gaim_xfers_get_ui_ops(void);
00554 
00557 #ifdef __cplusplus
00558 }
00559 #endif
00560 
00561 #endif /* _GAIM_FT_H_ */

Generated on Tue Aug 3 17:36:34 2004 for gaim by doxygen 1.3.4