3 #include "private/cli/commandmap.hpp"
4 #include "private/cli/common.hpp"
5 #include <sdl/syncstorage.hpp>
6 #include <sdl/asyncstorage.hpp>
8 using namespace shareddatalayer;
9 using namespace shareddatalayer::cli;
13 std::shared_ptr<shareddatalayer::SyncStorage> createSyncStorage(const SyncStorage::Namespace& ns,
18 auto sdl(shareddatalayer::SyncStorage::create());
19 sdl->waitReady(ns, std::chrono::minutes(1));
22 catch (const shareddatalayer::Exception& error)
24 out << "SyncStorage create failed: " << error.what() << std::endl;
30 void listkeys(shareddatalayer::SyncStorage& sdl,
31 const SyncStorage::Namespace& ns,
32 const std::string& pattern,
37 auto keys(sdl.listKeys(ns, pattern));
39 out << key << std::endl;
41 catch (const shareddatalayer::Exception& error)
43 out << "listKeys(" << ns << ", " << pattern << ") failed: "
44 << error.what() << std::endl;
48 int listKeysCommand(std::ostream& out, const boost::program_options::variables_map& map)
50 auto ns(map["ns"].as<std::string>());
51 auto pattern(map["pattern"].as<std::string>());
53 auto sdl(createSyncStorage(ns, out));
56 sdl->setOperationTimeout(std::chrono::seconds(5));
58 listkeys(std::ref(*sdl), ns, pattern, out);
64 const char *longHelpListkeysCmd =
65 "Use listKeys SDL API to list keys matching search pattern under the namespace.\n\n"
66 "Example: sdltool listkeys --ns 'sdltool' --pattern 'foo*'";
68 AUTO_REGISTER_COMMAND(std::bind(listKeysCommand, std::placeholders::_1, std::placeholders::_3),
72 CommandMap::Category::UTIL,
74 ("ns,n", boost::program_options::value<std::string>()->default_value("sdltoolns"), "namespace to use")
75 ("pattern,p", boost::program_options::value<std::string>()->default_value("*"), "key search pattern")