osaf/services/saf/amf/amfd/app.cc            |  44 +++++++++++++++++----------
 osaf/services/saf/amf/amfd/include/app.h     |  17 ++++++++--
 osaf/services/saf/amf/amfd/include/apptype.h |   8 ++--
 osaf/services/saf/amf/amfd/include/sg.h      |   5 +-
 osaf/services/saf/amf/amfd/include/si.h      |   6 ++-
 5 files changed, 51 insertions(+), 29 deletions(-)


Change AVD_APP from a structure to a class.

diff --git a/osaf/services/saf/amf/amfd/app.cc 
b/osaf/services/saf/amf/amfd/app.cc
--- a/osaf/services/saf/amf/amfd/app.cc
+++ b/osaf/services/saf/amf/amfd/app.cc
@@ -25,15 +25,35 @@
 
 AmfDb<std::string, AVD_APP> *app_db = 0;
 
-// TODO(hafe) change this to a constructor
-static AVD_APP *avd_app_new(const SaNameT *dn)
+AVD_APP::AVD_APP() :
+       saAmfApplicationAdminState(SA_AMF_ADMIN_UNLOCKED),
+       saAmfApplicationCurrNumSGs(0),
+       list_of_sg(NULL),
+       list_of_si(NULL),
+       app_type_list_app_next(NULL),
+       app_type(NULL)
 {
-       AVD_APP *app = new AVD_APP();
-       memcpy(app->name.value, dn->value, dn->length);
-       app->name.length = dn->length;
-       return app;
+       memset(&name, 0, sizeof(SaNameT));
+       memset(&saAmfAppType, 0, sizeof(SaNameT));
 }
 
