示例#1
0
GError *
meta2_backend_has_container(struct meta2_backend_s *m2,
		struct oio_url_s *url)
{
	GError *err = NULL;

	EXTRA_ASSERT(m2 != NULL);
	EXTRA_ASSERT(url != NULL);
	GRID_DEBUG("HAS(%s)", oio_url_get(url, OIOURL_WHOLE));

	struct sqlx_name_mutable_s n;
	sqlx_name_fill (&n, url, NAME_SRVTYPE_META2, 1);
	err = sqlx_repository_has_base(m2->backend.repo, sqlx_name_mutable_to_const(&n));
	sqlx_name_clean (&n);

	if (NULL != err) {
		g_prefix_error(&err, "File error: ");
		return err;
	}

	struct sqlx_sqlite3_s *sq3 = NULL;
	err = m2b_open(m2, url, M2V2_OPEN_LOCAL, &sq3);
	if (NULL == err) {
		if (!sqlx_admin_has(sq3, META2_INIT_FLAG))
			err = NEWERROR(CODE_CONTAINER_NOTFOUND,
					"Container created but not initiated");
		m2b_close(sq3);
	}
	return err;
}
示例#2
0
gboolean
meta1_backend_base_already_created(struct meta1_backend_s *m1, const guint8 *prefix)
{
	gchar base[5] = {0,0,0,0,0};
	GError *err = NULL;

	g_snprintf(base, sizeof(base), "%02X%02X", prefix[0], prefix[1]);
	struct sqlx_name_s n = {.base=base, .type=NAME_SRVTYPE_META1, .ns=m1->backend.ns_name};
	err = sqlx_repository_has_base(m1->backend.repo, &n);
	if (!err)
		return TRUE;
	g_clear_error(&err);
	return FALSE;
}

gchar *
meta1_backend_get_ns_name(const struct meta1_backend_s *m1)
{
	return g_strdup(m1->backend.ns_name);
}

const gchar*
meta1_backend_get_local_addr(struct meta1_backend_s *m1)
{
	return sqlx_repository_get_local_addr(m1->backend.repo);
}