## PkPackageSack PkPackageSack — A sack of packages that can be manipulated |

## Synopsis

    #define             PK_PACKAGE_SACK_ERROR
    #define             PK_PACKAGE_SACK_TYPE_ERROR
                        PkPackageSackPrivate;
                        PkPackageSackResults;
                        PkPackageSack;
    GQuark              pk_package_sack_error_quark         (void);
    PkPackageSack *     pk_package_sack_new                 (void);
    void                pk_package_sack_test                (gpointer user_data);
    guint               pk_package_sack_get_size            (PkPackageSack *sack);
    PkPackage *         pk_package_sack_get_index           (PkPackageSack *sack,
                                                             guint i);
    void                pk_package_sack_clear               (PkPackageSack *sack);
    gchar **            pk_package_sack_get_ids             (PkPackageSack *sack);
    void                pk_package_sack_sort_package_id     (PkPackageSack *sack);
    void                pk_package_sack_sort_info           (PkPackageSack *sack);
    void                pk_package_sack_sort_summary        (PkPackageSack *sack);
    gboolean            pk_package_sack_add_package         (PkPackageSack *sack,
                                                             PkPackage *package);
    gboolean            pk_package_sack_add_package_by_id   (PkPackageSack *sack,
                                                             const gchar *package_id,
                                                             GError **error);
    gboolean            pk_package_sack_remove_package      (PkPackageSack *sack,
                                                             PkPackage *package);
    gboolean            pk_package_sack_remove_package_by_id
                                                            (PkPackageSack *sack,
                                                             const gchar *package_id);
    PkPackage *         pk_package_sack_find_by_id          (PkPackageSack *sack,
                                                             const gchar *package_id);
    guint64             pk_package_sack_get_total_bytes     (PkPackageSack *sack);
    gboolean            pk_package_sack_merge_generic_finish
                                                            (PkPackageSack *sack,
                                                             GAsyncResult *res,
                                                             GError **error);
    void                pk_package_sack_merge_resolve_async (PkPackageSack *sack,
                                                             GCancellable *cancellable,
                                                             PkProgressCallback progress_callback,
                                                             gpointer progress_user_data,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);
    void                pk_package_sack_merge_details_async (PkPackageSack *sack,
                                                             GCancellable *cancellable,
                                                             PkProgressCallback progress_callback,
                                                             gpointer progress_user_data,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);
    void                pk_package_sack_merge_update_detail_async
                                                            (PkPackageSack *sack,
                                                             GCancellable *cancellable,
                                                             PkProgressCallback progress_callback,
                                                             gpointer progress_user_data,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);

## Object Hierarchy

      GObject
       +----PkPackageSack

## Description

A package sack is a set of packages that can have operations done on them in parallel. This might be adding summary text for bare package ID's, or to add package or update details.

## Details

### PK_PACKAGE_SACK_ERROR

    #define PK_PACKAGE_SACK_ERROR		(pk_package_sack_error_quark ())

### PK_PACKAGE_SACK_TYPE_ERROR

    #define PK_PACKAGE_SACK_TYPE_ERROR	(pk_package_sack_error_get_type ())

### PkPackageSackPrivate

    typedef struct _PkPackageSackPrivate PkPackageSackPrivate;

Private PkPackageSack data

### PkPackageSackResults

    typedef struct _PkPackageSackResults PkPackageSackResults;

### PkPackageSack

    typedef struct _PkPackageSack PkPackageSack;

### pk_package_sack_error_quark ()

    GQuark              pk_package_sack_error_quark         (void);

Returns : |

### pk_package_sack_new ()

    PkPackageSack *     pk_package_sack_new                 (void);

Returns : | a new PkPackageSack object.

### pk_package_sack_test ()

    void                pk_package_sack_test                (gpointer user_data);

`user_data` : |

### pk_package_sack_get_size ()

    guint               pk_package_sack_get_size            (PkPackageSack *sack);

Gets the number of packages in the sack

`sack` : | a valid PkPackageSack instance
Returns : | the number of packages in the sack

### pk_package_sack_get_index ()

    PkPackage *         pk_package_sack_get_index           (PkPackageSack *sack,
                                                             guint i);

Gets a packages from the sack

`sack` : | a valid PkPackageSack instance
`i` : | the instance to get
Returns : | a `PkPackage` instance

### pk_package_sack_clear ()

    void                pk_package_sack_clear               (PkPackageSack *sack);

Empty all the packages from the sack

`sack` : | a valid PkPackageSack instance

### pk_package_sack_get_ids ()

    gchar **            pk_package_sack_get_ids             (PkPackageSack *sack);

Returns all the Package IDs in the sack

`sack` : | a valid PkPackageSack instance
Returns : | the number of packages in the sack, free with `g_strfreev()`

### pk_package_sack_sort_package_id ()

    void                pk_package_sack_sort_package_id     (PkPackageSack *sack);

