ft.h File Reference

File Transfer API. More...

#include <glib.h>
#include <stdio.h>
#include "account.h"

Go to the source code of this file.

Data Structures

struct  PurpleXferUiOps
 File transfer UI operations. More...
struct  _PurpleXfer
 A core representation of a file transfer. More...

Typedefs

typedef struct _PurpleXfer PurpleXfer
 Data Structures.

Enumerations

enum  PurpleXferType { PURPLE_XFER_UNKNOWN = 0, PURPLE_XFER_SEND, PURPLE_XFER_RECEIVE }
 Types of file transfers. More...
enum  PurpleXferStatusType {
  PURPLE_XFER_STATUS_UNKNOWN = 0, PURPLE_XFER_STATUS_NOT_STARTED, PURPLE_XFER_STATUS_ACCEPTED, PURPLE_XFER_STATUS_STARTED,
  PURPLE_XFER_STATUS_DONE, PURPLE_XFER_STATUS_CANCEL_LOCAL, PURPLE_XFER_STATUS_CANCEL_REMOTE
}
 The different states of the xfer. More...

Functions

File Transfer API
PurpleXferpurple_xfer_new (PurpleAccount *account, PurpleXferType type, const char *who)
 Creates a new file transfer handle.
GList * purple_xfers_get_all (void)
 Returns all xfers.
void purple_xfer_ref (PurpleXfer *xfer)
 Increases the reference count on a PurpleXfer.
void purple_xfer_unref (PurpleXfer *xfer)
 Decreases the reference count on a PurpleXfer.
void purple_xfer_request (PurpleXfer *xfer)
 Requests confirmation for a file transfer from the user.
void purple_xfer_request_accepted (PurpleXfer *xfer, const char *filename)
 Called if the user accepts the file transfer request.
void purple_xfer_request_denied (PurpleXfer *xfer)
 Called if the user rejects the file transfer request.
PurpleXferType purple_xfer_get_type (const PurpleXfer *xfer)
 Returns the type of file transfer.
PurpleAccountpurple_xfer_get_account (const PurpleXfer *xfer)
 Returns the account the file transfer is using.
const char * purple_xfer_get_remote_user (const PurpleXfer *xfer)
 Returns the name of the remote user.
PurpleXferStatusType purple_xfer_get_status (const PurpleXfer *xfer)
 Returns the status of the xfer.
gboolean purple_xfer_is_canceled (const PurpleXfer *xfer)
 Returns true if the file transfer was canceled.
gboolean purple_xfer_is_completed (const PurpleXfer *xfer)
 Returns the completed state for a file transfer.
const char * purple_xfer_get_filename (const PurpleXfer *xfer)
 Returns the name of the file being sent or received.
const char * purple_xfer_get_local_filename (const PurpleXfer *xfer)
 Returns the file's destination filename,.
size_t purple_xfer_get_bytes_sent (const PurpleXfer *xfer)
 Returns the number of bytes sent (or received) so far.
size_t purple_xfer_get_bytes_remaining (const PurpleXfer *xfer)
 Returns the number of bytes remaining to send or receive.
size_t purple_xfer_get_size (const PurpleXfer *xfer)
 Returns the size of the file being sent or received.
double purple_xfer_get_progress (const PurpleXfer *xfer)
 Returns the current percentage of progress of the transfer.
unsigned int purple_xfer_get_local_port (const PurpleXfer *xfer)
 Returns the local port number in the file transfer.
const char * purple_xfer_get_remote_ip (const PurpleXfer *xfer)
 Returns the remote IP address in the file transfer.
unsigned int purple_xfer_get_remote_port (const PurpleXfer *xfer)
 Returns the remote port number in the file transfer.
time_t purple_xfer_get_start_time (const PurpleXfer *xfer)
 Returns the time the transfer of a file started.
time_t purple_xfer_get_end_time (const PurpleXfer *xfer)
 Returns the time the transfer of a file ended.
void purple_xfer_set_completed (PurpleXfer *xfer, gboolean completed)
 Sets the completed state for the file transfer.
void purple_xfer_set_message (PurpleXfer *xfer, const char *message)
 Sets the filename for the file transfer.
void purple_xfer_set_filename (PurpleXfer *xfer, const char *filename)
 Sets the filename for the file transfer.
void purple_xfer_set_local_filename (PurpleXfer *xfer, const char *filename)
 Sets the local filename for the file transfer.
void purple_xfer_set_size (PurpleXfer *xfer, size_t size)
 Sets the size of the file in a file transfer.
void purple_xfer_set_bytes_sent (PurpleXfer *xfer, size_t bytes_sent)
 Sets the current working position in the active file transfer.
PurpleXferUiOpspurple_xfer_get_ui_ops (const PurpleXfer *xfer)
 Returns the UI operations structure for a file transfer.
void purple_xfer_set_read_fnc (PurpleXfer *xfer, gssize(*fnc)(guchar **, PurpleXfer *))
 Sets the read function for the file transfer.
void purple_xfer_set_write_fnc (PurpleXfer *xfer, gssize(*fnc)(const guchar *, size_t, PurpleXfer *))
 Sets the write function for the file transfer.
void purple_xfer_set_ack_fnc (PurpleXfer *xfer, void(*fnc)(PurpleXfer *, const guchar *, size_t))
 Sets the acknowledge function for the file transfer.
void purple_xfer_set_request_denied_fnc (PurpleXfer *xfer, void(*fnc)(PurpleXfer *))
 Sets the function to be called if the request is denied.
void purple_xfer_set_init_fnc (PurpleXfer *xfer, void(*fnc)(PurpleXfer *))
 Sets the transfer initialization function for the file transfer.
void purple_xfer_set_start_fnc (PurpleXfer *xfer, void(*fnc)(PurpleXfer *))
 Sets the start transfer function for the file transfer.
void purple_xfer_set_end_fnc (PurpleXfer *xfer, void(*fnc)(PurpleXfer *))
 Sets the end transfer function for the file transfer.
void purple_xfer_set_cancel_send_fnc (PurpleXfer *xfer, void(*fnc)(PurpleXfer *))
 Sets the cancel send function for the file transfer.
void purple_xfer_set_cancel_recv_fnc (PurpleXfer *xfer, void(*fnc)(PurpleXfer *))
 Sets the cancel receive function for the file transfer.
gssize purple_xfer_read (PurpleXfer *xfer, guchar **buffer)
 Reads in data from a file transfer stream.
gssize purple_xfer_write (PurpleXfer *xfer, const guchar *buffer, gsize size)
 Writes data to a file transfer stream.
void purple_xfer_start (PurpleXfer *xfer, int fd, const char *ip, unsigned int port)
 Starts a file transfer.
void purple_xfer_end (PurpleXfer *xfer)
 Ends a file transfer.
void purple_xfer_add (PurpleXfer *xfer)
 Adds a new file transfer to the list of file transfers.
void purple_xfer_cancel_local (PurpleXfer *xfer)
 Cancels a file transfer on the local end.
void purple_xfer_cancel_remote (PurpleXfer *xfer)
 Cancels a file transfer from the remote end.
void purple_xfer_error (PurpleXferType type, PurpleAccount *account, const char *who, const char *msg)
 Displays a file transfer-related error message.
void purple_xfer_update_progress (PurpleXfer *xfer)
 Updates file transfer progress.
void purple_xfer_conversation_write (PurpleXfer *xfer, char *message, gboolean is_error)
 Displays a file transfer-related message in the conversation window.
UI Registration Functions
void * purple_xfers_get_handle (void)
 Returns the handle to the file transfer subsystem.
void purple_xfers_init (void)
 Initializes the file transfer subsystem.
void purple_xfers_uninit (void)
 Uninitializes the file transfer subsystem.
void purple_xfers_set_ui_ops (PurpleXferUiOps *ops)
 Sets the UI operations structure to be used in all purple file transfers.
PurpleXferUiOpspurple_xfers_get_ui_ops (void)
 Returns the UI operations structure to be used in all purple file transfers.


Detailed Description

File Transfer API.

See also:
File Transfer Signals

Definition in file ft.h.


Enumeration Type Documentation

The different states of the xfer.

Enumerator:
PURPLE_XFER_STATUS_UNKNOWN  Unknown, the xfer may be null.

PURPLE_XFER_STATUS_NOT_STARTED  It hasn't started yet.

PURPLE_XFER_STATUS_ACCEPTED  Receive accepted, but destination file not selected yet.
PURPLE_XFER_STATUS_STARTED  purple_xfer_start has been called.

