]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
class: add cls_read api function
authorYehuda Sadeh <yehuda@hq.newdream.net>
Mon, 1 Jun 2009 22:12:39 +0000 (15:12 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Mon, 1 Jun 2009 22:12:39 +0000 (15:12 -0700)
src/objclass/class_api.cc
src/objclass/objclass.h

index 272ffc55c2b8ec56d83aa74c9124f075de173810..2285fd3d09fc232511714f5c9c5610dec2de28fa 100644 (file)
@@ -101,3 +101,25 @@ int cls_rdcall(cls_method_handle_t hctx, const char *cls, const char *method,
   return r;
 }
 
+int cls_read(cls_method_handle_t hctx, int ofs, int len,
+                                 char **outdata, int *outdatalen)
+{
+  ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx;
+  bufferlist odata;
+  bufferlist idata;
+  vector<ceph_osd_op> nops(1);
+  ceph_osd_op& op = nops[0];
+  int r;
+
+  op.offset = ofs;
+  op.length = len;
+  op.op = CEPH_OSD_OP_READ;
+  bufferlist::iterator iter = idata.begin();
+  r = (*pctx)->pg->do_osd_ops(*pctx, nops, iter, odata);
+
+  *outdata = odata.c_str();
+  *outdatalen = odata.length();
+
+  return r;
+}
+
index 087eeba7b65527b4f1005b3658ca4db404bf4c08..938cf17b87cae961c9a6578871cbd6efcb549917 100644 (file)
@@ -28,6 +28,8 @@ extern int cls_log(const char *format, ...);
 extern void *cls_alloc(size_t size);
 extern void cls_free(void *p);
 
+extern int cls_read(cls_method_handle_t hctx, int ofs, int len,
+                                 char **outdata, int *outdatalen);
 extern int cls_rdcall(cls_method_handle_t hctx, const char *cls, const char *method,
                                  char *indata, int datalen,
                                  char **outdata, int *outdatalen);