<< " -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;
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'},
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);
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]);