Ack for all the patches.

Thanks
-Nagu

> -----Original Message-----
> From: Hans Nordeback [mailto:hans.nordeb...@ericsson.com]
> Sent: 02 June 2014 17:25
> To: hans.fe...@ericsson.com; Nagendra Kumar; Praveen Malviya
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: [PATCH 1 of 7] amfd: add support for different key types in
> db_template v4 [#713]
> 
>  osaf/services/saf/amf/amfd/include/db_template.h |  51 +++++++++++++------
> ----
>  osaf/services/saf/amf/amfd/include/util.h        |   6 ++-
>  osaf/services/saf/amf/amfd/util.cc               |   5 ++
>  3 files changed, 38 insertions(+), 24 deletions(-)
> 
> 
> diff --git a/osaf/services/saf/amf/amfd/include/db_template.h
> b/osaf/services/saf/amf/amfd/include/db_template.h
> --- a/osaf/services/saf/amf/amfd/include/db_template.h
> +++ b/osaf/services/saf/amf/amfd/include/db_template.h
> @@ -19,16 +19,22 @@
> 
>  #include <map>
>  #include <string>
> -#include "ncsgl_defs.h"
> 
> -template <typename T>
> +//
> +class Amf {
> +public:
> +  static std::string to_string(const SaNameT *name) {return
> +std::string((char*)name->value, name->length);} };
> +
> +//
> +template <typename Key, typename T>
>  class AmfDb {
>    public:
> -   unsigned int insert(T *obj);
> -   void erase(T *obj);
> -   T *find(const SaNameT *name);
> +   unsigned int insert(const Key &key, T *obj);
> +   void erase(const Key &key);
> +   T *find(const Key &name);
> 
> -   typedef std::map<std::string, T*> AmfDbMap;
> +   typedef std::map<Key, T*> AmfDbMap;
>     typedef typename AmfDbMap::const_iterator const_iterator;
> 
>     const_iterator begin() const {return db.begin();} @@ -38,32 +44,31 @@ 
> class
> AmfDb {
>     AmfDbMap db;
>  };
> 
> -template <typename T>
> -unsigned int AmfDb<T>::insert(T *obj) {
> +//
> +template <typename Key, typename T>
> +unsigned int AmfDb<Key, T>::insert(const Key &key, T *obj) {
>    osafassert(obj);
> -  std::string name((const char*)obj->name.value, obj->name.length);
> -  if (db.insert(std::make_pair(name, obj)).second) {
> -    return NCSCC_RC_SUCCESS;
> +
> +  if (db.insert(std::make_pair(key, obj)).second) {
> +    return 1; // NCSCC_RC_SUCCESS
>    }
>     else {
> -      return NCSCC_RC_FAILURE; // Duplicate
> +      return 2; // Duplicate (NCSCC_RC_FAILURE)
>      }
>   }
> 
> -template <typename T>
> -void AmfDb<T>::erase(T *obj) {
> -  osafassert(obj);
> -  std::string name((const char*)obj->name.value, obj->name.length);
> -  db.erase(name);
> +//
> +template <typename Key, typename T>
> +void AmfDb<Key, T>::erase(const Key &key) {
> +  db.erase(key);
>  }
> 
> -template <typename T>
> -T *AmfDb<T>::find(const SaNameT *dn) {
> -  osafassert(dn);
> -  std::string name((const char*)dn->value, dn->length);
> -  typename AmfDbMap::iterator it = db.find(name);
> +//
> +template <typename Key, typename T>
> +T *AmfDb<Key, T>::find(const Key &dn) {
> +  typename AmfDbMap::iterator it = db.find(dn);
>    if (it == db.end())
> -    return NULL;
> +    return 0;
>    else
>      return it->second;
>  }
> 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
> @@ -34,6 +34,8 @@
>  #ifndef AVD_MSG_H
>  #define AVD_MSG_H
> 
> +#include <string>
> +
>  #include <amf_d2nmsg.h>
>  #include <cb.h>
>  #include <amf_util.h>
> @@ -125,6 +127,9 @@ uint32_t avd_snd_comp_validation_resp(st
>                                           struct avd_comp_tag *comp_ptr,
> AVD_DND_MSG *n2d_msg);  void avsv_d2d_msg_free(AVD_D2D_MSG *);
> uint32_t avd_d2d_msg_snd(struct cl_cb_tag *, AVD_D2D_MSG *);
> +
> +std::string to_string(const SaNameT &s);
> +
>  extern int avd_admin_state_is_valid(SaAmfAdminStateT state);  extern
> SaAisErrorT avd_object_name_create(SaNameT *rdn_attr_value, SaNameT
> *parentName, SaNameT *object_name);
> 
> @@ -142,5 +147,4 @@ extern uint32_t amfd_switch_qsd_actv(AVD  extern
> uint32_t amfd_switch_actv_qsd(AVD_CL_CB *cb);  extern bool
> object_exist_in_imm(const SaNameT *dn);  extern const char
> *admin_op_name(SaAmfAdminOperationIdT opid);
> -
>  #endif
> diff --git a/osaf/services/saf/amf/amfd/util.cc
> b/osaf/services/saf/amf/amfd/util.cc
> --- a/osaf/services/saf/amf/amfd/util.cc
> +++ b/osaf/services/saf/amf/amfd/util.cc
> @@ -107,6 +107,11 @@ const char *avd_ha_state[] = {
>       "QUIESCING"
>  };
> 
> +std::string to_string(const SaNameT &s) {
> +     return std::string((char*)s.value, s.length); }
> +
> 
> /************************************************************
> *****************
>   * Function: avd_snd_node_ack_msg
>   *

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to