osaf/services/saf/amf/amfd/csi.cc | 30 ++++++++++++++--
osaf/services/saf/amf/amfd/include/csi.h | 57 +++++++++++++++++-------------
osaf/services/saf/amf/amfd/include/msg.h | 4 +-
osaf/services/saf/amf/amfd/include/pg.h | 8 ++--
osaf/services/saf/amf/amfd/include/si.h | 10 ++--
osaf/services/saf/amf/amfd/include/util.h | 4 +-
osaf/services/saf/amf/amfd/si.cc | 8 ++--
7 files changed, 76 insertions(+), 45 deletions(-)
diff --git a/osaf/services/saf/amf/amfd/csi.cc
b/osaf/services/saf/amf/amfd/csi.cc
--- a/osaf/services/saf/amf/amfd/csi.cc
+++ b/osaf/services/saf/amf/amfd/csi.cc
@@ -270,6 +270,30 @@ static void csi_remove_csidep(AVD_CSI *c
delete curr;
}
+//
+void AVD_CSI::initialize() {
+ name = {};
+ saAmfCSType = {};
+ saAmfCSIDependencies = {};
+ rank = {};
+ si = {};
+ num_attributes = {};
+ list_attributes = {};
+ pg_node_list = {};
+ si_list_of_csi_next = {};
+ list_compcsi = {};
+ compcsi_cnt = {};
+ csi_list_cs_type_next = {};
+ cstype = {};
+ assign_flag = {};
+}
+
+//
+AVD_CSI::AVD_CSI(const SaNameT* csi_name) {
+ initialize();
+ memcpy(&name.value, csi_name->value, csi_name->length);
+ name.length = csi_name->length;
+}
/**
* @brief creates new csi and adds csi node to the csi_db
*
@@ -283,10 +307,8 @@ AVD_CSI *csi_create(const SaNameT *csi_n
TRACE_ENTER2("'%s'", csi_name->value);
- csi = new AVD_CSI();
- memcpy(csi->name.value, csi_name->value, csi_name->length);
- csi->name.length = csi_name->length;
-
+ csi = new AVD_CSI(csi_name);
+
if (csi_db->insert(Amf::to_string(&csi->name), csi) != NCSCC_RC_SUCCESS)
osafassert(0);
diff --git a/osaf/services/saf/amf/amfd/include/csi.h
b/osaf/services/saf/amf/amfd/include/csi.h
--- a/osaf/services/saf/amf/amfd/include/csi.h
+++ b/osaf/services/saf/amf/amfd/include/csi.h
@@ -51,38 +51,47 @@ typedef struct avd_csi_deps_tag {
class AVD_CS_TYPE;
-/* Availability directors Component service in.stance structure(AVD_CSI):
+/* Availability directors Component service instance class(AVD_CSI):
* This data structure lives in the AvD and reflects data points
* associated with the CSI on the AvD.
*/
-typedef struct avd_csi_tag {
+class AVD_CSI {
+ public:
+ explicit AVD_CSI(const SaNameT* csi_name);
- SaNameT name;
- SaNameT saAmfCSType;
- AVD_CSI_DEPS *saAmfCSIDependencies; /* list of all CSI dependencies for
this CSI */
- /* Rank is calculated based on CSI dependency. If no dependency
configured then rank will be 1.
- Else rank will one more than rank of saAmfCSIDependencies. */
- uint32_t rank; /* The rank of the CSI in the SI
+ SaNameT name;
+ SaNameT saAmfCSType;
+ AVD_CSI_DEPS *saAmfCSIDependencies; /* list of all CSI dependencies for this
CSI */
+ /* Rank is calculated based on CSI dependency. If no dependency configured
then rank will be 1.
+ Else rank will one more than rank of saAmfCSIDependencies. */
+ uint32_t rank; /* The rank of the CSI in the SI
* Checkpointing - Sent as a one time update.
*/
- AVD_SI *si; /* SI encompassing this csi */
+ AVD_SI *si; /* SI encompassing this csi */
- uint32_t num_attributes; /* The number of attributes in the
list. */
- AVD_CSI_ATTR *list_attributes; /* list of all the attributes of this
CSI. */
+ uint32_t num_attributes; /* The number of attributes in the list. */
+ AVD_CSI_ATTR *list_attributes; /* list of all the attributes of this
CSI. */
- NCS_DB_LINK_LIST pg_node_list; /* list of nodes on which pg is
+ NCS_DB_LINK_LIST pg_node_list; /* list of nodes on which pg is
* tracked for this csi */
- struct avd_csi_tag *si_list_of_csi_next; /* the next CSI in the
list of component service
- * instances in the
Service instance */
- struct avd_comp_csi_rel_tag *list_compcsi; /* The list of compcsi
relationship
- * wrt to this CSI. */
- uint32_t compcsi_cnt; /* no of comp-csi rels */
- struct avd_csi_tag *csi_list_cs_type_next;
- AVD_CS_TYPE *cstype;
- bool assign_flag; /* Flag used while assigning. to mark this csi has
been assigned a Comp
- from * current SI being assigned */
-} AVD_CSI;
+ AVD_CSI *si_list_of_csi_next; /* the next CSI in the list of
component service
+ * instances in the Service instance */
+ struct avd_comp_csi_rel_tag *list_compcsi; /* The list of compcsi
relationship
+ * wrt to this CSI. */
+ uint32_t compcsi_cnt; /* no of comp-csi rels */
+ AVD_CSI *csi_list_cs_type_next;
+ AVD_CS_TYPE *cstype;
+ bool assign_flag; /* Flag used while assigning. to mark this csi has been
assigned a Comp
+ from * current SI being assigned */
+ private:
+ void initialize();
+ AVD_CSI();
+ // disallow copy and assign
+ AVD_CSI(const AVD_CSI&);
+ void operator=(const AVD_CSI&);
+};
+
extern AmfDb<std::string, AVD_CSI> *csi_db;
class AVD_CS_TYPE {
@@ -166,8 +175,8 @@ extern void avd_cstype_constructor(void)
extern SaAisErrorT avd_csiattr_config_get(const SaNameT *csi_name, AVD_CSI
*csi);
extern void avd_csiattr_constructor(void);
extern void avd_compcsi_from_csi_and_susi_delete(struct avd_su_si_rel_tag
*susi, struct avd_comp_csi_rel_tag *comp_csi, bool ckpt);
-extern void avd_csi_delete(struct avd_csi_tag *csi);
-extern void csi_cmplt_delete(struct avd_csi_tag *csi, bool ckpt);
+extern void avd_csi_delete(AVD_CSI *csi);
+extern void csi_cmplt_delete(AVD_CSI *csi, bool ckpt);
extern AVD_CSI *csi_create(const SaNameT *csi_name);
extern bool csi_assignment_validate(AVD_SG *sg);
extern SaAisErrorT csi_assign_hdlr(AVD_CSI *csi);
diff --git a/osaf/services/saf/amf/amfd/include/msg.h
b/osaf/services/saf/amf/amfd/include/msg.h
--- a/osaf/services/saf/amf/amfd/include/msg.h
+++ b/osaf/services/saf/amf/amfd/include/msg.h
@@ -74,7 +74,7 @@ class AVD_SU;
struct avd_su_si_rel_tag;
class AVD_COMP;
struct avd_comp_csi_rel_tag;
-struct avd_csi_tag;
+class AVD_CSI;
uint32_t avd_d2n_msg_dequeue(struct cl_cb_tag *cb);
uint32_t avd_d2n_msg_snd(struct cl_cb_tag *cb, struct avd_avnd_tag *nd_node,
AVD_DND_MSG *snd_msg);
@@ -99,7 +99,7 @@ uint32_t avd_snd_susi_msg(struct cl_cb_t
AVSV_SUSI_ACT actn, SaBoolT single_csi, struct
avd_comp_csi_rel_tag*);
uint32_t avd_snd_set_leds_msg(struct cl_cb_tag *cb, struct avd_avnd_tag *avnd);
-uint32_t avd_snd_pg_resp_msg(struct cl_cb_tag *, struct avd_avnd_tag *, struct
avd_csi_tag *,
+uint32_t avd_snd_pg_resp_msg(struct cl_cb_tag *, struct avd_avnd_tag *,
AVD_CSI *,
AVSV_N2D_PG_TRACK_ACT_MSG_INFO *);
uint32_t avd_snd_pg_upd_msg(struct cl_cb_tag *, struct avd_avnd_tag *, struct
avd_comp_csi_rel_tag *,
SaAmfProtectionGroupChangesT, SaNameT *);
diff --git a/osaf/services/saf/amf/amfd/include/pg.h
b/osaf/services/saf/amf/amfd/include/pg.h
--- a/osaf/services/saf/amf/amfd/include/pg.h
+++ b/osaf/services/saf/amf/amfd/include/pg.h
@@ -46,7 +46,7 @@ typedef struct avd_pg_csi_node {
typedef struct avd_pg_node_csi {
NCS_DB_LINK_LIST_NODE node_dll_node; /* avnd dll node (key is csi
ptr) */
- struct avd_csi_tag *csi; /* ptr to the csi */
+ AVD_CSI *csi; /* ptr to the csi */
} AVD_PG_NODE_CSI;
void avd_pg_trk_act_evh(AVD_CL_CB *, struct avd_evt_tag *);
@@ -54,9 +54,9 @@ void avd_pg_trk_act_evh(AVD_CL_CB *, str
uint32_t avd_pg_susi_chg_prc(AVD_CL_CB *, AVD_SU_SI_REL *);
uint32_t avd_pg_compcsi_chg_prc(AVD_CL_CB *, struct avd_comp_csi_rel_tag *,
bool);
-uint32_t avd_pg_csi_node_add(AVD_CL_CB *, struct avd_csi_tag *, AVD_AVND *);
-void avd_pg_csi_node_del(AVD_CL_CB *, struct avd_csi_tag *, AVD_AVND *);
-void avd_pg_csi_node_del_all(AVD_CL_CB *, struct avd_csi_tag *);
+uint32_t avd_pg_csi_node_add(AVD_CL_CB *, AVD_CSI *, AVD_AVND *);
+void avd_pg_csi_node_del(AVD_CL_CB *, AVD_CSI *, AVD_AVND *);
+void avd_pg_csi_node_del_all(AVD_CL_CB *, AVD_CSI *);
void avd_pg_node_csi_del_all(AVD_CL_CB *, AVD_AVND *);
#endif /* !AVD_PG_H */
diff --git a/osaf/services/saf/amf/amfd/include/si.h
b/osaf/services/saf/amf/amfd/include/si.h
--- a/osaf/services/saf/amf/amfd/include/si.h
+++ b/osaf/services/saf/amf/amfd/include/si.h
@@ -92,7 +92,7 @@ public:
*/
AVD_SG *sg_of_si; /* the service group of this SI */
- struct avd_csi_tag *list_of_csi; /* The list of CSIs in the SI */
+ AVD_CSI *list_of_csi; /* The list of CSIs in the SI */
AVD_SI *sg_list_of_si_next; /* next SI in the SG list of SIs */
struct avd_su_si_rel_tag *list_of_sisu; /* the list of su si
relationship elements */
AVD_SI_DEP_STATE si_dep_state; /* SI-SI dep state of this SI */
@@ -131,15 +131,15 @@ public:
uint32_t pref_standby_assignments() const;
uint32_t curr_standby_assignments() const;
- void add_csi(struct avd_csi_tag* csi);
- void remove_csi(struct avd_csi_tag *csi);
+ void add_csi(AVD_CSI* csi);
+ void remove_csi(AVD_CSI *csi);
void delete_assignments(AVD_CL_CB *cb);
void delete_csis();
void si_add_to_model();
- void arrange_dep_csi(struct avd_csi_tag* csi);
- void add_csi_db(struct avd_csi_tag* csi);
+ void arrange_dep_csi(AVD_CSI* csi);
+ void add_csi_db(AVD_CSI* csi);
bool is_sirank_valid(uint32_t newSiRank) const;
void update_sirank(uint32_t newSiRank);
private:
diff --git a/osaf/services/saf/amf/amfd/include/util.h
b/osaf/services/saf/amf/amfd/include/util.h
--- a/osaf/services/saf/amf/amfd/include/util.h
+++ b/osaf/services/saf/amf/amfd/include/util.h
@@ -94,7 +94,7 @@ struct avd_hlt_tag;
struct avd_su_si_rel_tag;
class AVD_COMP;
struct avd_comp_csi_rel_tag;
-struct avd_csi_tag;
+class AVD_CSI;
int get_child_dn_from_ass_dn(const SaNameT *ass_dn, SaNameT *child_dn);
void avd_d2n_reboot_snd(struct avd_avnd_tag *node);
@@ -121,7 +121,7 @@ uint32_t avd_snd_susi_msg(struct cl_cb_t
AVSV_SUSI_ACT actn, bool single_csi, struct
avd_comp_csi_rel_tag*);
uint32_t avd_snd_set_leds_msg(struct cl_cb_tag *cb, struct avd_avnd_tag *avnd);
-uint32_t avd_snd_pg_resp_msg(struct cl_cb_tag *, struct avd_avnd_tag *, struct
avd_csi_tag *,
+uint32_t avd_snd_pg_resp_msg(struct cl_cb_tag *, struct avd_avnd_tag *,
AVD_CSI *,
AVSV_N2D_PG_TRACK_ACT_MSG_INFO *);
uint32_t avd_snd_pg_upd_msg(struct cl_cb_tag *, struct avd_avnd_tag *, struct
avd_comp_csi_rel_tag *,
SaAmfProtectionGroupChangesT, SaNameT *);
diff --git a/osaf/services/saf/amf/amfd/si.cc b/osaf/services/saf/amf/amfd/si.cc
--- a/osaf/services/saf/amf/amfd/si.cc
+++ b/osaf/services/saf/amf/amfd/si.cc
@@ -36,7 +36,7 @@ AmfDb<std::string, AVD_SI> *si_db = NULL
* @param name
* @param csi
*/
-static void osafassert_if_loops_in_csideps(SaNameT *csi_name, struct
avd_csi_tag* csi)
+static void osafassert_if_loops_in_csideps(SaNameT *csi_name, AVD_CSI* csi)
{
AVD_CSI *temp_csi = NULL;
AVD_CSI_DEPS *csi_dep_ptr;
@@ -68,7 +68,7 @@ static void osafassert_if_loops_in_cside
TRACE_LEAVE();
}
-void AVD_SI::arrange_dep_csi(struct avd_csi_tag* csi)
+void AVD_SI::arrange_dep_csi(AVD_CSI* csi)
{
AVD_CSI *temp_csi = NULL;
@@ -110,7 +110,7 @@ void AVD_SI::arrange_dep_csi(struct avd_
return;
}
-void AVD_SI::add_csi(struct avd_csi_tag* avd_csi)
+void AVD_SI::add_csi(AVD_CSI* avd_csi)
{
AVD_CSI *temp_csi = NULL;
bool found = false;
@@ -158,7 +158,7 @@ add_csi:
return;
}
-void AVD_SI::add_csi_db(struct avd_csi_tag* csi)
+void AVD_SI::add_csi_db(AVD_CSI* csi)
{
TRACE_ENTER2("%s", csi->name.value);
------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel