osaf/services/saf/amf/amfd/comp.cc | 2 +-
osaf/services/saf/amf/amfd/csi.cc | 2 +-
osaf/services/saf/amf/amfd/cstype.cc | 28 +++++++++++++++++-----------
osaf/services/saf/amf/amfd/include/csi.h | 25 +++++++++++++++++--------
4 files changed, 36 insertions(+), 21 deletions(-)
diff --git a/osaf/services/saf/amf/amfd/comp.cc
b/osaf/services/saf/amf/amfd/comp.cc
--- a/osaf/services/saf/amf/amfd/comp.cc
+++ b/osaf/services/saf/amf/amfd/comp.cc
@@ -877,7 +877,7 @@ static SaAisErrorT ccb_completed_modify_
if (compcstype->comp == comp) {
SaNameT cstype_name;
AVD_CTCS_TYPE *ctcstype = NULL;
- avd_cstype_t *cst = NULL;
+ AVD_CS_TYPE *cst = NULL;
get_child_dn_from_ass_dn(&compcstype->name, &cstype_name);
//First check if this cstype exists in
the sustem.
if ((cst =
cstype_db->find(Amf::to_string(&cstype_name))) == NULL) {
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
@@ -861,7 +861,7 @@ static void csi_ccb_apply_modify_hdlr(st
while ((attr_mod = opdata->param.modify.attrMods[i++]) != NULL) {
if (!strcmp(attr_mod->modAttr.attrName, "saAmfCSType")) {
- struct avd_cstype *csi_type;
+ AVD_CS_TYPE *csi_type;
SaNameT cstype_name = *(SaNameT*)
attr_mod->modAttr.attrValues[0];
TRACE("saAmfCSType modified from '%s' to '%s' for
Csi'%s'", csi->saAmfCSType.value,
cstype_name.value, csi->name.value);
diff --git a/osaf/services/saf/amf/amfd/cstype.cc
b/osaf/services/saf/amf/amfd/cstype.cc
--- a/osaf/services/saf/amf/amfd/cstype.cc
+++ b/osaf/services/saf/amf/amfd/cstype.cc
@@ -22,7 +22,7 @@
#include <csi.h>
#include <imm.h>
-AmfDb<std::string, avd_cstype_t> *cstype_db = NULL;
+AmfDb<std::string, AVD_CS_TYPE> *cstype_db = NULL;
//
// TODO(HANO) Temporary use this function instead of strdup which uses malloc.
@@ -35,20 +35,26 @@ static char *StrDup(const char *s)
return c;
}
-static void cstype_add_to_model(avd_cstype_t *cst)
+static void cstype_add_to_model(AVD_CS_TYPE *cst)
{
uint32_t rc = cstype_db->insert(Amf::to_string(&cst->name),cst);
osafassert(rc == NCSCC_RC_SUCCESS);
}
-static avd_cstype_t *cstype_create(const SaNameT *dn, const SaImmAttrValuesT_2
**attributes)
+//
+AVD_CS_TYPE::AVD_CS_TYPE()
+ : name{}, saAmfCSAttrName{}, list_of_csi{}
{
- avd_cstype_t *cst;
+}
+
+static AVD_CS_TYPE *cstype_create(const SaNameT *dn, const SaImmAttrValuesT_2
**attributes)
+{
+ AVD_CS_TYPE *cst;
SaUint32T values_number;
TRACE_ENTER2("'%s'", dn->value);
- cst = new avd_cstype_t();
+ cst = new AVD_CS_TYPE;
memcpy(cst->name.value, dn->value, dn->length);
cst->name.length = dn->length;
@@ -69,7 +75,7 @@ static avd_cstype_t *cstype_create(const
* Delete from DB and return memory
* @param cst
*/
-static void cstype_delete(avd_cstype_t *cst)
+static void cstype_delete(AVD_CS_TYPE *cst)
{
char *p;
int i = 0;
@@ -152,7 +158,7 @@ SaAisErrorT avd_cstype_config_get(void)
SaNameT dn;
const SaImmAttrValuesT_2 **attributes;
const char *className = "SaAmfCSType";
- avd_cstype_t *cst;
+ AVD_CS_TYPE *cst;
TRACE_ENTER();
@@ -196,7 +202,7 @@ done1:
static SaAisErrorT cstype_ccb_completed_hdlr(CcbUtilOperationData_t *opdata)
{
SaAisErrorT rc = SA_AIS_ERR_BAD_OPERATION;
- avd_cstype_t *cst;
+ AVD_CS_TYPE *cst;
AVD_CSI *csi;
bool csi_exist = false;
CcbUtilOperationData_t *t_opData;
@@ -245,7 +251,7 @@ done:
static void cstype_ccb_apply_cb(CcbUtilOperationData_t *opdata)
{
- avd_cstype_t *cst;
+ AVD_CS_TYPE *cst;
TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId,
opdata->objectName.value);
@@ -256,7 +262,7 @@ static void cstype_ccb_apply_cb(CcbUtilO
cstype_add_to_model(cst);
break;
case CCBUTIL_DELETE:
- cstype_delete(static_cast<avd_cstype_t*>(opdata->userData));
+ cstype_delete(static_cast<AVD_CS_TYPE*>(opdata->userData));
break;
default:
osafassert(0);
@@ -266,7 +272,7 @@ static void cstype_ccb_apply_cb(CcbUtilO
void avd_cstype_constructor(void)
{
- cstype_db= new AmfDb<std::string, avd_cstype_t>;
+ cstype_db= new AmfDb<std::string, AVD_CS_TYPE>;
avd_class_impl_set("SaAmfCSType", NULL, NULL, cstype_ccb_completed_hdlr,
cstype_ccb_apply_cb);
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
@@ -49,6 +49,8 @@ typedef struct avd_csi_deps_tag {
struct avd_csi_deps_tag *csi_dep_next; /* the next CSI dependency in
the list */
} AVD_CSI_DEPS;
+class AVD_CS_TYPE;
+
/* Availability directors Component service in.stance structure(AVD_CSI):
* This data structure lives in the AvD and reflects data points
* associated with the CSI on the AvD.
@@ -77,19 +79,26 @@ typedef struct avd_csi_tag {
* wrt to this CSI. */
uint32_t compcsi_cnt; /* no of comp-csi rels */
struct avd_csi_tag *csi_list_cs_type_next;
- struct avd_cstype *cstype;
+ 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;
extern AmfDb<std::string, AVD_CSI> *csi_db;
-typedef struct avd_cstype {
- SaNameT name; /* name of the CSType */
- SaStringT *saAmfCSAttrName;
- AVD_CSI *list_of_csi;
-} avd_cstype_t;
+class AVD_CS_TYPE {
+ public:
+ AVD_CS_TYPE();
+ SaNameT name; /* name of the CSType */
+ SaStringT *saAmfCSAttrName;
+ AVD_CSI *list_of_csi;
-extern AmfDb<std::string, avd_cstype_t> *cstype_db;
+ private:
+ // disallow copy and assign
+ AVD_CS_TYPE(const AVD_CS_TYPE&);
+ void operator=(const AVD_CS_TYPE&);
+};
+
+extern AmfDb<std::string, AVD_CS_TYPE> *cstype_db;
/* This data structure lives in the AvD and reflects relationship
* between the component and CSI on the AvD.
@@ -149,7 +158,7 @@ extern void avd_csi_add_csiattr(AVD_CSI
extern void avd_csi_remove_csiattr(AVD_CSI *csi, AVD_CSI_ATTR *attr);
extern void avd_csi_constructor(void);
-extern avd_cstype_t *avd_cstype_get(const SaNameT *dn);
+extern AVD_CS_TYPE *avd_cstype_get(const SaNameT *dn);
extern void avd_cstype_add_csi(AVD_CSI *csi);
extern void avd_cstype_remove_csi(AVD_CSI *csi);
extern void avd_cstype_constructor(void);
------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel