aboutsummaryrefslogtreecommitdiffstats
path: root/docs/README.md
blob: 503b85455c3dae17597fb7d5c6a0a40b9b5aaa0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# AGL Framework Binder

This project provides the binder component of the the microservice architecture 
of Automotive Grade Linux (AGL).

This project is available there https://git.automotivelinux.org/src/app-framework-binder/

It can be cloned with **git clone https://git.automotivelinux.org/src/app-framework-binder**.

## License and copying

This software is an open source software funded by LinuxFoundation and Renesas.

This software is delivered under the terms of the open source license Apache 2.

This license is available in the file LICENSE-2.0.txt or on the worl wide web at the
location https://opensource.org/licenses/Apache-2.0
-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
/*
 * Copyright (C) 2016, 2017, 2018 "IoT.bzh"
 * Author: José Bollo <jose.bollo@iot.bzh>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#define _GNU_SOURCE

#include <json-c/json.h>

#include "afb-msg-json.h"
#include "afb-context.h"

static const char _success_[] = "success";

struct json_object *afb_msg_json_reply(struct json_object *resp, const char *error, const char *info, struct afb_context *context)
{
	json_object *msg, *request;
	const char *token, *uuid;
	json_object *type_reply = NULL;

	msg = json_object_new_object();
	if (resp != NULL)
		json_object_object_add(msg, "response", resp);

	type_reply = json_object_new_string("afb-reply");
	json_object_object_add(msg, "jtype", type_reply);

	request = json_object_new_object();
	json_object_object_add(msg, "request", request);
	json_object_object_add(request, "status", json_object_new_string(error ?: _success_));

	if (info != NULL)
		json_object_object_add(request, "info", json_object_new_string(info));

	if (context != NULL) {
		token = afb_context_sent_token(context);
		if (token != NULL)
			json_object_object_add(request, "token", json_object_new_string(token));

		uuid = afb_context_sent_uuid(context);
		if (uuid != NULL)
			json_object_object_add(request, "uuid", json_object_new_string(uuid));
	}

	return msg;
}

struct json_object *afb_msg_json_event(const char *event, struct json_object *object)
{
	json_object *msg;
	json_object *type_event = NULL;

	msg = json_object_new_object();

	json_object_object_add(msg, "event", json_object_new_string(event));

	if (object != NULL)
		json_object_object_add(msg, "data", object);

	type_event = json_object_new_string("afb-event");
	json_object_object_add(msg, "jtype", type_event);

	return msg;
}

struct json_object *afb_msg_json_internal_error()
{
	return afb_msg_json_reply(NULL, "failed", "internal error", NULL);
}