## File transfer

File transfer — client-side wrappers for the File Transfer channel type

## Synopsis

    #include <telepathy-glib/channel.h>

    TpProxyPendingCall * tp_cli_channel_type_file_transfer_call_accept_file
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint in_Address_Type,
                                                             guint in_Access_Control,
                                                             const GValue *in_Access_Control_Param,
                                                             guint64 in_Offset,
                                                             tp_cli_channel_type_file_transfer_callback_for_accept_file callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    TpProxyPendingCall * tp_cli_channel_type_file_transfer_call_provide_file
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint in_Address_Type,
                                                             guint in_Access_Control,
                                                             const GValue *in_Access_Control_Param,
                                                             tp_cli_channel_type_file_transfer_callback_for_provide_file callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_type_file_transfer_callback_for_accept_file)
                                                            (TpChannel *proxy,
                                                             const GValue *out_Address,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_type_file_transfer_callback_for_provide_file)
                                                            (TpChannel *proxy,
                                                             const GValue *out_Address,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    TpProxySignalConnection * tp_cli_channel_type_file_transfer_connect_to_file_transfer_state_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_type_file_transfer_signal_callback_file_transfer_state_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);
    TpProxySignalConnection * tp_cli_channel_type_file_transfer_connect_to_initial_offset_defined
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_type_file_transfer_signal_callback_initial_offset_defined callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);
    TpProxySignalConnection * tp_cli_channel_type_file_transfer_connect_to_transferred_bytes_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_type_file_transfer_signal_callback_transferred_bytes_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);
    gboolean            tp_cli_channel_type_file_transfer_run_accept_file
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint in_Address_Type,
                                                             guint in_Access_Control,
                                                             const GValue *in_Access_Control_Param,
                                                             guint64 in_Offset,
                                                             GValue **out_Address,
                                                             GError **error,
                                                             GMainLoop **loop);
    gboolean            tp_cli_channel_type_file_transfer_run_provide_file
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint in_Address_Type,
                                                             guint in_Access_Control,
                                                             const GValue *in_Access_Control_Param,
                                                             GValue **out_Address,
                                                             GError **error,
                                                             GMainLoop **loop);
    void                (*tp_cli_channel_type_file_transfer_signal_callback_file_transfer_state_changed)
                                                            (TpChannel *proxy,
                                                             guint arg_State,
                                                             guint arg_Reason,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_type_file_transfer_signal_callback_initial_offset_defined)
                                                            (TpChannel *proxy,
                                                             guint64 arg_InitialOffset,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_type_file_transfer_signal_callback_transferred_bytes_changed)
                                                            (TpChannel *proxy,
                                                             guint64 arg_Count,
                                                             gpointer user_data,
                                                             GObject *weak_object);

## Description

This section documents the auto-generated C wrappers for the File Transfer channel type.

## Details

### tp_cli_channel_type_file_transfer_call_accept_file ()

    TpProxyPendingCall * tp_cli_channel_type_file_transfer_call_accept_file
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint in_Address_Type,
                                                             guint in_Access_Control,
                                                             const GValue *in_Access_Control_Param,
                                                             guint64 in_Offset,
                                                             tp_cli_channel_type_file_transfer_callback_for_accept_file callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

Start a AcceptFile method call.

Accept a file transfer that's in the Pending state. The file transfer's state becomes Accepted after this method is called. At this point the client can connect to the socket. CM MUST emit <tp:member-ref>InitialOffsetDefined</tp:member-ref> and change the state to Open before writing to the socket. Then <tp:member-ref>InitialOffset</tp:member-ref> should be respected in case its value differs from the offset that was specified as an argument to AcceptFile.

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`in_Address_Type` : | Used to pass an 'in' argument: The type of address the connection manager should listen on.
`in_Access_Control` : | Used to pass an 'in' argument: The type of access control the connection manager should apply to the socket.
`in_Access_Control_Param` : | Used to pass an 'in' argument: A parameter for the access control type, to be interpreted as specified in the documentation for the Socket_Access_Control enum.

`in_Offset` :

Used to pass an 'in' argument: The desired offset in bytes where the file transfer should start. The offset is taken from the beginning of the file. Specifying an offset of zero will start the transfer from the beginning of the file. The offset that is actually given in the <tp:member-ref>InitialOffset</tp:member-ref> property can differ from this argument where the requested offset is not supported. (For example, some protocols do not support offsets at all so the InitialOffset property will always be 0.)

