]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw_acl: move constructors, destructors to .cc
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Fri, 13 May 2011 23:38:13 +0000 (16:38 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Fri, 13 May 2011 23:39:45 +0000 (16:39 -0700)
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
src/rgw/rgw_acl.cc
src/rgw/rgw_acl.h

index 8cb9c104141f8a01c81041c185c8196d7abbd666..a213f9b34dbf726c31d0b703b5676db29b5e6c06 100644 (file)
@@ -12,14 +12,160 @@ using namespace std;
 
 static string rgw_uri_all_users = RGW_URI_ALL_USERS;
 static string rgw_uri_auth_users = RGW_URI_AUTH_USERS;
-                                  
+
+XMLObjIter::
+XMLObjIter()
+{
+}
+
+XMLObjIter::
+~XMLObjIter()
+{
+}
+
+void XMLObjIter::
+set(const XMLObjIter::map_iter_t &_cur, const XMLObjIter::map_iter_t &_end)
+{
+  cur = _cur;
+  end = _end;
+}
+
+XMLObj *XMLObjIter::
+get_next()
+{
+  XMLObj *obj = NULL;
+  if (cur != end) {
+    obj = cur->second;
+    ++cur;
+  }
+  return obj;
+};
+
 ostream& operator<<(ostream& out, XMLObj& obj) {
    out << obj.type << ": " << obj.data;
    return out;
 }
 
+XMLObj::
+~XMLObj()
+{
+}
+
+bool XMLObj::
+xml_start(XMLObj *parent, const char *el, const char **attr)
+{
+  this->parent = parent;
+  type = el;
+  for (int i = 0; attr[i]; i += 2) {
+    attr_map[attr[i]] = string(attr[i + 1]);
+  }
+  return true;
+}
+
+bool XMLObj::
+xml_end(const char *el)
+{
+  return true;
+}
+
+void XMLObj::
+xml_handle_data(const char *s, int len)
+{
+  data = string(s, len);
+}
+
+string& XMLObj::
+XMLObj::get_data()
+{
+  return data;
+}
+
+XMLObj *XMLObj::
+XMLObj::get_parent()
+{
+  return parent;
+}
+
+void XMLObj::
+add_child(string el, XMLObj *obj)
+{
+  children.insert(pair<string, XMLObj *>(el, obj));
+}
+
+bool XMLObj::
+get_attr(string name, string& attr)
+{
+  map<string, string>::iterator iter = attr_map.find(name);
+  if (iter == attr_map.end())
+    return false;
+  attr = iter->second;
+  return true;
+}
+
+XMLObjIter XMLObj::
+find(string name)
+{
+  XMLObjIter iter;
+  map<string, XMLObj *>::iterator first;
+  map<string, XMLObj *>::iterator last;
+  first = children.find(name);
+  last = children.upper_bound(name);
+  iter.set(first, last);
+  return iter;
+}
+
+XMLObj *XMLObj::
+find_first(string name)
+{
+  XMLObjIter iter;
+  map<string, XMLObj *>::iterator first;
+  first = children.find(name);
+  if (first != children.end())
+    return first->second;
+  return NULL;
+}
+
+ACLPermission::
+ACLPermission() : flags(0)
+{
+}
+
+ACLPermission::~ACLPermission()
+{
+}
+
+int ACLPermission::
+get_permissions()
+{
+  return flags;
+}
+
+void ACLPermission::
+set_permissions(int perm)
+{
+  flags = perm;
+}
+
+void ACLPermission::
+to_xml(ostream& out)
+{
+  if ((flags & RGW_PERM_FULL_CONTROL) == RGW_PERM_FULL_CONTROL) {
+   out << "<Permission>FULL_CONTROL</Permission>";
+  } else {
+    if (flags & RGW_PERM_READ)
+      out << "<Permission>READ</Permission>";
+    if (flags & RGW_PERM_WRITE)
+      out << "<Permission>WRITE</Permission>";
+    if (flags & RGW_PERM_READ_ACP)
+      out << "<Permission>READ_ACP</Permission>";
+    if (flags & RGW_PERM_WRITE_ACP)
+      out << "<Permission>WRITE_ACP</Permission>";
+  }
+}
 
-bool ACLPermission::xml_end(const char *el) {
+bool ACLPermission::
+xml_end(const char *el)
+{
   const char *s = data.c_str();
   if (strcasecmp(s, "READ") == 0) {
     flags |= RGW_PERM_READ;
@@ -40,6 +186,76 @@ bool ACLPermission::xml_end(const char *el) {
   return false;
 }
 
+ACLGranteeType::
+ACLGranteeType() : type(ACL_TYPE_UNKNOWN)
+{
+}
+
+ACLGranteeType::
+~ACLGranteeType()
+{
+}
+
+const char *ACLGranteeType::
+to_string()
+{
+  switch (type) {
+  case ACL_TYPE_CANON_USER:
+    return "CanonicalUser";
+  case ACL_TYPE_EMAIL_USER:
+    return "AmazonCustomerByEmail";
+  case ACL_TYPE_GROUP:
+    return "Group";
+   default:
+    return "unknown";
+  }
+}
+
+ACLGranteeTypeEnum ACLGranteeType::
+get_type()
+{
+  return (ACLGranteeTypeEnum)type;
+};
+
+void ACLGranteeType::
+set(ACLGranteeTypeEnum t)
+{
+  type = t;
+}
+
+void ACLGranteeType::
+set(const char *s)
+{
+  if (!s) {
+    type = ACL_TYPE_UNKNOWN;
+    return;
+  }
+  if (strcmp(s, "CanonicalUser") == 0)
+    type = ACL_TYPE_CANON_USER;
+  else if (strcmp(s, "AmazonCustomerByEmail") == 0)
+    type = ACL_TYPE_EMAIL_USER;
+  else if (strcmp(s, "Group") == 0)
+    type = ACL_TYPE_GROUP;
+  else
+    type = ACL_TYPE_UNKNOWN;
+}
+
+ACLGrantee::
+ACLGrantee()
+{
+}
+
+ACLGrantee::
+~ACLGrantee()
+{
+}
+
+string& ACLGrantee::
+get_type()
+{
+  return type;
+}
+
 class ACLID : public XMLObj
 {
 public:
@@ -65,12 +281,22 @@ public:
 class ACLDisplayName : public XMLObj
 {
 public:
- ACLDisplayName() {} 
+ ACLDisplayName() {}
  ~ACLDisplayName() {}
 };
 
+ACLOwner::
+ACLOwner()
+{
+}
+
+ACLOwner::
+~ACLOwner()
+{
+}
+
 bool ACLOwner::xml_end(const char *el) {
-  ACLID *acl_id = (ACLID *)find_first("ID");  
+  ACLID *acl_id = (ACLID *)find_first("ID");
   ACLID *acl_name = (ACLID *)find_first("DisplayName");
 
   // ID is mandatory
@@ -87,6 +313,16 @@ bool ACLOwner::xml_end(const char *el) {
   return true;
 }
 
+ACLGrant::
+ACLGrant()
+{
+}
+
+ACLGrant::
+~ACLGrant()
+{
+}
+
 bool ACLGrant::xml_end(const char *el) {
   ACLGrantee *acl_grantee;
   ACLID *acl_id;
@@ -144,6 +380,16 @@ bool ACLGrant::xml_end(const char *el) {
   return true;
 }
 
+RGWAccessControlList::
+RGWAccessControlList() : user_map_initialized(false)
+{
+}
+
+RGWAccessControlList::
+~RGWAccessControlList()
+{
+}
+
 void RGWAccessControlList::init_user_map()
 {
   multimap<string, ACLGrant>::iterator iter;
@@ -222,6 +468,16 @@ bool RGWAccessControlList::create_canned(string id, string name, string canned_a
 
 }
 
+RGWAccessControlPolicy::
+RGWAccessControlPolicy()
+{
+}
+
+RGWAccessControlPolicy::
+~RGWAccessControlPolicy()
+{
+}
+
 bool RGWAccessControlPolicy::xml_end(const char *el) {
   RGWAccessControlList *acl_p =
       (RGWAccessControlList *)find_first("AccessControlList");
@@ -246,7 +502,7 @@ int RGWAccessControlPolicy::get_perm(string& id, int perm_mask) {
     /* this is the owner, it has implicit permissions */
     if (id.compare(owner.get_id()) == 0) {
       perm |= RGW_PERM_READ_ACP | RGW_PERM_WRITE_ACP;
-      perm &= perm_mask; 
+      perm &= perm_mask;
     }
   }
 
@@ -272,30 +528,46 @@ void xml_start(void *data, const char *el, const char **attr) {
     handler->set_failure();
 }
 
+RGWXMLParser::
+RGWXMLParser() : buf(NULL), buf_len(0), cur_obj(NULL), success(true)
+{
+}
+
+RGWXMLParser::
+~RGWXMLParser()
+{
+  free(buf);
+  vector<XMLObj *>::iterator iter;
+  for (iter = objs.begin(); iter != objs.end(); ++iter) {
+    XMLObj *obj = *iter;
+    delete obj;
+  }
+}
+
 bool RGWXMLParser::xml_start(const char *el, const char **attr) {
   XMLObj * obj;
   if (strcmp(el, "AccessControlPolicy") == 0) {
-    obj = new RGWAccessControlPolicy();    
+    obj = new RGWAccessControlPolicy();
   } else if (strcmp(el, "Owner") == 0) {
-    obj = new ACLOwner();    
+    obj = new ACLOwner();
   } else if (strcmp(el, "AccessControlList") == 0) {
-    obj = new RGWAccessControlList();    
+    obj = new RGWAccessControlList();
   } else if (strcmp(el, "ID") == 0) {
-    obj = new ACLID(); 
+    obj = new ACLID();
   } else if (strcmp(el, "DisplayName") == 0) {
-    obj = new ACLDisplayName(); 
+    obj = new ACLDisplayName();
   } else if (strcmp(el, "Grant") == 0) {
-    obj = new ACLGrant(); 
+    obj = new ACLGrant();
   } else if (strcmp(el, "Grantee") == 0) {
-    obj = new ACLGrantee(); 
+    obj = new ACLGrantee();
   } else if (strcmp(el, "Permission") == 0) {
-    obj = new ACLPermission(); 
+    obj = new ACLPermission();
   } else if (strcmp(el, "URI") == 0) {
-    obj = new ACLURI(); 
+    obj = new ACLURI();
   } else if (strcmp(el, "EmailAddress") == 0) {
-    obj = new ACLEmail(); 
+    obj = new ACLEmail();
   } else {
-    obj = new XMLObj(); 
+    obj = new XMLObj();
   }
   if (!obj->xml_start(cur_obj, el, attr))
     return false;
index 1ae6e558d6228d1d848e2899b6dbee459051ef64..a9608ba974c3f7f84daeb95ba4240fb5b3bb19e9 100644 (file)
@@ -20,24 +20,19 @@ using namespace std;
 #define RGW_PERM_WRITE_ACP       0x08
 #define RGW_PERM_FULL_CONTROL    ( RGW_PERM_READ | RGW_PERM_WRITE | \
                                   RGW_PERM_READ_ACP | RGW_PERM_WRITE_ACP )
-#define RGW_PERM_ALL             RGW_PERM_FULL_CONTROL 
+#define RGW_PERM_ALL             RGW_PERM_FULL_CONTROL
 
 class XMLObj;
 
 class XMLObjIter {
-  map<string, XMLObj *>::iterator cur;
-  map<string, XMLObj *>::iterator end;
+  typedef map<string, XMLObj *>::iterator map_iter_t;
+  map_iter_t cur;
+  map_iter_t end;
 public:
-  XMLObjIter() {}
-  void set(map<string, XMLObj *>::iterator& _cur, map<string, XMLObj *>::iterator& _end) { cur = _cur; end = _end; }
-  XMLObj *get_next() { 
-    XMLObj *obj = NULL;
-    if (cur != end) {
-      obj = cur->second;
-      ++cur;
-    }
-    return obj;
-  };
+  XMLObjIter();
+  ~XMLObjIter();
+  void set(const XMLObjIter::map_iter_t &_cur, const XMLObjIter::map_iter_t &_end);
+  XMLObj *get_next();
 };
 
 /**
@@ -56,49 +51,16 @@ protected:
   multimap<string, XMLObj *> children;
   map<string, string> attr_map;
 public:
-  virtual ~XMLObj() { }
-  bool xml_start(XMLObj *parent, const char *el, const char **attr) {
-    this->parent = parent;
-    type = el;
-    for (int i = 0; attr[i]; i += 2) {
-      attr_map[attr[i]] = string(attr[i + 1]);
-    }
-    return true;
-  }
-  virtual bool xml_end(const char *el) { return true; }
-  virtual void xml_handle_data(const char *s, int len) { data = string(s, len); }
-  string& get_data() { return data; }
-  XMLObj *get_parent() { return parent; }
-  void add_child(string el, XMLObj *obj) {
-    children.insert(pair<string, XMLObj *>(el, obj));
-  }
-
-  bool get_attr(string name, string& attr) {
-    map<string, string>::iterator iter = attr_map.find(name);
-    if (iter == attr_map.end())
-      return false;
-    attr = iter->second;
-    return true;
-  }
-
-  XMLObjIter find(string name) {
-    XMLObjIter iter;
-    map<string, XMLObj *>::iterator first;
-    map<string, XMLObj *>::iterator last;
-    first = children.find(name);
-    last = children.upper_bound(name);
-    iter.set(first, last);
-    return iter;
-  }
-
-  XMLObj *find_first(string name) {
-    XMLObjIter iter;
-    map<string, XMLObj *>::iterator first;
-    first = children.find(name);
-    if (first != children.end())
-      return first->second;
-    return NULL;
-  }
+  virtual ~XMLObj();
+  bool xml_start(XMLObj *parent, const char *el, const char **attr);
+  virtual bool xml_end(const char *el);
+  virtual void xml_handle_data(const char *s, int len);
+  string& get_data();
+  XMLObj *get_parent();
+  void add_child(string el, XMLObj *obj);
+  bool get_attr(string name, string& attr);
+  XMLObjIter find(string name);
+  XMLObj *find_first(string name);
 
   friend ostream& operator<<(ostream& out, XMLObj& obj);
 };
@@ -107,11 +69,11 @@ class ACLPermission : public XMLObj
 {
   int flags;
 public:
-  ACLPermission() : flags(0) {}
-  ~ACLPermission() {}
+  ACLPermission();
+  ~ACLPermission();
   bool xml_end(const char *el);
-  int get_permissions() { return flags; }
-  void set_permissions(int perm) { flags = perm; }
+  int get_permissions();
+  void set_permissions(int perm);
 
   void encode(bufferlist& bl) const {
     __u8 struct_v = 1;
@@ -123,20 +85,7 @@ public:
     ::decode(struct_v, bl);
     ::decode(flags, bl);
   }
-  void to_xml(ostream& out) {
-    if ((flags & RGW_PERM_FULL_CONTROL) == RGW_PERM_FULL_CONTROL) {
-     out << "<Permission>FULL_CONTROL</Permission>";
-    } else {
-      if (flags & RGW_PERM_READ)
-        out << "<Permission>READ</Permission>";
-      if (flags & RGW_PERM_WRITE)
-        out << "<Permission>WRITE</Permission>";
-      if (flags & RGW_PERM_READ_ACP)
-        out << "<Permission>READ_ACP</Permission>";
-      if (flags & RGW_PERM_WRITE_ACP)
-        out << "<Permission>WRITE_ACP</Permission>";
-    }
-  }
+  void to_xml(ostream& out);
 };
 WRITE_CLASS_ENCODER(ACLPermission)
 
@@ -150,37 +99,12 @@ class ACLGranteeType
 {
   __u32 type;
 public:
-  ACLGranteeType() : type(ACL_TYPE_UNKNOWN) {}
-  const char *to_string() {
-    switch (type) {
-    case ACL_TYPE_CANON_USER:
-      return "CanonicalUser";
-    case ACL_TYPE_EMAIL_USER:
-      return "AmazonCustomerByEmail";
-    case ACL_TYPE_GROUP:
-      return "Group";
-     default:
-      return "unknown";
-    }
-  }
-  ACLGranteeTypeEnum get_type() { return (ACLGranteeTypeEnum)type; };
-  void set(ACLGranteeTypeEnum t) { type = t; }
-
-  void set(const char *s) {
-    if (!s) {
-      type = ACL_TYPE_UNKNOWN;
-      return;
-    }
-    if (strcmp(s, "CanonicalUser") == 0)
-      type = ACL_TYPE_CANON_USER;
-    else if (strcmp(s, "AmazonCustomerByEmail") == 0)
-      type = ACL_TYPE_EMAIL_USER;
-    else if (strcmp(s, "Group") == 0)
-      type = ACL_TYPE_GROUP;
-    else
-      type = ACL_TYPE_UNKNOWN;
-  }
-
+  ACLGranteeType();
+  ~ACLGranteeType();
+  const char *to_string();
+  ACLGranteeTypeEnum get_type();
+  void set(ACLGranteeTypeEnum t);
+  void set(const char *s);
   void encode(bufferlist& bl) const {
     __u8 struct_v = 1;
     ::encode(struct_v, bl);
@@ -198,27 +122,27 @@ class ACLGrantee : public XMLObj
 {
   string type;
 public:
-  ACLGrantee() {} 
-  ~ACLGrantee() {}
+  ACLGrantee();
+  ~ACLGrantee();
 
   bool xml_start(const char *el, const char **attr);
 
-  string& get_type() { return type; }
+  string& get_type();
 };
 
 
 class ACLGrant : public XMLObj
 {
   ACLGranteeType type;
-  
+
   string id;
   string uri;
   string email;
   ACLPermission permission;
   string name;
 public:
-  ACLGrant() {}
-  ~ACLGrant() {}
+  ACLGrant();
+  ~ACLGrant();
 
   bool xml_end(const char *el);
 
@@ -301,8 +225,8 @@ class RGWAccessControlList : public XMLObj
 
   void init_user_map();
 public:
-  RGWAccessControlList() : user_map_initialized(false) {}
-  ~RGWAccessControlList() {}
+  RGWAccessControlList();
+  ~RGWAccessControlList();
 
   bool xml_end(const char *el);
   int get_perm(string& id, int perm_mask);
@@ -348,8 +272,8 @@ class ACLOwner : public XMLObj
   string id;
   string display_name;
 public:
-  ACLOwner() {}
-  ~ACLOwner() {}
+  ACLOwner();
+  ~ACLOwner();
 
   bool xml_end(const char *el);
   void encode(bufferlist& bl) const {
@@ -386,8 +310,8 @@ class RGWAccessControlPolicy : public XMLObj
   ACLOwner owner;
 
 public:
-  RGWAccessControlPolicy() {}
-  ~RGWAccessControlPolicy() {}
+  RGWAccessControlPolicy();
+  ~RGWAccessControlPolicy();
 
   bool xml_end(const char *el);
 
@@ -447,15 +371,8 @@ class RGWXMLParser : public XMLObj
   XMLObj *cur_obj;
   vector<XMLObj *> objs;
 public:
-  RGWXMLParser() : buf(NULL), buf_len(0), cur_obj(NULL), success(true) {}
-  ~RGWXMLParser() {
-    free(buf);
-    vector<XMLObj *>::iterator iter;
-    for (iter = objs.begin(); iter != objs.end(); ++iter) {
-      XMLObj *obj = *iter;
-      delete obj;
-    }
-  }
+  RGWXMLParser();
+  ~RGWXMLParser();
   bool init();
   bool xml_start(const char *el, const char **attr);
   bool xml_end(const char *el);