libamxb  4.8.2
Bus Agnostic C API
amxb_ba_op_resolve.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <amxc/amxc.h>
#include <amxp/amxp.h>
#include <amxd/amxd_common.h>
#include <amxd/amxd_dm.h>
#include <amxd/amxd_path.h>
#include <amxd/amxd_object.h>
#include <amxb/amxb_be_intf.h>
#include <amxb/amxb.h>
#include "amxb_priv.h"

Go to the source code of this file.

Macros

#define _GNU_SOURCE
 

Functions

int amxb_resolve (amxb_bus_ctx_t *bus_ctx, amxd_path_t *path, amxc_var_t *ret_val)
 

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

Definition at line 56 of file amxb_ba_op_resolve.c.

Function Documentation

◆ amxb_resolve()

int amxb_resolve ( amxb_bus_ctx_t bus_ctx,
amxd_path_t *  path,
amxc_var_t *  ret_val 
)

Definition at line 78 of file amxb_ba_op_resolve.c.

80  {
81  int retval = amxd_status_unknown_error;
82  const char* obj_path = amxd_path_get(path, AMXD_OBJECT_TERMINATE);
83  amxc_var_t ret;
84  amxc_var_t* result = NULL;
85  uint32_t current = 0;
86 
87  amxc_var_init(&ret);
88 
89  when_null(bus_ctx, exit);
90  when_null(path, exit);
91  when_null(ret_val, exit);
92 
93  current = bus_ctx->access;
95  retval = amxb_get(bus_ctx, obj_path, 0, &ret, 5);
96  amxb_set_access(bus_ctx, current);
97  if(retval == 0) { //
98  result = GETI_ARG(&ret, 0);
99  if(amxc_var_type_of(result) != AMXC_VAR_ID_HTABLE) {
100  goto exit;
101  }
102  if(amxc_htable_is_empty(&result->data.vm)) {
103  goto exit;
104  }
105 
106  amxc_var_set_type(ret_val, AMXC_VAR_ID_LIST);
107  amxc_htable_for_each(hit, (&result->data.vm)) {
108  amxc_var_add(cstring_t, ret_val, amxc_htable_it_get_key(hit));
109  }
110  }
111 
112 exit:
113  amxc_var_clean(&ret);
114  return retval;
115 }
#define AMXB_PROTECTED
Definition: amxb_types.h:74
static void amxb_set_access(amxb_bus_ctx_t *const ctx, uint32_t access)
Sets the access method.
Definition: amxb_connect.h:355
int amxb_get(amxb_bus_ctx_t *const bus_ctx, const char *object, int32_t depth, amxc_var_t *ret, int timeout)
Fetches one or more objects or a single parameter.
uint32_t access
Definition: amxb_types.h:125
static amxb_bus_ctx_t * bus_ctx
Definition: test_amxb_e2e.c:84