Ejemplo n.º 1
0
static void rm_tm_chunk_flush(RmTreeMerger *self, char **out_paths, int n_paths) {
    rm_tm_count_files(&self->count_tree, out_paths, self->session);

    if(self->session->cfg->use_meta_cache) {
        for(int i = 0; i < n_paths; ++i) {
            g_free(out_paths[i]);
        }
    }
}
Ejemplo n.º 2
0
RmTreeMerger *rm_tm_new(RmSession *session) {
    RmTreeMerger *self = g_slice_new(RmTreeMerger);
    self->session = session;
    g_queue_init(&self->valid_dirs);
    self->free_list = g_queue_new();

    self->result_table = g_hash_table_new_full((GHashFunc)rm_directory_hash,
                                               (GEqualFunc)rm_directory_equal, NULL,
                                               (GDestroyNotify)g_queue_free);

    self->file_groups =
        g_hash_table_new_full((GHashFunc)rm_digest_hash, (GEqualFunc)rm_digest_equal,
                              NULL, (GDestroyNotify)g_queue_free);

    self->known_hashs = g_hash_table_new_full(NULL, NULL, NULL, NULL);

    rm_trie_init(&self->dir_tree);
    rm_trie_init(&self->count_tree);

    rm_tm_count_files(&self->count_tree, session->cfg->paths, session);

    return self;
}