## RBTrackTransferQueue

RBTrackTransferQueue — track transfer queue and surrounding junk

## Functions

RBTrackTransferQueue * | rb_track_transfer_queue_new ()
void | rb_track_transfer_queue_start_batch ()
void | rb_track_transfer_queue_cancel_batch ()
GList * | rb_track_transfer_queue_find_batch_by_source ()

## Properties

RBTrackTransferBatch * | batch | Read
RBShell * | shell | Read / Write / Construct Only

## Signals

gboolean | missing-plugins | Run Last
void | transfer-progress | Run Last

## Types and Values

struct | RBTrackTransferQueue
struct | RBTrackTransferQueueClass

## Object Hierarchy

        GObject
        ╰── RBTrackTransferQueue

## Description

## Functions

### rb_track_transfer_queue_new ()

    RBTrackTransferQueue *
    rb_track_transfer_queue_new (RBShell *shell);

Creates the RBTrackTransferQueue instance

#### Parameters

shell | the RBShell |

#### Returns

the RBTrackTransferQueue

### rb_track_transfer_queue_start_batch ()

    void
    rb_track_transfer_queue_start_batch (RBTrackTransferQueue *queue,
                                         RBTrackTransferBatch *batch);

Adds a new transfer batch to the transfer queue; if the queue is currently empty, the transfer will start immediately, but not before the call returns.

#### Parameters

queue | the RBTrackTransferQueue |
batch | the RBTrackTransferBatch to add to the queue |

### rb_track_transfer_queue_cancel_batch ()

    void
    rb_track_transfer_queue_cancel_batch (RBTrackTransferQueue *queue,
                                          RBTrackTransferBatch *batch);

Removes a transfer batch from the queue. If an entry from the batch is currently being transferred, the transfer will be aborted.

#### Parameters

queue | the RBTrackTransferQueue |
batch | the RBTrackTransferBatch to cancel, or NULL for the current batch |

### rb_track_transfer_queue_find_batch_by_source ()

    GList *
    rb_track_transfer_queue_find_batch_by_source
                                   (RBTrackTransferQueue *queue,
                                    RBSource *source);

Finds all transfer batches where `source` is the source or destination. This should be used to wait for transfers to finish (or cancel them) before ejecting a device. The transfer batches are returned in the order they're found in the queue, so waiting for the `RBTrackTransferBatch` ::complete signal on the last one is sufficient to wait for them all to finish.

#### Parameters

queue | the RBTrackTransferQueue |
source | the RBSource to search for |

#### Returns

GList of RBTrackTransferBatch objects, not referenced.

[element-type RBTrackTransferBatch][transfer container]

## Types and Values

### struct RBTrackTransferQueue

    struct RBTrackTransferQueue;

### struct RBTrackTransferQueueClass

    struct RBTrackTransferQueueClass {
    	GObjectClass parent_class;

    	/* signals */
    	void (*transfer_progress) (RBTrackTransferQueue *queue,
    					 int done,
    					 int total,
    					 double fraction,
    					 int time_left);
    };

## Property Details

### The `“batch”` property

      “batch”                    RBTrackTransferBatch *

The current RBTrackTransferBatch being processed

Flags: Read

### The `“shell”` property

      “shell”                    RBShell *

The RBShell

Flags: Read / Write / Construct Only

## Signal Details

### The `“missing-plugins”` signal

    gboolean
    user_function (RBTrackTransferQueue *queue,
                   GStrv                 details,
                   GStrv                 descriptions,
                   GClosure             *closure,
                   gpointer              user_data)

Emitted to request installation of one or more encoder plugins for a destination media format. When the closure included in the signal args is called, the transfer batch will be started.

#### Parameters

queue | the RBTrackTransferQueue |
details | the list of plugin detail strings describing the missing plugins |
descriptions | the list of descriptions for the missing plugins |
closure | a GClosure to be called when the plugin installation is complete |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“transfer-progress”` signal

    void
    user_function (RBTrackTransferQueue *queue,
                   gint                  done,
                   gint                  total,
                   gdouble               fraction,
                   gint                  time_left,
                   gpointer              user_data)

Emitted regularly to convey progress information. At the end of any given transfer batch, there will be one signal emission with `done` == `total` and `fraction` == 1.0.

#### Parameters

queue | the RBTrackTransferQueue |
done | the number of entries transferred |
total | the total number of entries in the batch |
fraction | the fraction of the batch that has been transferred |
time_left | the estimated remaining time (in seconds) |
user_data | user data set when the signal handler was connected. |

Flags: Run Last