`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_type_file_transfer_call_provide_file ()

    TpProxyPendingCall * tp_cli_channel_type_file_transfer_call_provide_file
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint in_Address_Type,
                                                             guint in_Access_Control,
                                                             const GValue *in_Access_Control_Param,
                                                             tp_cli_channel_type_file_transfer_callback_for_provide_file callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

Start a ProvideFile method call.

Provide the file for an outgoing file transfer which has been offered. Opens a socket that the client can use to provide a file to the connection manager. The channel MUST have been requested, and will change state to Open when this method is called if its state was Accepted.

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`in_Address_Type` : | Used to pass an 'in' argument: The type of address the connection manager should listen on.
`in_Access_Control` : | Used to pass an 'in' argument: The type of access control the connection manager should apply to the socket.
`in_Access_Control_Param` : | Used to pass an 'in' argument: A parameter for the access control type, to be interpreted as specified in the documentation for the Socket_Access_Control enum.
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_type_file_transfer_callback_for_accept_file ()

    void                (*tp_cli_channel_type_file_transfer_callback_for_accept_file)
                                                            (TpChannel *proxy,
                                                             const GValue *out_Address,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Signature of the callback called when a AcceptFile method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`out_Address` : | Used to return an 'out' argument if `error` is `NULL`: The address on which the connection manager will listen for connections for this file transfer.
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_type_file_transfer_callback_for_provide_file ()

    void                (*tp_cli_channel_type_file_transfer_callback_for_provide_file)
                                                            (TpChannel *proxy,
                                                             const GValue *out_Address,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Signature of the callback called when a ProvideFile method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`out_Address` : | Used to return an 'out' argument if `error` is `NULL`: The address on which the connection manager will listen for connections for this file transfer.
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_type_file_transfer_connect_to_file_transfer_state_changed ()

    TpProxySignalConnection * tp_cli_channel_type_file_transfer_connect_to_file_transfer_state_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_type_file_transfer_signal_callback_file_transfer_state_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);

Connect a handler to the signal FileTransferStateChanged.

Emitted when the state of a file transfer changes.

`proxy` : | A TpChannel or subclass
`callback` : | Callback to be called when the signal is received
`user_data` : | User-supplied data for the callback
`destroy` : | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL`
`weak_object` : | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected
`error` : | If not `NULL`, used to raise an error if `NULL` is returned
Returns : | a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_channel_type_file_transfer_connect_to_initial_offset_defined ()

    TpProxySignalConnection * tp_cli_channel_type_file_transfer_connect_to_initial_offset_defined
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_type_file_transfer_signal_callback_initial_offset_defined callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);

Connect a handler to the signal InitialOffsetDefined.

Emitted when the value of the <tp:member-ref>InitialOffset</tp:member-ref> property has been negotiated. This signal MUST be emitted before the channel becomes Open and clients have to use this offset when transferring the file.

`proxy` : | A TpChannel or subclass
`callback` : | Callback to be called when the signal is received
`user_data` : | User-supplied data for the callback
`destroy` : | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL`
`weak_object` : | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected
`error` : | If not `NULL`, used to raise an error if `NULL` is returned
Returns : | a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_channel_type_file_transfer_connect_to_transferred_bytes_changed ()

    TpProxySignalConnection * tp_cli_channel_type_file_transfer_connect_to_transferred_bytes_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_type_file_transfer_signal_callback_transferred_bytes_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);

Connect a handler to the signal TransferredBytesChanged.

Emitted when the number of transferred bytes changes. This will not be signalled with every single byte change. Instead, the most frequent this signal will be emitted is once a second. This should be sufficient, and the <tp:member-ref>TransferredBytes</tp:member-ref> property SHOULD NOT be polled.

`proxy` : | A TpChannel or subclass
`callback` : | Callback to be called when the signal is received
`user_data` : | User-supplied data for the callback
`destroy` : | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL`
`weak_object` : | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected
`error` : | If not `NULL`, used to raise an error if `NULL` is returned
Returns : | a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_channel_type_file_transfer_run_accept_file ()

    gboolean            tp_cli_channel_type_file_transfer_run_accept_file
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint in_Address_Type,
                                                             guint in_Access_Control,
                                                             const GValue *in_Access_Control_Param,
                                                             guint64 in_Offset,
                                                             GValue **out_Address,
                                                             GError **error,
                                                             GMainLoop **loop);

Call the method AcceptFile and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

