//TODO: each iterator op needs one submit, this is not efficient,
// needs further optimization.
-seastar::future<int> AlienStore::AlienOmapIterator::seek_to_first()
+seastar::future<> AlienStore::AlienOmapIterator::seek_to_first()
{
return store->tp->submit([=] {
return iter->seek_to_first();
+ }).then([] (int r) {
+ assert(r == 0);
+ return seastar::now();
});
}
-seastar::future<int> AlienStore::AlienOmapIterator::upper_bound(
+seastar::future<> AlienStore::AlienOmapIterator::upper_bound(
const std::string& after)
{
return store->tp->submit([this, after] {
return iter->upper_bound(after);
+ }).then([] (int r) {
+ assert(r == 0);
+ return seastar::now();
});
}
-seastar::future<int> AlienStore::AlienOmapIterator::lower_bound(
+seastar::future<> AlienStore::AlienOmapIterator::lower_bound(
const std::string& to)
{
return store->tp->submit([this, to] {
return iter->lower_bound(to);
+ }).then([] (int r) {
+ assert(r == 0);
+ return seastar::now();
});
}
-seastar::future<int> AlienStore::AlienOmapIterator::next()
+seastar::future<> AlienStore::AlienOmapIterator::next()
{
return store->tp->submit([this] {
return iter->next();
+ }).then([] (int r) {
+ assert(r == 0);
+ return seastar::now();
});
}
public:
AlienOmapIterator(ObjectMap::ObjectMapIterator& it,
AlienStore* store) : iter(it), store(store) {}
- seastar::future<int> seek_to_first();
- seastar::future<int> upper_bound(const std::string& after);
- seastar::future<int> lower_bound(const std::string& to);
+ seastar::future<> seek_to_first();
+ seastar::future<> upper_bound(const std::string& after);
+ seastar::future<> lower_bound(const std::string& to);
bool valid() const;
- seastar::future<int> next();
+ seastar::future<> next();
std::string key();
seastar::future<std::string> tail_key();
ceph::buffer::list value();
return seastar::make_ready_future<struct stat>(std::move(st));
}
-seastar::future<int> CyanStore::CyanOmapIterator::seek_to_first()
+seastar::future<> CyanStore::CyanOmapIterator::seek_to_first()
{
iter = obj->omap.begin();
- return seastar::make_ready_future<int>(0);
+ return seastar::make_ready_future<>();
}
-seastar::future<int> CyanStore::CyanOmapIterator::upper_bound(const std::string& after)
+seastar::future<> CyanStore::CyanOmapIterator::upper_bound(const std::string& after)
{
iter = obj->omap.upper_bound(after);
- return seastar::make_ready_future<int>(0);
+ return seastar::make_ready_future<>();
}
-seastar::future<int> CyanStore::CyanOmapIterator::lower_bound(const std::string &to)
+seastar::future<> CyanStore::CyanOmapIterator::lower_bound(const std::string &to)
{
iter = obj->omap.lower_bound(to);
- return seastar::make_ready_future<int>(0);
+ return seastar::make_ready_future<>();
}
bool CyanStore::CyanOmapIterator::valid() const
return iter != obj->omap.end();
}
-seastar::future<int> CyanStore::CyanOmapIterator::next()
+seastar::future<> CyanStore::CyanOmapIterator::next()
{
++iter;
- return seastar::make_ready_future<int>(0);
+ return seastar::make_ready_future<>();
}
}
CyanOmapIterator(ObjectRef obj) : obj(obj) {
iter = obj->omap.begin();
}
- virtual seastar::future<int> seek_to_first();
- virtual seastar::future<int> upper_bound(const std::string &after);
- virtual seastar::future<int> lower_bound(const std::string &to);
+ virtual seastar::future<> seek_to_first();
+ virtual seastar::future<> upper_bound(const std::string &after);
+ virtual seastar::future<> lower_bound(const std::string &to);
virtual bool valid() const;
- virtual seastar::future<int> next();
+ virtual seastar::future<> next();
virtual std::string key() {
return iter->first;
}
- virtual seastar::future<std::string> tail_key() {
+ virtual seastar::future<std::string> tail_key(){
return seastar::make_ready_future<std::string>((++obj->omap.end())->first);
}
virtual ceph::buffer::list value() {
public:
class OmapIterator {
public:
- virtual seastar::future<int> seek_to_first() {
- return seastar::make_ready_future<int>(0);
+ virtual seastar::future<> seek_to_first() {
+ return seastar::make_ready_future<>();
}
- virtual seastar::future<int> upper_bound(const std::string &after) {
- return seastar::make_ready_future<int>(0);
+ virtual seastar::future<> upper_bound(const std::string &after) {
+ return seastar::make_ready_future<>();
}
- virtual seastar::future<int> lower_bound(const std::string &to) {
- return seastar::make_ready_future<int>(0);
+ virtual seastar::future<> lower_bound(const std::string &to) {
+ return seastar::make_ready_future<>();
}
virtual bool valid() const {
return false;
}
- virtual seastar::future<int> next() {
- return seastar::make_ready_future<int>(0);
+ virtual seastar::future<> next() {
+ return seastar::make_ready_future<>();
}
virtual std::string key() {
return {};
return seastar::make_ready_future<>();
}
return omap_iter->lower_bound(progress.omap_recovered_to).then(
- [omap_iter, &new_progress, &max_len, push_op](int ret) {
+ [omap_iter, &new_progress, &max_len, push_op] {
return seastar::repeat([omap_iter, &new_progress, &max_len, push_op] {
if (!omap_iter->valid()) {
new_progress.omap_complete = true;
} else {
max_len = 0;
}
- return omap_iter->next().then([](int r) {
+ return omap_iter->next().then([] {
return seastar::stop_iteration::no;
});
});
seastar::stop_iteration::yes);
}
process_entry(iter);
- return iter->next().then([](int) {
+ return iter->next().then([] {
return seastar::stop_iteration::no;
});
});