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; }
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); }