/* * Copyright 2015 Cloudius Systems */ #include "storage_service.hh" #include "api/api-doc/storage_service.json.hh" #include #include namespace api { void set_storage_service(http_context& ctx, routes& r) { httpd::storage_service_json::local_hostid.set(r, [](const_req req) { return ""; }); httpd::storage_service_json::get_tokens.set(r, [](std::unique_ptr req) { return service::sorted_tokens().then([](const std::vector& tokens) { return make_ready_future(container_to_vec(tokens)); }); }); httpd::storage_service_json::get_node_tokens.set(r, [](std::unique_ptr req) { gms::inet_address addr(req->param["endpoint"]); return service::get_tokens(addr).then([](const std::vector& tokens) { return make_ready_future(container_to_vec(tokens)); }); }); httpd::storage_service_json::get_commitlog.set(r, [&ctx](const_req req) { return ctx.db.local().commitlog()->active_config().commit_log_location; }); httpd::storage_service_json::get_token_endpoint.set(r, [](std::unique_ptr req) { return service::get_token_to_endpoint().then([] (const std::map& tokens){ std::vector res(tokens.size()); for (auto i : tokens) { res.push_back(storage_service_json::mapper()); res.back().key = boost::lexical_cast(i.first); res.back().value = boost::lexical_cast(i.second); } return make_ready_future(res); }); }); } }