+AVD_APP::AVD_APP(const SaNameT* dn) :
+       saAmfApplicationAdminState(SA_AMF_ADMIN_UNLOCKED),
+       saAmfApplicationCurrNumSGs(0),
+       list_of_sg(NULL),
+       list_of_si(NULL),
+       app_type_list_app_next(NULL),
+       app_type(NULL)
+{
+       memcpy(name.value, dn->value, dn->length);
+       name.length = dn->length;
+       memset(&saAmfAppType, 0, sizeof(SaNameT));
+}
+
+AVD_APP::~AVD_APP()
+{
+}
+               
 // TODO(hafe) change this to a destructor
 static void avd_app_delete(AVD_APP *app)
 {
@@ -185,7 +205,6 @@ static int is_config_valid(const SaNameT
 
 AVD_APP *avd_app_create(const SaNameT *dn, const SaImmAttrValuesT_2 
**attributes)
 {
-       int rc = -1;
        AVD_APP *app;
        SaAisErrorT error;
 
@@ -197,8 +216,7 @@ AVD_APP *avd_app_create(const SaNameT *d
        */
        app = app_db->find(Amf::to_string(dn));
        if (app == NULL) {
-               if ((app = avd_app_new(dn)) == NULL)
-                       goto done;
+               app = new AVD_APP(dn);
        } else
                TRACE("already created, refreshing config...");
 
@@ -210,14 +228,6 @@ AVD_APP *avd_app_create(const SaNameT *d
                app->saAmfApplicationAdminState = SA_AMF_ADMIN_UNLOCKED;
        }
 
-       rc = 0;
-
-done:
-       if (rc != 0) {
-               avd_app_delete(app);
-               app = NULL;
-       }
-
        return app;
 }
 
diff --git a/osaf/services/saf/amf/amfd/include/app.h 
b/osaf/services/saf/amf/amfd/include/app.h
--- a/osaf/services/saf/amf/amfd/include/app.h
+++ b/osaf/services/saf/amf/amfd/include/app.h
@@ -32,17 +32,26 @@
 #include <si.h>
 #include "db_template.h"
 
-// TODO (hafe) change to class AmfApp
-typedef struct avd_app_tag {
+class AVD_APP {
+
+public:
        SaNameT name;
        SaNameT saAmfAppType;
        SaAmfAdminStateT saAmfApplicationAdminState;
        SaUint32T saAmfApplicationCurrNumSGs;
        AVD_SG *list_of_sg;
        AVD_SI *list_of_si;
-       struct avd_app_tag *app_type_list_app_next;
+       AVD_APP *app_type_list_app_next;
        struct avd_app_type_tag *app_type;
-} AVD_APP;
+       
+       AVD_APP();
+       AVD_APP(const SaNameT *dn);
+       ~AVD_APP();
+
+private:
+       AVD_APP(const AVD_APP&);
+       AVD_APP& operator=(const AVD_APP&);
+};
 
 extern AmfDb<std::string, AVD_APP> *app_db;
 
diff --git a/osaf/services/saf/amf/amfd/include/apptype.h 
b/osaf/services/saf/amf/amfd/include/apptype.h
--- a/osaf/services/saf/amf/amfd/include/apptype.h
+++ b/osaf/services/saf/amf/amfd/include/apptype.h
@@ -30,18 +30,18 @@
 #include <si.h>
 #include "db_template.h"
 
-struct avd_app_tag;
+class AVD_APP;
 
 typedef struct avd_app_type_tag {
        SaNameT name;
        SaNameT *sgAmfApptSGTypes;
        uint32_t no_sg_types;
-       struct avd_app_tag *list_of_app;
+       AVD_APP *list_of_app;
 } AVD_APP_TYPE;
 
 extern AVD_APP_TYPE *avd_apptype_get(const SaNameT *dn);
-extern void avd_apptype_add_app(struct avd_app_tag *app);
-extern void avd_apptype_remove_app(struct avd_app_tag *app);
+extern void avd_apptype_add_app(AVD_APP *app);
+extern void avd_apptype_remove_app(AVD_APP *app);
 extern SaAisErrorT avd_apptype_config_get(void);
 extern void avd_apptype_constructor(void);
 
diff --git a/osaf/services/saf/amf/amfd/include/sg.h 
b/osaf/services/saf/amf/amfd/include/sg.h
--- a/osaf/services/saf/amf/amfd/include/sg.h
+++ b/osaf/services/saf/amf/amfd/include/sg.h
@@ -45,6 +45,7 @@
 
 class AVD_SU;
 class AVD_SI;
+class AVD_APP;
 
 /* The valid SG FSM states. */
 typedef enum {
@@ -192,7 +193,7 @@ public:
        AVD_SG *sg_list_sg_type_next;
        struct avd_amf_sg_type_tag *sg_type;
        AVD_SG *sg_list_app_next;
-       struct avd_app_tag *app;
+       AVD_APP *app;
        bool equal_ranked_su; /* This flag is set when ranks of all SU is the 
same.
                                     It is used in equal distribution of SIs on 
SU 
                                     in Nway, N+M and Nway-Act Red models.*/
@@ -549,7 +550,7 @@ extern void avd_sg_db_add(AVD_SG *sg);
 extern void avd_sg_db_remove(AVD_SG *sg);
 extern void avd_sg_add_si(AVD_SG *sg, AVD_SI *si);
 extern void avd_sg_remove_si(AVD_SG *sg, AVD_SI *si);
-extern SaAisErrorT avd_sg_config_get(const SaNameT *app_dn, struct avd_app_tag 
*app);
+extern SaAisErrorT avd_sg_config_get(const SaNameT *app_dn, AVD_APP *app);
 extern void avd_sg_add_su(AVD_SU *su);
 extern void avd_sg_remove_su(AVD_SU *su);
 extern void avd_sg_constructor(void);
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
@@ -47,6 +47,8 @@
 #include <ckpt_msg.h>
 #include <vector>
 
+class AVD_APP;
+
 /* Enum values defines different SI-SI dependency FSM states. */
 typedef enum {
        AVD_SI_NO_DEPENDENCY = 1,
@@ -98,7 +100,7 @@ public:
        uint32_t tol_timer_count;
        struct avd_amf_svc_type_tag *svc_type;
        AVD_SI *si_list_svc_type_next;
-       struct avd_app_tag *app;
+       AVD_APP *app;
        AVD_SI *si_list_app_next;
        struct avd_sus_per_si_rank_tag *list_of_sus_per_si_rank;
        avd_sirankedsu_t *rankedsu_list_head;
@@ -151,7 +153,7 @@ extern AVD_SI *avd_si_new(const SaNameT 
 extern void avd_si_delete(AVD_SI *si);
 extern void avd_si_db_add(AVD_SI *si);
 extern AVD_SI *avd_si_get(const SaNameT *si_name);
-extern SaAisErrorT avd_si_config_get(struct avd_app_tag *app);
+extern SaAisErrorT avd_si_config_get(AVD_APP *app);
 extern void avd_si_constructor(void);
 
 #endif

------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to