diff options
author | David Zafman <david.zafman@inktank.com> | 2013-02-21 15:20:08 -0800 |
---|---|---|
committer | David Zafman <david.zafman@inktank.com> | 2013-02-21 21:50:02 -0800 |
commit | af339aee46469c6bb621343e1579b7f0f3720ae3 (patch) | |
tree | a290ed4a5df582d4e2dab39674badb19a2c9719e | |
parent | cfe923920ceee3476e3ec8e7b74b3a515f8e3fb2 (diff) | |
download | ceph-af339aee46469c6bb621343e1579b7f0f3720ae3.tar.gz |
Add ObjectReadOperation and IoCtx functions
Signed-off-by: David Zafman <david.zafman@inktank.com>
-rw-r--r-- | src/include/rados/librados.hpp | 10 | ||||
-rw-r--r-- | src/librados/librados.cc | 22 |
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); |