PURPLE_XFER_STATUS_DONE  The xfer completed successfully.

PURPLE_XFER_STATUS_CANCEL_LOCAL  The xfer was canceled by us.

PURPLE_XFER_STATUS_CANCEL_REMOTE  The xfer was canceled by the other end, or we couldn't connect.

Definition at line 54 of file ft.h.

Types of file transfers.

Enumerator:
PURPLE_XFER_UNKNOWN  Unknown file transfer type.

PURPLE_XFER_SEND  File sending.

PURPLE_XFER_RECEIVE  File receiving.

Definition at line 43 of file ft.h.


Function Documentation

void purple_xfer_add ( PurpleXfer xfer  ) 

Adds a new file transfer to the list of file transfers.

Call this only if you are not using purple_xfer_start.

Parameters:
xfer The file transfer.

void purple_xfer_cancel_local ( PurpleXfer xfer  ) 

Cancels a file transfer on the local end.

Parameters:
xfer The file transfer.

void purple_xfer_cancel_remote ( PurpleXfer xfer  ) 

Cancels a file transfer from the remote end.

Parameters:
xfer The file transfer.

void purple_xfer_conversation_write ( PurpleXfer xfer,
char *  message,
gboolean  is_error 
)

Displays a file transfer-related message in the conversation window.

This is a wrapper around purple_conversation_write

Parameters:
xfer The file transfer to which this message relates.
message The message to display.
is_error Is this an error message?.

void purple_xfer_end ( PurpleXfer xfer  ) 

Ends a file transfer.

Parameters:
xfer The file transfer.

void purple_xfer_error ( PurpleXferType  type,
PurpleAccount account,
const char *  who,
const char *  msg 
)

Displays a file transfer-related error message.

This is a wrapper around purple_notify_error(), which automatically specifies a title ("File transfer to <i>user</i> failed" or "File Transfer from <i>user</i> failed").

Parameters:
type The type of file transfer.
account The account sending or receiving the file.
who The user on the other end of the transfer.
msg The message to display.

PurpleAccount* purple_xfer_get_account ( const PurpleXfer xfer  ) 

Returns the account the file transfer is using.

Parameters:
xfer The file transfer.
Returns:
The account.

size_t purple_xfer_get_bytes_remaining ( const PurpleXfer xfer  ) 

Returns the number of bytes remaining to send or receive.

Parameters:
xfer The file transfer.
Returns:
The number of bytes remaining.

size_t purple_xfer_get_bytes_sent ( const PurpleXfer xfer  ) 

Returns the number of bytes sent (or received) so far.

Parameters:
xfer The file transfer.
Returns:
The number of bytes sent.

time_t purple_xfer_get_end_time ( const PurpleXfer xfer  ) 

Returns the time the transfer of a file ended.

Parameters:
xfer The file transfer.
Returns:
The time when the transfer ended.
Since:
2.4.0

const char* purple_xfer_get_filename ( const PurpleXfer xfer  ) 

Returns the name of the file being sent or received.

Parameters:
xfer The file transfer.
Returns:
The filename.

const char* purple_xfer_get_local_filename ( const PurpleXfer xfer  ) 

Returns the file's destination filename,.

Parameters:
xfer The file transfer.
Returns:
The destination filename.

unsigned int purple_xfer_get_local_port ( const PurpleXfer xfer  ) 

Returns the local port number in the file transfer.

Parameters:
xfer The file transfer.
Returns:
The port number on this end.

double purple_xfer_get_progress ( const PurpleXfer xfer  ) 

Returns the current percentage of progress of the transfer.

This is a number between 0 (0%) and 1 (100%).

Parameters:
xfer The file transfer.
Returns:
The percentage complete.

const char* purple_xfer_get_remote_ip ( const PurpleXfer xfer  ) 

Returns the remote IP address in the file transfer.

Parameters:
xfer The file transfer.
Returns:
The IP address on the other end.

unsigned int purple_xfer_get_remote_port ( const PurpleXfer xfer  ) 

Returns the remote port number in the file transfer.

Parameters:
xfer The file transfer.
Returns:
The port number on the other end.

const char* purple_xfer_get_remote_user ( const PurpleXfer xfer  ) 

Returns the name of the remote user.

Parameters:
xfer The file transfer.
Returns:
The name of the remote user.
Since:
2.1.0

