Пример #1
0
GError *
conscience_remote_get_namespace (const char *cs, namespace_info_t **out)
{
	MESSAGE req = metautils_message_create_named(NAME_MSGNAME_CS_GET_NSINFO);
	GByteArray *gba = NULL;
	GError *err = gridd_client_exec_and_concat (cs, CS_CLIENT_TIMEOUT,
			message_marshall_gba_and_clean(req), &gba);
	if (err) {
		g_assert (gba == NULL);
		g_prefix_error(&err, "request: ");
		return err;
	}

	*out = namespace_info_unmarshall(gba->data, gba->len, &err);
	g_byte_array_unref (gba);
	if (*out) return NULL;
	GSETERROR(&err, "Decoding error");
	return err;
}
Пример #2
0
gint
namespace_info_unmarshall_one(struct namespace_info_s **ni, const void *s, gsize *sSize, GError **err)
{
	struct namespace_info_s *result;
	
	result = namespace_info_unmarshall(s, *sSize, err);
	if (!result) {
		GSETERROR(err, "Unmarshalling error");
		return 0;
	}
	
	if (ni)
		*ni = result;
	else
		namespace_info_free(result);

	errno = 0;
	return 1;
}
Пример #3
0
namespace_info_t *
gcluster_get_namespace_info_full(addr_info_t * addr, long timeout, GError ** error)
{
	EXTRA_ASSERT (addr != NULL);
	gchar str[STRLEN_ADDRINFO];
	addr_info_to_string(addr, str, sizeof(str));

	GByteArray *out = NULL;
	GError *err = gridd_client_exec_and_concat (str, ((gdouble)timeout)/1000.0,
			message_marshall_gba_and_clean(metautils_message_create_named(
					NAME_MSGNAME_CS_GET_NSINFO)), &out);
	if (err) {
		g_prefix_error(&err, "request: ");
		g_error_transmit(error, err);
		return NULL;
	}
	
	namespace_info_t *ns_info = namespace_info_unmarshall(out->data, out->len, error);
	if (!ns_info)
		GSETERROR(error, "Decoding error");
	return ns_info;
}