libamxb  4.8.2
Bus Agnostic C API
dummy_be.c File Reference
#include <stdlib.h>
#include <string.h>
#include <amxc/amxc.h>
#include <amxp/amxp.h>
#include <amxd/amxd_dm.h>
#include <amxd/amxd_object.h>
#include <amxd/amxd_object_function.h>
#include <amxb/amxb_be.h>
#include <amxo/amxo.h>
#include "dummy_be.h"
#include <amxc/amxc_macros.h>

Go to the source code of this file.

Functions

static void * amxb_dummy_connect (UNUSED const char *host, UNUSED const char *port, UNUSED const char *path, UNUSED amxp_signal_mngr_t *sigmngr)
 
static int amxb_dummy_disconnect (UNUSED void *ctx)
 
static int amxb_dummy_invoke (UNUSED void *const ctx, amxb_invoke_t *invoke_ctx, amxc_var_t *args, amxb_request_t *request, UNUSED int timeout)
 
static void amxb_dummy_free (UNUSED void *ctx)
 
static int amxb_dummy_register (UNUSED void *const ctx, UNUSED amxd_dm_t *const dm)
 
static bool amxb_dummy_has (UNUSED void *const ctx, const char *object)
 
static uint32_t amxb_dummy_capabilities (UNUSED void *const ctx)
 
int test_register_dummy_be (void)
 
int test_unregister_dummy_be (void)
 
int test_load_dummy_remote (const char *odl)
 
void test_set_dummy_caps (uint32_t dummy_caps)
 

Variables

static amxd_dm_t remote_dm
 
static amxo_parser_t parser
 
static uint32_t caps = AMXB_BE_DISCOVER_DESCRIBE | AMXB_BE_DISCOVER_LIST | AMXB_BE_DISCOVER | AMXB_BE_DISCOVER_RESOLVE
 
static amxb_be_funcs_t amxb_dummy_impl
 
static amxb_version_t sup_min_lib_version
 
static amxb_version_t sup_max_lib_version
 
static amxb_version_t dummy_be_version
 
amxb_be_info_t amxb_dummy_be_info
 

Function Documentation

◆ amxb_dummy_capabilities()

static uint32_t amxb_dummy_capabilities ( UNUSED void *const  ctx)
static

Definition at line 133 of file dummy_be.c.

133  {
134  return caps;
135 }
static uint32_t caps
Definition: dummy_be.c:70

◆ amxb_dummy_connect()

static void* amxb_dummy_connect ( UNUSED const char *  host,
UNUSED const char *  port,
UNUSED const char *  path,
UNUSED amxp_signal_mngr_t *  sigmngr 
)
static

Definition at line 72 of file dummy_be.c.

75  {
76 
77  amxd_dm_init(&remote_dm);
78  amxo_parser_init(&parser);
79  return &remote_dm;
80 }
static amxd_dm_t remote_dm
Definition: dummy_be.c:68
static amxo_parser_t parser
Definition: dummy_be.c:69

◆ amxb_dummy_disconnect()

static int amxb_dummy_disconnect ( UNUSED void *  ctx)
static

Definition at line 82 of file dummy_be.c.

82  {
83  return 0;
84 }

◆ amxb_dummy_free()

static void amxb_dummy_free ( UNUSED void *  ctx)
static

Definition at line 116 of file dummy_be.c.

116  {
117  amxo_parser_clean(&parser);
118  amxd_dm_clean(&remote_dm);
119 }

◆ amxb_dummy_has()

static bool amxb_dummy_has ( UNUSED void *const  ctx,
const char *  object 
)
static

Definition at line 126 of file dummy_be.c.

127  {
128  amxd_object_t* obj = amxd_dm_findf(&remote_dm, "%s", object);
129 
130  return obj != NULL;
131 }

◆ amxb_dummy_invoke()

static int amxb_dummy_invoke ( UNUSED void *const  ctx,
amxb_invoke_t invoke_ctx,
amxc_var_t *  args,
amxb_request_t request,
UNUSED int  timeout 
)
static

Definition at line 86 of file dummy_be.c.

90  {
91 
92  amxc_var_t empty_args;
93  amxc_var_t* return_value = NULL;
94  amxd_object_t* obj = NULL;
95  int rv = 0;
96 
97  amxc_var_init(&empty_args);
98  amxc_var_set_type(&empty_args, AMXC_VAR_ID_HTABLE);
99  amxc_var_set_type(request->result, AMXC_VAR_ID_LIST);
100 
101  if(args == NULL) {
102  args = &empty_args;
103  }
104 
105  return_value = amxc_var_add_new(request->result);
106  obj = amxd_dm_findf(&remote_dm, invoke_ctx->object);
107  when_null_status(obj, exit, rv = AMXB_ERROR_BUS_NOT_FOUND);
108 
109  rv = amxd_object_invoke_function(obj, invoke_ctx->method, args, return_value);
110 
111 exit:
112  amxc_var_clean(&empty_args);
113  return rv;
114 }
#define AMXB_ERROR_BUS_NOT_FOUND
Definition: amxb_error.h:154
char * method
Definition: amxb_types.h:153
char * object
Definition: amxb_types.h:151
amxc_var_t * result
Definition: amxb_types.h:140

