]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librgw: consolidate RGWLib RGWOps into RGWRequest
authorMatt Benjamin <mbenjamin@redhat.com>
Tue, 1 Dec 2015 17:50:51 +0000 (12:50 -0500)
committerMatt Benjamin <mbenjamin@redhat.com>
Fri, 12 Feb 2016 17:06:08 +0000 (12:06 -0500)
The intermediate derivation mirrored that in RGWRest, but we
don't seem to need it.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/rgw/rgw_file.h
src/rgw/rgw_os_lib.cc
src/rgw/rgw_os_lib.h

index ef4a27b43f5e801e249f28462a6479db71173b91..0a36804cc5fd28b8fc711114dda8dbeadf02e808 100644 (file)
@@ -536,7 +536,7 @@ static inline std::string make_uri(const std::string& bucket_name,
 */
 
 class RGWListBucketsRequest : public RGWLibRequest,
-                             public RGWListBuckets_OS_Lib /* RGWOp */
+                             public RGWListBuckets /* RGWOp */
 {
 public:
   uint64_t* offset;
@@ -583,6 +583,36 @@ public:
     return 0;
   }
 
+  int get_params() {
+    limit = -1; /* no limit */
+    return 0;
+  }
+
+  virtual void send_response_begin(bool has_buckets) {
+    sent_data = true;
+  }
+
+  virtual void send_response_data(RGWUserBuckets& buckets) {
+    if (!sent_data)
+      return;
+
+    // XXX if necessary, we can remove the need for dynamic_cast
+    RGWListBucketsRequest* req
+      = dynamic_cast<RGWListBucketsRequest*>(this);
+
+    map<string, RGWBucketEnt>& m = buckets.get_buckets();
+    for (const auto& iter : m) {
+      const std::string& marker = iter.first; // XXX may need later
+      const RGWBucketEnt& ent = iter.second;
+      /* call me maybe */
+      req->operator()(ent.bucket.name, marker); // XXX attributes
+    }
+  } /* send_response_data */
+
+  virtual void send_response_end() {
+    // do nothing
+  }
+
   int operator()(const std::string& name, const std::string& marker) {
     rcb(name.c_str(), cb_arg, (*offset)++);
     return 0;
@@ -595,7 +625,7 @@ public:
 */
 
 class RGWListBucketRequest : public RGWLibRequest,
-                            public RGWListBucket_OS_Lib /* RGWOp */
+                            public RGWListBucket /* RGWOp */
 {
 public:
   std::string& uri;
@@ -608,6 +638,7 @@ public:
     : RGWLibRequest(_cct, _user), uri(_uri), offset(_offset),
       cb_arg(_cb_arg),
       rcb(_rcb) {
+    default_max = 1000; // XXX was being omitted
     magic = 72;
     op = this;
   }
@@ -649,6 +680,43 @@ public:
     return 0;
   }
 
+  virtual int get_params() {
+    // XXX S3
+    struct req_state* s = get_state();
+    list_versions = s->info.args.exists("versions");
+    prefix = s->info.args.get("prefix");
+    if (!list_versions) {
+      marker = s->info.args.get("marker");
+    } else {
+    marker.name = s->info.args.get("key-marker");
+    marker.instance = s->info.args.get("version-id-marker");
+    }
+    max_keys = s->info.args.get("max-keys");
+    op_ret = parse_max_keys();
+    if (op_ret < 0) {
+      return op_ret;
+    }
+#if 0 /* XXX? */
+    delimiter = s->info.args.get("delimiter");
+    encoding_type = s->info.args.get("encoding-type");
+#endif
+    return 0;
+  }
+
+  virtual void send_response() {
+    // XXX if necessary, we can remove the need for dynamic_cast
+    RGWListBucketRequest* req
+      = dynamic_cast<RGWListBucketRequest*>(this);
+
+    for (const auto& iter : objs) {
+      /* call me maybe */
+      req->operator()(iter.key.name, iter.key.name); // XXX attributes
+    }
+  }
+
+  virtual void send_versioned_response() {
+    send_response();
+  }
 }; /* RGWListBucketRequest */
 
 /*
@@ -656,7 +724,7 @@ public:
 */
 
 class RGWCreateBucketRequest : public RGWLibRequest,
-                              public RGWCreateBucket_OS_Lib /* RGWOp */
+                              public RGWCreateBucket /* RGWOp */
 {
 public:
   std::string& uri;
@@ -704,6 +772,19 @@ public:
 
     return 0;
   }
+
+  virtual int get_params() {
+    struct req_state* s = get_state();
+    RGWAccessControlPolicy_S3 s3policy(s->cct);
+    /* we don't have (any) headers, so just create canned ACLs */
+    int ret = s3policy.create_canned(s->owner, s->bucket_owner, s->canned_acl);
+    policy = s3policy;
+    return ret;
+  }
+
+  virtual void send_response() {
+    /* TODO: something (maybe) */
+  }
 }; /* RGWCreateBucketRequest */
 
 /*
@@ -711,7 +792,7 @@ public:
 */
 
 class RGWDeleteBucketRequest : public RGWLibRequest,