Sorts by Package ID

`sack` : | a valid PkPackageSack instance

### pk_package_sack_sort_info ()

    void                pk_package_sack_sort_info           (PkPackageSack *sack);

Sorts by PkInfoEnum

`sack` : | a valid PkPackageSack instance

### pk_package_sack_sort_summary ()

    void                pk_package_sack_sort_summary        (PkPackageSack *sack);

Sorts by summary

`sack` : | a valid PkPackageSack instance

### pk_package_sack_add_package ()

    gboolean            pk_package_sack_add_package         (PkPackageSack *sack,
                                                             PkPackage *package);

Adds a package to the sack.

`sack` : | a valid PkPackageSack instance
`package` : | a valid PkPackage instance
Returns : | `TRUE` if the package was added to the sack

### pk_package_sack_add_package_by_id ()

    gboolean            pk_package_sack_add_package_by_id   (PkPackageSack *sack,
                                                             const gchar *package_id,
                                                             GError **error);

Adds a package reference to the sack.

`sack` : | a valid PkPackageSack instance
`package_id` : | a package_id descriptor
`error` : | a `GError` to put the error code and message in, or `NULL`
Returns : | `TRUE` if the package was added to the sack

### pk_package_sack_remove_package ()

    gboolean            pk_package_sack_remove_package      (PkPackageSack *sack,
                                                             PkPackage *package);

Removes a package reference from the sack. The pointers have to match exactly.

`sack` : | a valid PkPackageSack instance
`package` : | a valid PkPackage instance
Returns : | `TRUE` if the package was removed from the sack

### pk_package_sack_remove_package_by_id ()

    gboolean            pk_package_sack_remove_package_by_id
                                                            (PkPackageSack *sack,
                                                             const gchar *package_id);

Removes a package reference from the sack. As soon as one package is removed the search is stopped.

`sack` : | a valid PkPackageSack instance
`package_id` : | a package_id descriptor
Returns : | `TRUE` if the package was removed from the sack

### pk_package_sack_find_by_id ()

    PkPackage *         pk_package_sack_find_by_id          (PkPackageSack *sack,
                                                             const gchar *package_id);

Finds a package in a sack from reference. As soon as one package is found the search is stopped.

`sack` : | a valid PkPackageSack instance
`package_id` : | a package_id descriptor
Returns : | the PkPackage object, or `NULL` if unfound. Free with `g_object_unref()`

### pk_package_sack_get_total_bytes ()

    guint64             pk_package_sack_get_total_bytes     (PkPackageSack *sack);

Gets the total size of the package sack in bytes.

`sack` : | a valid PkPackageSack instance
Returns : | the size in bytes

### pk_package_sack_merge_generic_finish ()

    gboolean            pk_package_sack_merge_generic_finish
                                                            (PkPackageSack *sack,
                                                             GAsyncResult *res,
                                                             GError **error);

Gets the result from the asynchronous function.

`sack` : | a valid PkPackageSack instance
`res` : | the GAsyncResult
`error` : | A GError or `NULL`
Returns : | `TRUE` for success

### pk_package_sack_merge_resolve_async ()

    void                pk_package_sack_merge_resolve_async (PkPackageSack *sack,
                                                             GCancellable *cancellable,
                                                             PkProgressCallback progress_callback,
                                                             gpointer progress_user_data,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);

Merges in details about packages using resolve.

`sack` : | a valid PkPackageSack instance
`cancellable` : | a GCancellable or `NULL`
`progress_callback` : | the function to run when the progress changes
`progress_user_data` : | data to pass to `progress_callback`
`callback` : | the function to run on completion
`user_data` : | the data to pass to `callback`

### pk_package_sack_merge_details_async ()

    void                pk_package_sack_merge_details_async (PkPackageSack *sack,
                                                             GCancellable *cancellable,
                                                             PkProgressCallback progress_callback,
                                                             gpointer progress_user_data,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);

Merges in details about packages.

`sack` : | a valid PkPackageSack instance
`cancellable` : | a GCancellable or `NULL`
`progress_callback` : | the function to run when the progress changes
`progress_user_data` : | data to pass to `progress_callback`
`callback` : | the function to run on completion
`user_data` : | the data to pass to `callback`

### pk_package_sack_merge_update_detail_async ()

    void                pk_package_sack_merge_update_detail_async
                                                            (PkPackageSack *sack,
                                                             GCancellable *cancellable,
                                                             PkProgressCallback progress_callback,
                                                             gpointer progress_user_data,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);

Merges in update details about packages.

`sack` : | a valid PkPackageSack instance
`cancellable` : | a GCancellable or `NULL`
`progress_callback` : | the function to run when the progress changes
`progress_user_data` : | data to pass to `progress_callback`
`callback` : | the function to run on completion
`user_data` : | the data to pass to `callback`