◆ amxb_dummy_register()

static int amxb_dummy_register ( UNUSED void *const  ctx,
UNUSED amxd_dm_t *const  dm 
)
static

Definition at line 121 of file dummy_be.c.

122  {
123  return 0;
124 }

◆ test_load_dummy_remote()

int test_load_dummy_remote ( const char *  odl)

Definition at line 191 of file dummy_be.c.

191  {
192  amxd_object_t* root_obj = amxd_dm_get_root(&remote_dm);
193 
194  return amxo_parser_parse_file(&parser, odl, root_obj);
195 }

◆ test_register_dummy_be()

int test_register_dummy_be ( void  )

Definition at line 183 of file dummy_be.c.

183  {
185 }
static amxb_be_funcs_t amxb_dummy_impl
Definition: dummy_be.c:137
int amxb_be_register(amxb_be_funcs_t *const funcs)
Registers backend interface.

◆ test_set_dummy_caps()

void test_set_dummy_caps ( uint32_t  dummy_caps)

Definition at line 197 of file dummy_be.c.

197  {
198  caps = dummy_caps;
199 }

◆ test_unregister_dummy_be()

int test_unregister_dummy_be ( void  )

Definition at line 187 of file dummy_be.c.

187  {
189 }
int amxb_be_unregister(amxb_be_funcs_t *const funcs)
Unregisters a backend interface.

Variable Documentation

◆ amxb_dummy_be_info

amxb_be_info_t amxb_dummy_be_info
Initial value:
= {
.min_supported = &sup_min_lib_version,
.max_supported = &sup_max_lib_version,
.be_version = &dummy_be_version,
.name = "dummy",
.description = "AMXB Dummy Backend for testing",
.funcs = &amxb_dummy_impl,
}
static amxb_version_t dummy_be_version
Definition: dummy_be.c:168
static amxb_version_t sup_max_lib_version
Definition: dummy_be.c:162
static amxb_version_t sup_min_lib_version
Definition: dummy_be.c:156

Definition at line 174 of file dummy_be.c.

◆ amxb_dummy_impl

amxb_be_funcs_t amxb_dummy_impl
static
Initial value:
= {
.connect = amxb_dummy_connect,
.disconnect = amxb_dummy_disconnect,
.get_fd = NULL,
.read = NULL,
.invoke = amxb_dummy_invoke,
.async_invoke = NULL,
.wait_request = NULL,
.close_request = NULL,
.subscribe = NULL,
.unsubscribe = NULL,
.free = amxb_dummy_free,
.register_dm = amxb_dummy_register,
.capabilities = amxb_dummy_capabilities,
.name = "dummy",
.size = sizeof(amxb_be_funcs_t),
}
struct _amxb_be_funcs amxb_be_funcs_t
Definition: amxb_types.h:79
static void amxb_dummy_free(UNUSED void *ctx)
Definition: dummy_be.c:116
static int amxb_dummy_disconnect(UNUSED void *ctx)
Definition: dummy_be.c:82
static uint32_t amxb_dummy_capabilities(UNUSED void *const ctx)
Definition: dummy_be.c:133
static int amxb_dummy_register(UNUSED void *const ctx, UNUSED amxd_dm_t *const dm)
Definition: dummy_be.c:121
static bool amxb_dummy_has(UNUSED void *const ctx, const char *object)
Definition: dummy_be.c:126
static int amxb_dummy_invoke(UNUSED void *const ctx, amxb_invoke_t *invoke_ctx, amxc_var_t *args, amxb_request_t *request, UNUSED int timeout)
Definition: dummy_be.c:86
static void * amxb_dummy_connect(UNUSED const char *host, UNUSED const char *port, UNUSED const char *path, UNUSED amxp_signal_mngr_t *sigmngr)
Definition: dummy_be.c:72

Definition at line 137 of file dummy_be.c.

◆ caps

◆ dummy_be_version

amxb_version_t dummy_be_version
static
Initial value:
= {
.major = 0,
.minor = 0,
.build = 0,
}

Definition at line 168 of file dummy_be.c.

◆ parser

amxo_parser_t parser
static

Definition at line 69 of file dummy_be.c.

◆ remote_dm

amxd_dm_t remote_dm
static

Definition at line 68 of file dummy_be.c.

◆ sup_max_lib_version

amxb_version_t sup_max_lib_version
static
Initial value:
= {
.major = 2,
.minor = -1,
.build = -1
}

Definition at line 162 of file dummy_be.c.

◆ sup_min_lib_version

amxb_version_t sup_min_lib_version
static
Initial value:
= {
.major = 2,
.minor = 0,
.build = -1
}

Definition at line 156 of file dummy_be.c.