Accept a file transfer that's in the Pending state. The file transfer's state becomes Accepted after this method is called. At this point the client can connect to the socket. CM MUST emit <tp:member-ref>InitialOffsetDefined</tp:member-ref> and change the state to Open before writing to the socket. Then <tp:member-ref>InitialOffset</tp:member-ref> should be respected in case its value differs from the offset that was specified as an argument to AcceptFile.

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`in_Address_Type` : | Used to pass an 'in' argument: The type of address the connection manager should listen on.
`in_Access_Control` : | Used to pass an 'in' argument: The type of access control the connection manager should apply to the socket.
`in_Access_Control_Param` : | Used to pass an 'in' argument: A parameter for the access control type, to be interpreted as specified in the documentation for the Socket_Access_Control enum.

`in_Offset` :

Used to pass an 'in' argument: The desired offset in bytes where the file transfer should start. The offset is taken from the beginning of the file. Specifying an offset of zero will start the transfer from the beginning of the file. The offset that is actually given in the <tp:member-ref>InitialOffset</tp:member-ref> property can differ from this argument where the requested offset is not supported. (For example, some protocols do not support offsets at all so the InitialOffset property will always be 0.)

`out_Address` : | Used to return an 'out' argument if `TRUE` is returned: The address on which the connection manager will listen for connections for this file transfer.
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_type_file_transfer_run_provide_file ()

    gboolean            tp_cli_channel_type_file_transfer_run_provide_file
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint in_Address_Type,
                                                             guint in_Access_Control,
                                                             const GValue *in_Access_Control_Param,
                                                             GValue **out_Address,
                                                             GError **error,
                                                             GMainLoop **loop);

Call the method ProvideFile and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

Provide the file for an outgoing file transfer which has been offered. Opens a socket that the client can use to provide a file to the connection manager. The channel MUST have been requested, and will change state to Open when this method is called if its state was Accepted.

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`in_Address_Type` : | Used to pass an 'in' argument: The type of address the connection manager should listen on.
`in_Access_Control` : | Used to pass an 'in' argument: The type of access control the connection manager should apply to the socket.
`in_Access_Control_Param` : | Used to pass an 'in' argument: A parameter for the access control type, to be interpreted as specified in the documentation for the Socket_Access_Control enum.
`out_Address` : | Used to return an 'out' argument if `TRUE` is returned: The address on which the connection manager will listen for connections for this file transfer.
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_type_file_transfer_signal_callback_file_transfer_state_changed ()

    void                (*tp_cli_channel_type_file_transfer_signal_callback_file_transfer_state_changed)
                                                            (TpChannel *proxy,
                                                             guint arg_State,
                                                             guint arg_Reason,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Represents the signature of a callback for the signal FileTransferStateChanged.

`proxy` : | The proxy on which `tp_cli_channel_type_file_transfer_connect_to_file_transfer_state_changed()` was called
`arg_State` : | The new state of the file transfer; see the File_Transfer_State enumeration.
`arg_Reason` : | The reason for the state change; see the File_Transfer_State_Change_Reason enumeration. The value will always be File_Transfer_State_Change_Reason_None, except when changing state to cancelled.
`user_data` : | User-supplied data
`weak_object` : | User-supplied weakly referenced object

### tp_cli_channel_type_file_transfer_signal_callback_initial_offset_defined ()

    void                (*tp_cli_channel_type_file_transfer_signal_callback_initial_offset_defined)
                                                            (TpChannel *proxy,
                                                             guint64 arg_InitialOffset,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Represents the signature of a callback for the signal InitialOffsetDefined.

`proxy` : | The proxy on which `tp_cli_channel_type_file_transfer_connect_to_initial_offset_defined()` was called
`arg_InitialOffset` : | The value of the <tp:member-ref>InitialOffset</tp:member-ref> property.
`user_data` : | User-supplied data
`weak_object` : | User-supplied weakly referenced object

### tp_cli_channel_type_file_transfer_signal_callback_transferred_bytes_changed ()

    void                (*tp_cli_channel_type_file_transfer_signal_callback_transferred_bytes_changed)
                                                            (TpChannel *proxy,
                                                             guint64 arg_Count,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Represents the signature of a callback for the signal TransferredBytesChanged.

`proxy` : | The proxy on which `tp_cli_channel_type_file_transfer_connect_to_transferred_bytes_changed()` was called
`arg_Count` : | The number of already transferred bytes.
`user_data` : | User-supplied data
`weak_object` : | User-supplied weakly referenced object

## See Also

#TpChannel