示例#1
0
GByteArray*
sqlx_pack_RESTORE(struct sqlx_name_s *name, const guint8 *raw, gsize rawsize)
{
	MESSAGE req = make_request(NAME_MSGNAME_SQLX_RESTORE, name);
	metautils_message_set_BODY(req, raw, rawsize);
	return message_marshall_gba_and_clean(req);
}
示例#2
0
gint
reply_context_reply (struct reply_context_s *ctx, GError **err)
{
    EXTRA_ASSERT (ctx != NULL);

    register gchar *ptr_msg = ctx->header.msg ? ctx->header.msg : "NOMSG";
    MESSAGE answer = metaXServer_reply_simple (ctx->req_ctx->request, ctx->header.code, ptr_msg);
    if (ctx->extra_headers)
        g_hash_table_foreach(ctx->extra_headers, reply_ctx_header_adder, answer);
    if (ctx->body.buffer && (ctx->body.size > 0))
        metautils_message_set_BODY(answer, ctx->body.buffer, ctx->body.size);

    GByteArray *encoded = message_marshall_gba_and_clean(answer);
    answer = NULL;
    if (encoded) {
        gint _to =  MAX(MS_REPLY_TIMEOUT, MIN(60000, default_to_operation));
        gint sent = sock_to_write(ctx->req_ctx->fd, _to, encoded->data, encoded->len, err);
        gboolean done = (sent > 0) && (encoded->len == (guint)sent);
        g_byte_array_unref (encoded);
        if (!done) {
            g_prefix_error(err, "Failed to reply: ");
            return 0;
        }
    }
    return 1;
}
示例#3
0
void
metautils_message_add_body_unref (MESSAGE m, GByteArray *body)
{
	if (!body)
		return;
	if (body->len && body->data)
		metautils_message_set_BODY (m, body->data, body->len);
	g_byte_array_unref (body);
}
示例#4
0
GError*
meta0_remote_disable_meta1(const char *m0, gchar **urls, gboolean nocheck)
{
	if (!urls || !*urls)
		return NEWERROR(CODE_BAD_REQUEST, "Too few URL's");
	MESSAGE request = metautils_message_create_named(NAME_MSGNAME_M0_DISABLE_META1);
	if (nocheck)
		metautils_message_add_field_str(request, NAME_MSGKEY_NOCHECK, "yes");
	gchar *body = g_strjoinv("\n", urls);
	metautils_message_set_BODY(request, body, strlen(body));
	g_free(body);
	return _m0_remote_no_return (m0, message_marshall_gba_and_clean(request));
}
示例#5
0
GError*
meta0_remote_fill(const char *m0, gchar **urls, guint nbreplicas)
{
	if (nbreplicas < 1)
		return NEWERROR(CODE_BAD_REQUEST, "Too few replicas");
	if (!urls || !*urls)
		return NEWERROR(CODE_BAD_REQUEST, "Too few URL's");
	if (nbreplicas > g_strv_length(urls))
		return NEWERROR(CODE_BAD_REQUEST, "Too many replicas for the URL's set");

	MESSAGE request = metautils_message_create_named(NAME_MSGNAME_M0_FILL);
	metautils_message_add_field_strint64(request, NAME_MSGKEY_REPLICAS, nbreplicas);
	gchar *body = g_strjoinv("\n", urls);
	metautils_message_set_BODY(request, body, strlen(body));
	g_free(body);
	return _m0_remote_no_return (m0, message_marshall_gba_and_clean(request));
}