X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ftest%2Fbench%2Frados_backend.cc;fp=src%2Fceph%2Fsrc%2Ftest%2Fbench%2Frados_backend.cc;h=89d808a38706f82b6d6dd046b8203597b9176be8;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/test/bench/rados_backend.cc b/src/ceph/src/test/bench/rados_backend.cc new file mode 100644 index 0000000..89d808a --- /dev/null +++ b/src/ceph/src/test/bench/rados_backend.cc @@ -0,0 +1,62 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- + +#include "rados_backend.h" +#include + +typedef boost::tuple arg_type; + +void on_applied(void *completion, void *_arg) { + arg_type *arg = static_cast(_arg); + arg->get<1>()->complete(0); +} + +void on_complete(void *completion, void *_arg) { + arg_type *arg = static_cast(_arg); + arg->get<0>()->complete(0); + arg->get<2>()->release(); + delete arg; +} + +void RadosBackend::write( + const string &oid, + uint64_t offset, + const bufferlist &bl, + Context *on_write_applied, + Context *on_commit) +{ + librados::AioCompletion *completion = librados::Rados::aio_create_completion(); + + + void *arg = static_cast(new arg_type(on_commit, on_write_applied, + completion)); + + completion->set_safe_callback( + arg, + on_complete); + + completion->set_complete_callback( + arg, + on_applied); + + ioctx->aio_write(oid, completion, bl, bl.length(), offset); +} + +void RadosBackend::read( + const string &oid, + uint64_t offset, + uint64_t length, + bufferlist *bl, + Context *on_read_complete) +{ + librados::AioCompletion *completion = librados::Rados::aio_create_completion(); + + + void *arg = static_cast(new arg_type(on_read_complete, 0, + completion)); + + completion->set_complete_callback( + arg, + on_complete); + + ioctx->aio_read(oid, completion, bl, length, offset); +}