libamxb  4.8.2
Bus Agnostic C API
amxb_ba_wait_for.c File Reference
#include <syslog.h>
#include <stdlib.h>
#include <amxc/amxc.h>
#include <amxp/amxp.h>
#include <amxd/amxd_common.h>
#include <amxd/amxd_dm.h>
#include <amxd/amxd_object.h>
#include <amxd/amxd_object_event.h>
#include <amxd/amxd_path.h>
#include <amxb/amxb_be_intf.h>
#include <amxb/amxb.h>
#include "amxb_priv.h"

Go to the source code of this file.

Functions

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)
 
int amxb_wait_for_object (const char *object)
 Checks if an object is available, if not waits for it. More...
 

Variables

static int32_t wait_for_objects = 0
 

Function Documentation

◆ amxb_wait_for_impl()

static int amxb_wait_for_impl ( amxb_bus_ctx_t bus_ctx,
UNUSED const amxc_var_t *  args,
void *  priv 
)
static

Definition at line 88 of file amxb_ba_wait_for.c.

90  {
91  int retval = 0;
92  const amxb_be_funcs_t* fns = NULL;
93  const char* object = (const char*) priv;
94 
95  fns = bus_ctx->bus_fn;
96  if(amxb_is_valid_be_func(fns, wait_for, fns->wait_for)) {
97  retval = fns->wait_for(bus_ctx->bus_ctx, object);
98  } else {
100  }
101 
102  return retval;
103 }
#define amxb_is_valid_be_func(ft, member, ptr)
Definition: amxb_priv.h:78
#define AMXB_ERROR_NOT_SUPPORTED_OP
Function/operation not supported.
Definition: amxb_error.h:110
The back-end interface structure.
amxb_be_wait_for_fn_t wait_for
const amxb_be_funcs_t * bus_fn
Definition: amxb_types.h:121
void * bus_ctx
Definition: amxb_types.h:122
static amxb_bus_ctx_t * bus_ctx
Definition: test_amxb_e2e.c:84

◆ amxb_wait_object_available()

static void amxb_wait_object_available ( const char *const  sig_name,
UNUSED const amxc_var_t *const  data,
UNUSED void *const  priv 
)
static

Definition at line 73 of file amxb_ba_wait_for.c.

75  {
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);
80 
82  if(wait_for_objects <= 0) {
83  wait_for_objects = 0;
84  amxp_sigmngr_emit_signal(NULL, "wait:done", NULL);
85  }
86 }
static int32_t wait_for_objects

Variable Documentation

◆ wait_for_objects

int32_t wait_for_objects = 0
static

Definition at line 71 of file amxb_ba_wait_for.c.