libamxs  0.6.0
Data Model Synchronization C API
amxs_common.c File Reference
#include <stdlib.h>
#include <string.h>
#include <amxc/amxc.h>
#include <amxs/amxs_types.h>
#include "amxs_priv.h"

Go to the source code of this file.

Macros

#define _GNU_SOURCE
 

Functions

static int amxs_validate_attributes_single (int attr)
 
static int amxs_validate_attributes_hierarchy (int parent_attr, int child_attr)
 
amxs_status_t amxs_validate_attributes (int parent_attr, int child_attr)
 
amxs_status_t amxs_update_child_attributes (int parent_attr, int *child_attr)
 
void amxs_llist_it_delete_subscription (amxc_llist_it_t *it)
 

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

Definition at line 56 of file amxs_common.c.

Function Documentation

◆ amxs_llist_it_delete_subscription()

void amxs_llist_it_delete_subscription ( amxc_llist_it_t *  it)

Definition at line 140 of file amxs_common.c.

140  {
141  amxb_subscription_t* sub = amxc_container_of(it, amxb_subscription_t, it);
142 
143  amxb_subscription_delete(&sub);
144 }

◆ amxs_update_child_attributes()

amxs_status_t amxs_update_child_attributes ( int  parent_attr,
int *  child_attr 
)

Definition at line 124 of file amxs_common.c.

124  {
126  when_null(child_attr, exit);
127 
128  *child_attr |= (parent_attr & (AMXS_SYNC_ONLY_A_TO_B | AMXS_SYNC_ONLY_B_TO_A));
129 
130  if((*child_attr & AMXS_SYNC_ONLY_B_TO_A) != 0) {
131  *child_attr |= AMXS_SYNC_INIT_B;
132  }
133 
134  status = amxs_status_ok;
135 
136 exit:
137  return status;
138 }
@ amxs_status_ok
Definition: amxs_types.h:86
@ amxs_status_invalid_attr
Definition: amxs_types.h:88
enum _amxs_status amxs_status_t
#define AMXS_SYNC_INIT_B
Take the initial values from object B.
Definition: amxs_types.h:205
#define AMXS_SYNC_ONLY_B_TO_A
Only synchronize from object B to object A.
Definition: amxs_types.h:195
#define AMXS_SYNC_ONLY_A_TO_B
Only synchronize from object A to object B.
Definition: amxs_types.h:200

◆ amxs_validate_attributes()

amxs_status_t amxs_validate_attributes ( int  parent_attr,
int  child_attr 
)

Definition at line 111 of file amxs_common.c.

111  {
113 
114  when_failed(amxs_validate_attributes_single(parent_attr), exit);
115  when_failed(amxs_validate_attributes_single(child_attr), exit);
116  when_failed(amxs_validate_attributes_hierarchy(parent_attr, child_attr), exit);
117 
118  status = amxs_status_ok;
119 
120 exit:
121  return status;
122 }
static int amxs_validate_attributes_single(int attr)
Definition: amxs_common.c:68
static int amxs_validate_attributes_hierarchy(int parent_attr, int child_attr)
Definition: amxs_common.c:92

◆ amxs_validate_attributes_hierarchy()

static int amxs_validate_attributes_hierarchy ( int  parent_attr,
int  child_attr 
)
static

Definition at line 92 of file amxs_common.c.

92  {
93  int ret = -1;
94 
95  if(((parent_attr & AMXS_SYNC_ONLY_B_TO_A) != 0) &&
96  ((child_attr & AMXS_SYNC_ONLY_A_TO_B) != 0)) {
97  goto exit;
98  }
99 
100  if(((parent_attr & AMXS_SYNC_ONLY_A_TO_B) != 0) &&
101  ((child_attr & AMXS_SYNC_ONLY_B_TO_A) != 0)) {
102  goto exit;
103  }
104 
105  ret = 0;
106 
107 exit:
108  return ret;
109 }

◆ amxs_validate_attributes_single()

static int amxs_validate_attributes_single ( int  attr)
static

Definition at line 68 of file amxs_common.c.

68  {
69  int ret = -1;
70 
71  if(((attr & AMXS_SYNC_ONLY_A_TO_B) != 0) &&
72  ((attr & AMXS_SYNC_ONLY_B_TO_A) != 0)) {
73  goto exit;
74  }
75 
76  if(((attr & AMXS_SYNC_ONLY_A_TO_B) != 0) &&
77  ((attr & AMXS_SYNC_INIT_B) != 0)) {
78  goto exit;
79  }
80 
81  if(((attr & AMXS_SYNC_ONLY_B_TO_A) != 0) &&
82  ((attr & AMXS_SYNC_INIT_B) == 0)) {
83  goto exit;
84  }
85 
86  ret = 0;
87 
88 exit:
89  return ret;
90 }