예제 #1
0
static MESSAGE
make_srv_request(const gchar *rn, struct sqlxsrv_name_s *name)
{
	MESSAGE req = NULL;
	gchar strcid[65], strseq[32];
	GByteArray *gba_cid;

	gba_cid = metautils_gba_from_cid(*(name->cid));
	memset(strcid, 0, sizeof(strcid));
	buffer2str(name->cid, sizeof(container_id_t), strcid, sizeof(strcid));
	g_snprintf(strseq, sizeof(strseq), "%"G_GINT64_FORMAT, name->seq);

	req = message_create_request(NULL, NULL, rn, NULL, NULL);

	message_add_fields_str(req,
				"BASE_SEQ", strseq,
				"BASE_NAME", strcid,
				"BASE_TYPE", name->schema,
				"SCHEMA", name->schema,
				"NAMESPACE", name->ns,
				"VIRTUAL_NAMESPACE", name->ns,
				NULL);

	message_add_fields_gba(req,
				"CONTAINER_ID", gba_cid,
				NULL);

	g_byte_array_free(gba_cid, TRUE);
	return req;
}
예제 #2
0
GByteArray*
m2v2_remote_pack_SUBST_CHUNKS(GByteArray *sid, struct hc_url_s *url,
		GSList *new_chunks, GSList *old_chunks, gboolean restrict_to_alias)
{
	struct message_s *msg;
	GByteArray *new_chunks_gba = bean_sequence_marshall(new_chunks);
	GByteArray *old_chunks_gba = bean_sequence_marshall(old_chunks);
	msg = _m2v2_build_request("M2V2_SUBST_CHUNKS", sid, url, NULL);
	if (restrict_to_alias) {
		(void) message_add_field(msg,
				M2_KEY_RESTRICT_TO_ALIAS, sizeof(M2_KEY_RESTRICT_TO_ALIAS)-1,
				"TRUE", 5, NULL);
	}
	message_add_fields_gba(msg,
			M2_KEY_NEW_CHUNKS, new_chunks_gba,
			M2_KEY_OLD_CHUNKS, old_chunks_gba,
			NULL);
	g_byte_array_unref(new_chunks_gba);
	g_byte_array_unref(old_chunks_gba);
	return message_marshall_gba_and_clean(msg);
}