static gchar * _pack_meta1ref(struct meta0_assign_meta1_s *m1ref) { gchar *nb = g_strdup_printf("%d",m1ref->score); gchar * result = meta0_utils_pack_meta1ref(m1ref->addr,( m1ref->used ? "1":"0") ,nb); g_free(nb); return result; }
static GError* _load_meta1ref_from_base(struct sqlx_sqlite3_s *sq3, GPtrArray **result) { GError *err = NULL; GPtrArray *array; sqlite3_stmt *stmt; int rc; guint count = 0; array = g_ptr_array_new(); sqlite3_prepare_debug(rc, sq3->db, "SELECT addr,state,prefixes FROM meta1_ref", -1, &stmt, NULL); if (rc != SQLITE_OK && rc != SQLITE_DONE) { if ( rc == SQLITE_ERROR ) { GRID_DEBUG("Missing table meta1ref in DB"); *result = array; return NULL; } return SQLITE_GERROR(sq3->db, rc); } for (;;) { rc = sqlite3_step(stmt); if (rc == SQLITE_ROW) { const unsigned char *url,*prefix_nb,*ref; url = sqlite3_column_text(stmt,0); ref = sqlite3_column_text(stmt,1); prefix_nb = sqlite3_column_text(stmt,2); GRID_INFO("url %s, ref %s,prefix_nb %s ",url,ref,prefix_nb); g_ptr_array_add(array,meta0_utils_pack_meta1ref((gchar *)url,(gchar *)ref,(gchar *)prefix_nb)); count++; } else if (rc == SQLITE_DONE || rc == SQLITE_OK) break; else if (rc == SQLITE_BUSY) sleep(1); else { err = SQLITE_GERROR(sq3->db, rc); break; } } sqlite3_finalize_debug(rc, stmt); if (!err) { *result = array; GRID_INFO("Reloaded %u meta1 in %p (%u)", count, array, array->len); } return err; }