summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Zafman <david.zafman@inktank.com>2013-02-21 15:20:08 -0800
committerDavid Zafman <david.zafman@inktank.com>2013-02-21 21:50:02 -0800
commitaf339aee46469c6bb621343e1579b7f0f3720ae3 (patch)
treea290ed4a5df582d4e2dab39674badb19a2c9719e
parentcfe923920ceee3476e3ec8e7b74b3a515f8e3fb2 (diff)
downloadceph-af339aee46469c6bb621343e1579b7f0f3720ae3.tar.gz
Add ObjectReadOperation and IoCtx functions
Signed-off-by: David Zafman <david.zafman@inktank.com>
-rw-r--r--src/include/rados/librados.hpp10
-rw-r--r--src/librados/librados.cc22
2 files changed, 31 insertions, 1 deletions
diff --git a/src/include/rados/librados.hpp b/src/include/rados/librados.hpp
index fa60237a353..fb585d09811 100644
--- a/src/include/rados/librados.hpp
+++ b/src/include/rados/librados.hpp
@@ -326,8 +326,15 @@ namespace librados
std::map<std::string, bufferlist> *map,
int *prval);
- };
+ /**
+ * list_watchers: Get list watchers of object
+ *
+ * @param out_watchers [out] place returned values in out_watchers on completion
+ * @param prval [out] place error code in prval upon completion
+ */
+ void list_watchers(std::list<obj_watch_t> *out_watchers, int *prval);
+ };
/* IoCtx : This is a context in which we can perform I/O.
* It includes a Pool,
@@ -498,6 +505,7 @@ namespace librados
librados::WatchCtx *ctx);
int unwatch(const std::string& o, uint64_t handle);
int notify(const std::string& o, uint64_t ver, bufferlist& bl);
+ int list_watchers(const std::string& o, std::list<obj_watch_t> *out_watchers);
void set_notify_timeout(uint32_t timeout);
// assert version for next sync operations
diff --git a/src/librados/librados.cc b/src/librados/librados.cc
index 5a81a267f2b..0b7eaf97850 100644
--- a/src/librados/librados.cc
+++ b/src/librados/librados.cc
@@ -211,6 +211,14 @@ void librados::ObjectOperation::omap_cmp(
o->omap_cmp(assertions, prval);
}
+void librados::ObjectReadOperation::list_watchers(
+ list<obj_watch_t> *out_watchers,
+ int *prval)
+{
+ ::ObjectOperation *o = (::ObjectOperation *)impl;
+ o->list_watchers(out_watchers, prval);
+}
+
int librados::IoCtx::omap_get_vals(const std::string& oid,
const std::string& start_after,
const std::string& filter_prefix,
@@ -1018,6 +1026,20 @@ int librados::IoCtx::notify(const string& oid, uint64_t ver, bufferlist& bl)
return io_ctx_impl->notify(obj, ver, bl);
}
+int librados::IoCtx::list_watchers(const std::string& oid,
+ std::list<obj_watch_t> *out_watchers)
+{
+ ObjectReadOperation op;
+ int r;
+ op.list_watchers(out_watchers, &r);
+ bufferlist bl;
+ int ret = operate(oid, &op, &bl);
+ if (ret < 0)
+ return ret;
+
+ return r;
+}
+
void librados::IoCtx::set_notify_timeout(uint32_t timeout)
{
io_ctx_impl->set_notify_timeout(timeout);