62 #include <amxc/amxc.h>
63 #include <amxp/amxp_signal.h>
64 #include <amxp/amxp_slot.h>
84 if(obj_param == NULL) {
93 amxc_llist_for_each(it, (&mib->
functions)) {
97 if(obj_func == NULL) {
106 amxc_llist_for_each(it, (&mib->
objects)) {
110 if(obj_child == NULL) {
119 amxc_var_for_each(data, (&mib->
events)) {
120 const char* name = amxc_var_key(data);
121 amxc_var_t*
event = amxc_var_get_key(&object->
events, name, AMXC_VAR_FLAG_DEFAULT);
122 amxc_var_delete(&event);
127 const char* mib_name) {
128 amxc_array_it_t* ait = amxc_array_get_first(&object->
mib_names);
130 const char* name = (
const char*) amxc_array_it_get_data(ait);
132 if(strcmp(name, mib_name) == 0) {
133 amxc_array_it_take_data(ait);
137 ait = amxc_array_it_get_next(ait);
144 amxc_llist_for_each(it, (&mib->
objects)) {
148 when_true(obj_child != NULL, exit);
155 when_true(obj_param != NULL, exit);
158 amxc_llist_for_each(it, (&mib->
functions)) {
162 when_true(obj_func != NULL, exit);
172 amxc_llist_for_each(it, (&mib->
objects)) {
183 amxc_llist_for_each(it, (&mib->
objects)) {
192 const char* mib_name,
196 amxc_var_init(&data);
197 amxc_var_set_type(&data, AMXC_VAR_ID_HTABLE);
198 amxc_var_add_key(cstring_t, &data,
"mib", mib_name);
200 amxd_dm_event(added ?
"dm:mib-added" :
"dm:mib-removed",
object, &data,
false);
202 amxc_var_clean(&data);
207 amxc_array_it_t* ait = NULL;
210 amxc_string_init(&str, 0);
211 when_null(
object, exit);
213 ait = amxc_array_get_first(&object->
mib_names);
215 const char* name = (
const char*) amxc_array_it_get_data(ait);
217 amxc_string_appendf(&str,
"%s ", name);
219 ait = amxc_array_it_get_next(ait);
222 amxc_string_trim(&str, NULL);
223 mibs = amxc_string_take_buffer(&str);
226 amxc_string_clean(&str);
231 const char* mib_name) {
233 amxc_array_it_t* ait = NULL;
235 when_null(
object, exit);
236 when_str_empty(mib_name, exit);
238 ait = amxc_array_get_first(&object->
mib_names);
240 const char* name = (
const char*) amxc_array_it_get_data(ait);
242 if(strcmp(name, mib_name) == 0) {
247 ait = amxc_array_it_get_next(ait);
255 const char* mib_name) {
259 amxc_array_it_t* ait = NULL;
277 ait = amxc_array_get_first_free(&object->
mib_names);
279 amxc_array_append_data(&object->
mib_names, (
void*) mib_name);
281 amxc_array_it_set_data(ait, (
void*) mib_name);
291 const char* mib_name) {
315 when_null(mib, exit);
316 when_null(*mib, exit);
Ambiorix Data Model API header file.
amxd_object_t * amxd_dm_get_mib(amxd_dm_t *const dm, const char *name)
void PRIVATE amxd_dm_event(const char *signal, const amxd_object_t *const object, amxc_var_t *const data, bool trigger)
Ambiorix Data Model API header file.
Ambiorix Data Model API header file.
void amxd_object_send_del_object(amxd_object_t *object, bool trigger)
void amxd_mib_delete(amxd_object_t **mib)
static void amxd_object_remove_mib_functions(amxd_object_t *const object, amxd_object_t *const mib)
static bool amxd_object_can_add_mib(amxd_object_t *const object, amxd_object_t *const mib)
static void amxd_object_send_del_objects(amxd_object_t *object, amxd_object_t *mib)
static void amxd_object_remove_mib_params(amxd_object_t *const object, amxd_object_t *const mib)
static void amxd_object_send_mib(amxd_object_t *object, const char *mib_name, bool added)
static void amxd_object_clear_mib(amxd_object_t *const object, const char *mib_name)
static void amxd_object_remove_mib_objects(amxd_object_t *const object, amxd_object_t *const mib)
static void amxd_object_send_add_objects(amxd_object_t *object, amxd_object_t *mib)
static void amxd_object_remove_mib_events(amxd_object_t *const object, amxd_object_t *const mib)
PRIVATE amxd_status_t amxd_object_copy_funcs(amxd_object_t *const dst, const amxd_object_t *const src)
PRIVATE amxd_function_t * amxd_object_get_self_func(const amxd_object_t *const object, const char *name)
PRIVATE amxd_status_t amxd_object_copy_events(amxd_object_t *const dst, const amxd_object_t *const src)
PRIVATE amxd_status_t amxd_object_copy_params(amxd_object_t *const dst, const amxd_object_t *const src)
PRIVATE amxd_status_t amxd_object_copy_children(amxd_object_t *const dst, const amxd_object_t *const src)
const char * amxd_param_get_name(const amxd_param_t *const param)
void PRIVATE amxd_param_free(amxd_param_t **param)
enum _amxd_status amxd_status_t
@ amxd_status_object_not_found
@ amxd_status_unknown_error
#define AMXD_OBJECT_NAMED
Name and path format flag - default behavior, use name for instance objects.
amxd_object_t * amxd_object_get_child(const amxd_object_t *object, const char *name)
Get a child of the object.
amxd_dm_t * amxd_object_get_dm(const amxd_object_t *const object)
Get the data model.
amxd_object_t * amxd_object_get(const amxd_object_t *object, const char *name)
Get an instance or child of an object.
bool amxd_object_has_mib(amxd_object_t *object, const char *mib_name)
Checks if a mib has been added to a data model object.
char * amxd_object_get_mibs(amxd_object_t *object)
Get the names of all mibs attached to this object.
amxd_status_t amxd_object_add_mib(amxd_object_t *const object, const char *mib_name)
Adds a mib to an object.
amxd_status_t amxd_object_remove_mib(amxd_object_t *const object, const char *mib_name)
Removes a mib from an object.
amxd_param_t * amxd_object_get_param_def(const amxd_object_t *const object, const char *name)
Gets a parameter definition from an object.
amxd_function_t * amxd_object_get_function(const amxd_object_t *const object, const char *name)
Get the definition of a RPC method from an object.
static amxd_object_type_t amxd_object_get_type(const amxd_object_t *const object)
Returns the object type.
void amxd_object_free(amxd_object_t **object)
Data model object destructor function.
const char * amxd_object_get_name(const amxd_object_t *const object, const uint32_t flags)
Get the name of the object (or index as a string for instance objects)
const char * amxd_function_get_name(const amxd_function_t *const func)
Get the name of a method.
void amxd_function_delete(amxd_function_t **func)
Data model RPC method destructor function.
static amxd_status_t status