size_t purple_xfer_get_size ( const PurpleXfer xfer  ) 

Returns the size of the file being sent or received.

Parameters:
xfer The file transfer.
Returns:
The total size of the file.

time_t purple_xfer_get_start_time ( const PurpleXfer xfer  ) 

Returns the time the transfer of a file started.

Parameters:
xfer The file transfer.
Returns:
The time when the transfer started.
Since:
2.4.0

PurpleXferStatusType purple_xfer_get_status ( const PurpleXfer xfer  ) 

Returns the status of the xfer.

Parameters:
xfer The file transfer.
Returns:
The status.

PurpleXferType purple_xfer_get_type ( const PurpleXfer xfer  ) 

Returns the type of file transfer.

Parameters:
xfer The file transfer.
Returns:
The type of the file transfer.

PurpleXferUiOps* purple_xfer_get_ui_ops ( const PurpleXfer xfer  ) 

Returns the UI operations structure for a file transfer.

Parameters:
xfer The file transfer.
Returns:
The UI operations structure.

gboolean purple_xfer_is_canceled ( const PurpleXfer xfer  ) 

Returns true if the file transfer was canceled.

Parameters:
xfer The file transfer.
Returns:
Whether or not the transfer was canceled.

gboolean purple_xfer_is_completed ( const PurpleXfer xfer  ) 

Returns the completed state for a file transfer.

Parameters:
xfer The file transfer.
Returns:
The completed state.

PurpleXfer* purple_xfer_new ( PurpleAccount account,
PurpleXferType  type,
const char *  who 
)

Creates a new file transfer handle.

This is called by prpls. The handle starts with a ref count of 1, and this reference is owned by the core. The prpl normally does not need to purple_xfer_ref or unref.

Parameters:
account The account sending or receiving the file.
type The type of file transfer.
who The name of the remote user.
Returns:
A file transfer handle.

gssize purple_xfer_read ( PurpleXfer xfer,
guchar **  buffer 
)

Reads in data from a file transfer stream.

Parameters:
xfer The file transfer.
buffer The buffer that will be created to contain the data.
Returns:
The number of bytes read, or -1.

void purple_xfer_ref ( PurpleXfer xfer  ) 

Increases the reference count on a PurpleXfer.

Please call purple_xfer_unref later.

Parameters:
xfer A file transfer handle.

void purple_xfer_request ( PurpleXfer xfer  ) 

Requests confirmation for a file transfer from the user.

If receiving a file which is known at this point, this requests user to accept and save the file. If the filename is unknown (not set) this only requests user to accept the file transfer. In this case protocol must call this function again once the filename is available.

Parameters:
xfer The file transfer to request confirmation on.

void purple_xfer_request_accepted ( PurpleXfer xfer,
const char *  filename 
)

Called if the user accepts the file transfer request.

Parameters:
xfer The file transfer.
filename The filename.

void purple_xfer_request_denied ( PurpleXfer xfer  ) 

Called if the user rejects the file transfer request.

Parameters:
xfer The file transfer.

void purple_xfer_set_ack_fnc ( PurpleXfer xfer,
void(*)(PurpleXfer *, const guchar *, size_t)  fnc 
)

Sets the acknowledge function for the file transfer.

Parameters:
xfer The file transfer.
fnc The acknowledge function.

void purple_xfer_set_bytes_sent ( PurpleXfer xfer,
size_t  bytes_sent 
)

Sets the current working position in the active file transfer.

This can be used to jump backward in the file if the protocol detects that some bit of data needs to be resent or has been sent twice.

It's used for pausing and resuming an oscar file transfer.

Parameters:
xfer The file transfer.
bytes_sent The new current position in the file. If we're sending a file then this is the byte that we will send. If we're receiving a file, this is the next byte that we expect to receive.

void purple_xfer_set_cancel_recv_fnc ( PurpleXfer xfer,
void(*)(PurpleXfer *)  fnc 
)

Sets the cancel receive function for the file transfer.

Parameters:
xfer The file transfer.
fnc The cancel receive function.

void purple_xfer_set_cancel_send_fnc ( PurpleXfer xfer,
void(*)(PurpleXfer *)  fnc 
)

Sets the cancel send function for the file transfer.

Parameters:
xfer The file transfer.
fnc The cancel send function.

