Useful thread function to use in GThreadPool.

Data Structures

struct  cr_CompressionTask
struct  cr_RepomdRecordFillTask

Functions

cr_CompressionTaskcr_compressiontask_new (const char *src, const char *dst, cr_CompressionType compression_type, cr_ChecksumType checksum_type, int delsrc, GError **err)
void cr_compressiontask_free (cr_CompressionTask *task, GError **err)
void cr_compressing_thread (gpointer data, gpointer user_data)
cr_RepomdRecordFillTaskcr_repomdrecordfilltask_new (cr_RepomdRecord *record, cr_ChecksumType checksum_type, GError **err)
void cr_repomdrecordfilltask_free (cr_RepomdRecordFillTask *task, GError **err)
void cr_repomd_record_fill_thread (gpointer data, gpointer user_data)

Detailed Description

Paralelized compression example:

 cr_CompressionTask *task_1, *task_2;
 GThreadPool *pool;

 // Prepare tasks
 task_1 = cr_compressiontask_new("foo", "foo.gz", CR_CW_GZ_COMPRESSION, 1,
                                 CR_CHECKSUM_SHA256, NULL);
 task_2 = cr_compressiontask_new("bar", "bar.gz", CR_CW_GZ_COMPRESSION, 1,
                                 CR_CHECKSUM_SHA512, NULL);

 // Create pool for tasks
 pool = g_thread_pool_new(cr_compressing_thread, NULL, 2, FALSE, NULL);

 // Push tasks to the pool
 g_thread_pool_push(pool, task_1, NULL);
 g_thread_pool_push(pool, task_2, NULL);

 // Wait until both treats finish and free the pool.
 g_thread_pool_free(pool, FALSE, TRUE);

 // Use results
 // Do whatever you want or need to do

 // Clean up
 cr_compressiontask_free(task_1, NULL);
 cr_compressiontask_free(task_2, NULL);

Function Documentation

void cr_compressing_thread ( gpointer  data,
gpointer  user_data 
)

Function for GThreadPool.

void cr_compressiontask_free ( cr_CompressionTask task,
GError **  err 
)

Frees cr_CompressionTask and all its components.

Parameters:
task cr_CompressionTask task
err GError **
cr_CompressionTask* cr_compressiontask_new ( const char *  src,
const char *  dst,
cr_CompressionType  compression_type,
cr_ChecksumType  checksum_type,
int  delsrc,
GError **  err 
)

Function to prepare a new cr_CompressionTask.

Parameters:
src Source filename.
dst Destination filename or NULL (then src+compression suffix will be used).
compression_type Type of compression to use.
checksum_type Checksum type for stat calculation. Note: Stat is always use. If you don't need a stats use CR_CHECKSUM_UNKNOWN, then no checksum calculation will be performed, only size would be calculated. Don't be afraid, size calculation has almost no overhead.
delsrc Delete src after successuful compression. 0 = Do not delete, delete otherwise
err GError **. Note: This is a GError for the cr_compresiontask_new function. The GError that will be at created cr_CompressionTask is different.
Returns:
New cr_CompressionTask.
void cr_repomd_record_fill_thread ( gpointer  data,
gpointer  user_data 
)

Function for GThread Pool.

void cr_repomdrecordfilltask_free ( cr_RepomdRecordFillTask task,
GError **  err 
)
cr_RepomdRecordFillTask* cr_repomdrecordfilltask_new ( cr_RepomdRecord record,
cr_ChecksumType  checksum_type,
GError **  err 
)

Function to prepare a new cr_RepomdRecordFillTask.

Parameters:
record cr_RepomdRecord.
checksum_type Type of checksum.
err GError **
Returns:
New cr_RepomdRecordFillTask.

Generated on 22 Oct 2014 for createrepo_c library by  doxygen 1.6.1