summaryrefslogtreecommitdiffstats
path: root/include/afb/afb-daemon-itf.h
blob: 492032ee514bcc142a1b34442e09bc47b5425efd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
 * Copyright (C) 2016, 2017 "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.
 */

#pragma once

#include <stdarg.h>

/* declaration of features of libsystemd */
struct sd_event;
struct sd_bus;
struct afb_stored_req;
struct afb_req;
struct afb_dynapi;

/*
 * Definition of the facilities provided by the daemon.
 */
struct afb_daemon_itf
{
	int (*event_broadcast)(void *closure, const char *name, struct json_object *object); /* broadcasts evant 'name' with 'object' */
	struct sd_event *(*get_event_loop)(void *closure);      /* gets the common systemd's event loop */
	struct sd_bus *(*get_user_bus)(void *closure);          /* gets the common systemd's user d-bus */
	struct sd_bus *(*get_system_bus)(void *closure);        /* gets the common systemd's system d-bus */
	void (*vverbose_v1)(void*closure, int level, const char *file, int line, const char *fmt, va_list args);
	struct afb_event (*event_make)(void *closure, const char *name); /* creates an event of 'name' */
	int (*rootdir_get_fd)(void *closure);
	int (*rootdir_open_locale)(void *closure, const char *filename, int flags, const char *locale);
	int (*queue_job)(void *closure, void (*callback)(int signum, void *arg), void *argument, void *group, int timeout);
	void (*vverbose_v2)(void*closure, int level, const char *file, int line, const char * func, const char *fmt, va_list args);
	struct afb_req (*unstore_req)(void*closure, struct afb_stored_req *sreq);
	int (*require_api)(void*closure, const char *name, int initialized);
	int (*rename_api)(void*closure, const char *name);
	int (*new_api)(void *closure, const char *api, const char *info, int noconcurrency, int (*preinit)(void*, struct afb_dynapi *), void *preinit_closure);
};

/*
 * Structure for accessing daemon.
 * See also: afb_daemon_get_event_sender, afb_daemon_get_event_loop, afb_daemon_get_user_bus, afb_daemon_get_system_bus
 */
struct afb_daemon
{
	const struct afb_daemon_itf *itf;       /* the interfacing functions */
	void *closure;                          /* the closure when calling these functions */
};
;b901080cf57d9a7f5476ab4d96e56c30db8170a8" upstream="dunfell" /> <!-- meta-ros layer --> <project name="ros/meta-ros" path="external/meta-ros" remote="github" revision="7ded597103e8e54ffa979d042cdbbedb76ff7cb5" upstream="dunfell"/> <!-- BSPs --> <!-- Renesas Gen3 specific things --> <project name="renesas-rcar/meta-renesas" path="bsp/meta-renesas" remote="github" revision="0fe77668f5d9a31a5d10449988c3d8fb8dc475c5" upstream="dunfell"/> <project name="CogentEmbedded/meta-rcar" path="bsp/meta-rcar" remote="github" revision="da3177eca5e831f4cab15d51b4a7d3317f786a91" upstream="v5.5.0"/> <project name="AGL/meta-agl-refhw" path="bsp/meta-agl-refhw" /> <!-- consolidate on meta-freescale from git.yoctoproject.org --> <project name="meta-freescale" path="bsp/meta-freescale" remote="yocto" revision="f2421b9fa04e9cad0109bfbd095ea0684c5e2281" upstream="dunfell"/> <project name="Freescale/meta-freescale-3rdparty" path="bsp/meta-freescale-3rdparty" remote="github" revision="a7b96dc91bb2818d8ed8210654db10d08d4d7890" upstream="dunfell"/> <!-- TI Vayu / Jacinto 6 / DRA7 --> <project name="meta-arm" path="bsp/meta-arm" remote="yocto" revision="c4f04f3fb66f8f4365b08b553af8206372e90a63" upstream="dunfell"/> <project name="meta-ti" path="bsp/meta-ti" remote="yocto" revision="02a53f48b9bdb242185204610610f2209bc92ca6" upstream="dunfell"/> <!-- Raspberry Pi 3, 3B+, and 4 --> <project name="meta-raspberrypi" path="bsp/meta-raspberrypi" remote="yocto" revision="59c2d6f7a8b1239bd7b587b9180c2a55f9c695a2" upstream="dunfell"/> <!-- DragonBoard 410c specific things --> <project name="meta-qcom" path="bsp/meta-qcom" remote="yocto" revision="2778e164cd0427277e37fc03c8ed19179da1613b" upstream="dunfell"/> <!-- Sancloud BSP layers --> <project name="SanCloudLtd/meta-sancloud" path="bsp/meta-sancloud" remote="github" revision="e220d23c2c01ca18161d3fb0486f295e6e90ba03" upstream="dunfell"/> <project name="EmbeddedAndroid/meta-rtlwifi" path="bsp/meta-rtlwifi" remote="github" revision="7b556aa2265cfc41e6e5fda7085619436fe9a385" upstream="dunfell"/> <!-- meta-synopsys - support for ARC HSDK board --> <project name="foss-for-synopsys-dwc-arc-processors/meta-synopsys" path="bsp/meta-synopsys" remote="github" revision="80656bf6551b2056c8cb02a74510e595e2553048" upstream="dunfell-agl"/> </manifest>