-                              public RGWDeleteBucket_OS_Lib /* RGWOp */
+                              public RGWDeleteBucket /* RGWOp */
 {
 public:
   std::string& uri;
@@ -764,7 +845,7 @@ public:
 */
 
 class RGWPutObjRequest : public RGWLibRequest,
-                        public RGWPutObj_OS_Lib /* RGWOp */
+                        public RGWPutObj /* RGWOp */
 {
 public:
   const std::string& bucket_name;
@@ -817,6 +898,15 @@ public:
     return 0;
   }
 
+  virtual int get_params() {
+    struct req_state* s = get_state();
+    RGWAccessControlPolicy_S3 s3policy(s->cct);
+    /* we don't have (any) headers, so just create canned ACLs */
+    int ret = s3policy.create_canned(s->owner, s->bucket_owner, s->canned_acl);
+    policy = s3policy;
+    return ret;
+  }
+
   virtual int get_data(buffer::list& _bl) {
     /* XXX for now, use sharing semantics */
     _bl.claim(bl);
@@ -840,7 +930,7 @@ public:
 */
 
 class RGWGetObjRequest : public RGWLibRequest,
-                        public RGWGetObj_OS_Lib /* RGWOp */
+                        public RGWGetObj /* RGWOp */
 {
 public:
   const std::string& bucket_name;
@@ -930,7 +1020,7 @@ public:
 */
 
 class RGWDeleteObjRequest : public RGWLibRequest,
-                           public RGWDeleteObj_OS_Lib /* RGWOp */
+                           public RGWDeleteObj /* RGWOp */
 {
 public:
   const std::string& bucket_name;
index 6e6453a04de36138f7a51e59550892025e2903f1..f34a7cdb41a696aa5db10eb3ed4f7b17eb5c6e64 100644 (file)
@@ -56,93 +56,3 @@ int RGWHandler_Lib::init_from_header(struct req_state *s)
   }
   return 0;
 } /* init_from_header */
-
-/* RGWOps */
-
-void RGWListBuckets_OS_Lib::send_response_begin(bool has_buckets)
-{
-  sent_data = true;
-}
-
-void RGWListBuckets_OS_Lib::send_response_data(RGWUserBuckets& buckets)
-{
-  if (!sent_data)
-    return;
-
-  // XXX if necessary, we can remove the need for dynamic_cast
-  RGWListBucketsRequest* req
-    = dynamic_cast<RGWListBucketsRequest*>(this);
-
-  map<string, RGWBucketEnt>& m = buckets.get_buckets();
-  for (const auto& iter : m) {
-    const std::string& marker = iter.first; // XXX may need later
-    const RGWBucketEnt& ent = iter.second;
-    /* call me maybe */
-    req->operator()(ent.bucket.name, marker); // XXX attributes
-  }
-} /* send_response_data */
-
-void RGWListBuckets_OS_Lib::send_response_end()
-{
-  // do nothing
-}
-
-int RGWListBucket_OS_Lib::get_params()
-{
-  // XXX S3
-  list_versions = s->info.args.exists("versions");
-  prefix = s->info.args.get("prefix");
-  if (!list_versions) {
-    marker = s->info.args.get("marker");
-  } else {
-    marker.name = s->info.args.get("key-marker");
-    marker.instance = s->info.args.get("version-id-marker");
-  }
-  max_keys = s->info.args.get("max-keys");
-  op_ret = parse_max_keys();
-  if (op_ret < 0) {
-    return op_ret;
-  }
-#if 0
-  delimiter = s->info.args.get("delimiter");
-  encoding_type = s->info.args.get("encoding-type");
-#endif
-  return 0;
-}
-
-void RGWListBucket_OS_Lib::send_response()
-{
-  // XXX if necessary, we can remove the need for dynamic_cast
-  RGWListBucketRequest* req
-    = dynamic_cast<RGWListBucketRequest*>(this);
-
-  for (const auto& iter : objs) {
-    /* call me maybe */
-    req->operator()(iter.key.name, iter.key.name); // XXX attributes
-  }
-}
-
-int RGWCreateBucket_OS_Lib::get_params()
-{
-  RGWAccessControlPolicy_S3 s3policy(s->cct);
-
-  /* we don't have (any) headers, so just create canned ACLs */
-  int ret = s3policy.create_canned(s->owner, s->bucket_owner, s->canned_acl);
-  policy = s3policy;
-  return ret;
-}
-
-void RGWCreateBucket_OS_Lib::send_response()
-{
-  /* TODO: something (maybe) */
-}
-
-int RGWPutObj_OS_Lib::get_params()
-{
-  RGWAccessControlPolicy_S3 s3policy(s->cct);
-
-  /* we don't have (any) headers, so just create canned ACLs */
-  int ret = s3policy.create_canned(s->owner, s->bucket_owner, s->canned_acl);
-  policy = s3policy;
-  return ret;
-}
index dc8378f087e90c55a45c77715560efeebee097b6..78071b7d8c8595bf71ad8b207608c897eeeee762 100644 (file)
@@ -8,85 +8,5 @@
 #include "rgw_common.h"
 #include "rgw_lib.h"
 
-/* RGWOps */
-
-/* XXX can gc this entire level, and shrink vtables */
-
-class RGWListBuckets_OS_Lib : public RGWListBuckets {
-public:
-
-  RGWListBuckets_OS_Lib() {}
-  ~RGWListBuckets_OS_Lib() {}
-
-  virtual void send_response_begin(bool has_buckets);
-  virtual void send_response_data(RGWUserBuckets& buckets);
-  virtual void send_response_end();
-
-  int get_params() {
-    limit = -1; /* no limit */
-    return 0;
-  }
-}; /* RGWListBuckets_OS_Lib */
-
-class RGWListBucket_OS_Lib : public RGWListBucket {
-public:
-  RGWListBucket_OS_Lib() {
-    default_max = 1000;
-  }
-
-  ~RGWListBucket_OS_Lib() {}
-
-  int get_params();
-  virtual void send_response();
-
-  virtual void send_versioned_response() {
-    send_response();
-  }
-}; /* RGWListBucket_OS_Lib */
-
-class RGWStatBucket_OS_Lib : public RGWStatBucket {
-public:
-  RGWStatBucket_OS_Lib() {}
-  ~RGWStatBucket_OS_Lib() {}
-
-  virtual void send_response();
-
-}; /* RGWStatBucket_OS_Lib */
-
-class RGWCreateBucket_OS_Lib : public RGWCreateBucket {
-public:
-  RGWCreateBucket_OS_Lib() {}
-  ~RGWCreateBucket_OS_Lib() {}
-  virtual int get_params();
-  virtual void send_response();
-}; /* RGWCreateBucket_OS_Lib */
-
-class RGWDeleteBucket_OS_Lib : public RGWDeleteBucket {
-public:
-  RGWDeleteBucket_OS_Lib() {}
-  ~RGWDeleteBucket_OS_Lib() {}
-}; /* RGWCreateBucket_OS_Lib */
-
-class RGWPutObj_OS_Lib : public RGWPutObj
-{
-public:
-  RGWPutObj_OS_Lib() {}
-  ~RGWPutObj_OS_Lib() {}
-
-  virtual int get_params();
-
-}; /* RGWPutObj_OS_Lib */
-
-class RGWGetObj_OS_Lib : public RGWGetObj
-{
-public:
-  RGWGetObj_OS_Lib() {}
-}; /* RGWGetObj_OS_Lib */
-
-class RGWDeleteObj_OS_Lib : public RGWDeleteObj {
-public:
-  RGWDeleteObj_OS_Lib() {}
-  ~RGWDeleteObj_OS_Lib() {}
-}; /* RGWDeleteObj_OS_Lib */
 
 #endif /* RGW_OS_LIB_H */