Exemplo n.º 1
0
static int
async_init (SeafObjStore *obj_store, CEventManager *ev_mgr)
{
    GError *error = NULL;

    obj_store->ev_mgr = ev_mgr;

    obj_store->read_tpool = g_thread_pool_new (reader_thread,
                                               obj_store,
                                               MAX_READER_THREADS,
                                               FALSE,
                                               &error);
    if (error) {
        g_warning ("Failed to start reader thread pool: %s.\n", error->message);
        g_clear_error (&error);
        return -1;
    }

    obj_store->readers = g_hash_table_new_full (g_direct_hash, g_direct_equal,
                                                NULL, g_free);
    obj_store->read_ev_id = cevent_manager_register (ev_mgr,
                                                     on_read_done,
                                                     obj_store);

    obj_store->write_tpool = g_thread_pool_new (writer_thread,
                                                obj_store,
                                                MAX_WRITER_THREADS,
                                                FALSE,
                                                &error);
    if (error) {
        g_warning ("Failed to start writer thread pool: %s.\n", error->message);
        g_clear_error (&error);
        return -1;
    }

    obj_store->writers = g_hash_table_new_full (g_direct_hash, g_direct_equal,
                                                NULL, g_free);
    obj_store->write_ev_id = cevent_manager_register (ev_mgr,
                                                      on_write_done,
                                                      obj_store);

    obj_store->stat_tpool = g_thread_pool_new (stat_thread,
                                               obj_store,
                                               MAX_STAT_THREADS,
                                               FALSE,
                                               &error);
    if (error) {
        g_warning ("Failed to start statr thread pool: %s.\n", error->message);
        g_clear_error (&error);
        return -1;
    }

    obj_store->stats = g_hash_table_new_full (g_direct_hash, g_direct_equal,
                                              NULL, g_free);
    obj_store->stat_ev_id = cevent_manager_register (ev_mgr,
                                                     on_stat_done,
                                                     obj_store);

    return 0;
}
Exemplo n.º 2
0
int
seaf_branch_manager_init (SeafBranchManager *mgr)
{
#if defined( SEAFILE_SERVER ) && defined( FULL_FEATURE )
    mgr->priv->cevent_id = cevent_manager_register (seaf->ev_mgr,
                                    (cevent_handler)publish_repo_update_event,
                                                    NULL);
#endif    

    return open_db (mgr);
}