Add getting state and list of krate in krate-admin-cli 07/99707/1 accepted/tizen/common/20161125.095505 accepted/tizen/ivi/20161125.004232 accepted/tizen/mobile/20161125.003821 accepted/tizen/tv/20161125.003947 accepted/tizen/wearable/20161125.004110 submit/tizen/20161124.000829
authorSungbae Yoo <sungbae.yoo@samsung.com>
Thu, 24 Nov 2016 01:07:16 +0000 (10:07 +0900)
committerSungbae Yoo <sungbae.yoo@samsung.com>
Thu, 24 Nov 2016 01:07:16 +0000 (10:07 +0900)
Change-Id: Ib8a7a0c9c7d5207bddfc6703da66899ac570d7df
Signed-off-by: Sungbae Yoo <sungbae.yoo@samsung.com>
tools/cli/krate-admin-cli.cpp

index 5b14e9a..bfd4790 100644 (file)
@@ -76,12 +76,14 @@ static inline void usage(const std::string name)
                          << "   -q, --appinfo=krate show all applications in the krate" << std::endl
                          << "   -m, --krate-monitor monitor all krate events" << std::endl
                          << "   -n, --pkg-monitor  monitor all package events in the krate" << std::endl
-                         << "   -l, --list         show all krate instances" << std::endl
+                         << "   -i, --instance     show all running instances" << std::endl
+                         << "   -s, --state=krate  show the state of krate " << std::endl
+                         << "   -l, --list         show the list of krate" << std::endl
                          << "   -h, --help         show this" << std::endl
                          << std::endl;
 }
 
-int showKrateInstances()
+int showInstances()
 {
        try {
                runtime::DirectoryIterator iter("/var/run/krate"), end;
@@ -436,13 +438,65 @@ int monitorPkgEvent(const std::string& name)
        return 0;
 }
 
+int showState(const std::string& name)
+{
+       krate_manager_h krateMgr;
+       krate_state_e state;
+       int ret;
+
+       krate_manager_create(&krateMgr);
+       ret = krate_manager_get_krate_state(krateMgr, name.c_str(), &state);
+       krate_manager_destroy(krateMgr);
+
+       if (ret == KRATE_ERROR_NO_DATA) {
+               std::cout << "none" << std::endl;
+               return 0;
+       }
+
+       if (ret != KRATE_ERROR_NONE) {
+               std::cerr << "Failed to get state - " << name <<std::endl;
+               return -1;
+       }
+
+       switch (state) {
+       case KRATE_STATE_LOCKED:
+               std::cout << "locked" << std::endl;
+               break;
+       case KRATE_STATE_RUNNING:
+               std::cout << "running" << std::endl;
+               break;
+       default:
+               std::cout << "unknown state : " << state << std::endl;
+       }
+
+       return 0;
+}
+
+bool getListCallback(const char* name, void* user_data)
+{
+       std::cout << name << std::endl;
+       return true;
+}
+
+int showList()
+{
+       krate_manager_h krateMgr;
+
+       krate_manager_create(&krateMgr);
+       krate_manager_foreach_name(krateMgr, KRATE_STATE_ALL, getListCallback, NULL);
+       krate_manager_destroy(krateMgr);
+       return 0;
+}
+
 int main(int argc, char* argv[])
 {
        int opt = 0, index, ret = 0;
 
        struct option options[] = {
                {"attach", required_argument, 0, 'a'},
+               {"instance", no_argument, 0, 'l'},
                {"list", no_argument, 0, 'l'},
+               {"state", required_argument, 0, 'l'},
                {"pkginfo", required_argument, 0, 'p'},
                {"appinfo", required_argument, 0, 'q'},
                {"krate-monitor", no_argument, 0, 'm'},
@@ -456,7 +510,7 @@ int main(int argc, char* argv[])
                return EXIT_SUCCESS;
        }
 
-       while ((opt = getopt_long(argc, argv, "a:p:q:mn:lh", options, &index)) != -1) {
+       while ((opt = getopt_long(argc, argv, "a:p:q:mn:s:ilh", options, &index)) != -1) {
                switch (opt) {
                case 'a':
                        ret = attachToKrate(optarg, optind >= argc ? NULL : argv + optind);
@@ -473,8 +527,14 @@ int main(int argc, char* argv[])
                case 'n':
                        ret = monitorPkgEvent(optarg);
                        break;
+               case 's':
+                       ret = showState(optarg);
+                       break;
                case 'l':
-                       ret = showKrateInstances();
+                       ret = showList();
+                       break;
+               case 'i':
+                       ret = showInstances();
                        break;
                case 'h':
                        usage(argv[0]);