void purple_xfer_set_completed ( PurpleXfer xfer,
gboolean  completed 
)

Sets the completed state for the file transfer.

Parameters:
xfer The file transfer.
completed The completed state.

void purple_xfer_set_end_fnc ( PurpleXfer xfer,
void(*)(PurpleXfer *)  fnc 
)

Sets the end transfer function for the file transfer.

Parameters:
xfer The file transfer.
fnc The end transfer function.

void purple_xfer_set_filename ( PurpleXfer xfer,
const char *  filename 
)

Sets the filename for the file transfer.

Parameters:
xfer The file transfer.
filename The filename.

void purple_xfer_set_init_fnc ( PurpleXfer xfer,
void(*)(PurpleXfer *)  fnc 
)

Sets the transfer initialization function for the file transfer.

This function is required, and must call purple_xfer_start() with the necessary parameters. This will be called if the file transfer is accepted by the user.

Parameters:
xfer The file transfer.
fnc The transfer initialization function.

void purple_xfer_set_local_filename ( PurpleXfer xfer,
const char *  filename 
)

Sets the local filename for the file transfer.

Parameters:
xfer The file transfer.
filename The filename

void purple_xfer_set_message ( PurpleXfer xfer,
const char *  message 
)

Sets the filename for the file transfer.

Parameters:
xfer The file transfer.
message The message.

void purple_xfer_set_read_fnc ( PurpleXfer xfer,
gssize(*)(guchar **, PurpleXfer *)  fnc 
)

Sets the read function for the file transfer.

Parameters:
xfer The file transfer.
fnc The read function.

void purple_xfer_set_request_denied_fnc ( PurpleXfer xfer,
void(*)(PurpleXfer *)  fnc 
)

Sets the function to be called if the request is denied.

Parameters:
xfer The file transfer.
fnc The request denied prpl callback.

void purple_xfer_set_size ( PurpleXfer xfer,
size_t  size 
)

Sets the size of the file in a file transfer.

Parameters:
xfer The file transfer.
size The size of the file.

void purple_xfer_set_start_fnc ( PurpleXfer xfer,
void(*)(PurpleXfer *)  fnc 
)

Sets the start transfer function for the file transfer.

Parameters:
xfer The file transfer.
fnc The start transfer function.

void purple_xfer_set_write_fnc ( PurpleXfer xfer,
gssize(*)(const guchar *, size_t, PurpleXfer *)  fnc 
)

Sets the write function for the file transfer.

Parameters:
xfer The file transfer.
fnc The write function.

void purple_xfer_start ( PurpleXfer xfer,
int  fd,
const char *  ip,
unsigned int  port 
)

Starts a file transfer.

Either fd must be specified or ip and port on a file receive transfer. On send, fd must be specified, and ip and port are ignored.

Parameters:
xfer The file transfer.
fd The file descriptor for the socket.
ip The IP address to connect to.
port The port to connect to.

void purple_xfer_unref ( PurpleXfer xfer  ) 

Decreases the reference count on a PurpleXfer.

If the reference reaches 0, purple_xfer_destroy (an internal function) will destroy the xfer. It calls the ui destroy cb first. Since the core keeps a ref on the xfer, only an erroneous call to this function will destroy the xfer while still in use.

Parameters:
xfer A file transfer handle.

void purple_xfer_update_progress ( PurpleXfer xfer  ) 

Updates file transfer progress.

Parameters:
xfer The file transfer.

gssize purple_xfer_write ( PurpleXfer xfer,
const guchar *  buffer,
gsize  size 
)

Writes data to a file transfer stream.

Parameters:
xfer The file transfer.
buffer The buffer to read the data from.
size The number of bytes to write.
Returns:
The number of bytes written, or -1.

GList* purple_xfers_get_all ( void   ) 

Returns all xfers.

Returns:
all current xfers with refs

void* purple_xfers_get_handle ( void   ) 

Returns the handle to the file transfer subsystem.

Returns:
The handle

PurpleXferUiOps* purple_xfers_get_ui_ops ( void   ) 

Returns the UI operations structure to be used in all purple file transfers.

Returns:
The UI operations structure.

void purple_xfers_set_ui_ops ( PurpleXferUiOps ops  ) 

Sets the UI operations structure to be used in all purple file transfers.

Parameters:
ops The UI operations structure.