57 #include <amxc/amxc.h>
58 #include <amxp/amxp.h>
60 #include <amxd/amxd_common.h>
61 #include <amxd/amxd_dm.h>
62 #include <amxd/amxd_object.h>
63 #include <amxd/amxd_object_event.h>
64 #include <amxd/amxd_path.h>
74 UNUSED
const amxc_var_t*
const data,
75 UNUSED
void*
const priv) {
76 amxp_signal_t* signal = NULL;
77 syslog(LOG_USER | LOG_NOTICE,
"object '%s' available", sig_name + 5);
78 signal = amxp_sigmngr_find_signal(NULL, sig_name);
79 amxp_signal_delete(&signal);
84 amxp_sigmngr_emit_signal(NULL,
"wait:done", NULL);
89 UNUSED
const amxc_var_t* args,
93 const char*
object = (
const char*) priv;
108 char* object_path = NULL;
110 amxc_string_t signal_name;
111 amxp_signal_t* signal = NULL;
113 amxd_path_init(&path, NULL);
114 amxc_string_init(&signal_name, 0);
116 when_str_empty(
object, exit);
118 amxd_path_setf(&path,
true,
"%s",
object);
119 object_path = amxd_path_get_fixed_part(&path, AMXD_OBJECT_TERMINATE);
120 amxc_string_setf(&signal_name,
"wait:%s", object_path);
122 signal = amxp_sigmngr_find_signal(NULL, amxc_string_get(&signal_name, 0));
124 retval = amxp_signal_new(NULL, &signal, amxc_string_get(&signal_name, 0));
125 when_failed(retval, exit);
126 amxp_slot_connect(NULL, amxc_string_get(&signal_name, 0), NULL,
137 amxp_signal_emit(signal, NULL);
145 amxc_string_clean(&signal_name);
146 amxd_path_clean(&path);
Ambiorix bus agnostic API header file.
static int32_t wait_for_objects
static void amxb_wait_object_available(const char *const sig_name, UNUSED const amxc_var_t *const data, UNUSED void *const priv)
static int amxb_wait_for_impl(amxb_bus_ctx_t *bus_ctx, UNUSED const amxc_var_t *args, void *priv)
Ambiorix Bus Backend Interface.
#define amxb_is_valid_be_func(ft, member, ptr)
amxb_bus_ctx_t * amxb_be_who_has_impl(const char *object_path, bool full_match)
int amxb_be_for_all_connections(amxb_be_task_fn_t fn, const amxc_var_t *args, void *priv)
Calls a function on all open connections.
void amxb_be_cache_remove_path(const char *object_path)
Removes an object path and its corresponding bus context from the lookup cache.
#define AMXB_ERROR_NOT_SUPPORTED_OP
Function/operation not supported.
int amxb_wait_for_object(const char *object)
Checks if an object is available, if not waits for it.
The back-end interface structure.
amxb_be_wait_for_fn_t wait_for
const amxb_be_funcs_t * bus_fn
static amxb_bus_ctx_t * bus_ctx