Update version of tools
[src/app-framework-main.git] / src / afm-user-daemon.c
index 7c7824d..11a46de 100644 (file)
 #include "verbose.h"
 #include "utils-jbus.h"
 #include "utils-json.h"
+#include "utils-systemd.h"
 #include "afm.h"
+#include "afm-launch-mode.h"
 #ifdef LEGACY_MODE_WITHOUT_SYSTEMD
 # include "afm-db.h"
+#include "afm-run.h"
 #else
 # include "afm-udb.h"
+#include "afm-urun.h"
 #endif
-#include "afm-launch-mode.h"
-#include "afm-run.h"
 
 /*
  * name of the application
  */
 static const char appname[] = "afm-user-daemon";
 
+/*
+ * string for printing version
+ */
+static const char versionstr[] =
+       "\n"
+       "  %s  version="AFM_VERSION"\n"
+       "\n"
+       "  Copyright (C) 2015, 2016, 2017 \"IoT.bzh\"\n"
+       "  AFB comes with ABSOLUTELY NO WARRANTY.\n"
+       "  Licence Apache 2\n"
+       "\n";
+
 /*
  * string for printing usage
  */
@@ -62,19 +76,20 @@ static const char usagestr[] =
        "   -s addr      address of system D-Bus to use\n"
        "   -q           quiet\n"
        "   -v           verbose\n"
+       "   -V           version\n"
        "\n";
 
 /*
  * Option definition for getopt_long
  */
 #ifdef LEGACY_MODE_WITHOUT_SYSTEMD
-static const char options_s[] = "hdqvr:a:m:";
+static const char options_s[] = "hdqvVr:a:m:";
 static struct option options_l[] = {
        { "root",        required_argument, NULL, 'r' },
        { "application", required_argument, NULL, 'a' },
        { "mode",        required_argument, NULL, 'm' },
 #else
-static const char options_s[] = "hdqv";
+static const char options_s[] = "hdqvV";
 static struct option options_l[] = {
 #endif
        { "user-dbus",   required_argument, NULL, 'u' },
@@ -83,6 +98,7 @@ static struct option options_l[] = {
        { "quiet",       no_argument,       NULL, 'q' },
        { "verbose",     no_argument,       NULL, 'v' },
        { "help",        no_argument,       NULL, 'h' },
+       { "version",     no_argument,       NULL, 'V' },
        { NULL, 0, NULL, 0 }
 };
 
@@ -254,7 +270,11 @@ static void on_start(struct sd_bus_message *smsg, struct json_object *obj, void
 
        /* launch the application */
        uri = NULL;
+#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
        runid = afm_run_start(appli, mode, &uri);
+#else
+       runid = afm_urun_start(appli);
+#endif
        if (runid <= 0) {
                jbus_reply_error_s(smsg, error_cant_start);
                free(uri);
@@ -275,7 +295,11 @@ static void on_start(struct sd_bus_message *smsg, struct json_object *obj, void
                                        && j_add_string(resp, "uri", uri))
                jbus_reply_j(smsg, resp);
        else {
+#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
                afm_run_terminate(runid);
+#else
+               afm_urun_terminate(runid);
+#endif
                jbus_reply_error_s(smsg, error_system);
        }
        json_object_put(resp);
@@ -310,14 +334,22 @@ static void on_once(struct sd_bus_message *smsg, struct json_object *obj, void *
        }
 
        /* launch the application */
+#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
        runid = afm_run_once(appli);
+#else
+       runid = afm_urun_once(appli);
+#endif
        if (runid <= 0) {
                jbus_reply_error_s(smsg, error_cant_start);
                return;
        }
 
        /* returns the state */
+#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
        resp = afm_run_state(runid);
+#else
+       resp = afm_urun_state(afudb, runid);
+#endif
        reply(smsg, resp, error_not_found);
        json_object_put(resp);
 }
@@ -329,7 +361,11 @@ static void on_pause(struct sd_bus_message *smsg, struct json_object *obj, void
 {
        int runid, status;
        if (onrunid(smsg, obj, "pause", &runid)) {
+#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
                status = afm_run_pause(runid);
+#else
+               status = afm_urun_pause(runid);
+#endif
                reply_status(smsg, status, error_not_found);
        }
 }
@@ -341,7 +377,11 @@ static void on_resume(struct sd_bus_message *smsg, struct json_object *obj, void
 {
        int runid, status;
        if (onrunid(smsg, obj, "resume", &runid)) {
+#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
                status = afm_run_resume(runid);
+#else
+               status = afm_urun_resume(runid);
+#endif
                reply_status(smsg, status, error_not_found);
        }
 }
@@ -371,7 +411,11 @@ static void on_terminate(struct sd_bus_message *smsg, struct json_object *obj, v
 {
        int runid, status;
        if (onrunid(smsg, obj, "terminate", &runid)) {
+#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
                status = afm_run_terminate(runid);
+#else
+               status = afm_urun_terminate(runid);
+#endif
                reply_status(smsg, status, error_not_found);
        }
 }
@@ -383,7 +427,11 @@ static void on_runners(struct sd_bus_message *smsg, struct json_object *obj, voi
 {
        struct json_object *resp;
        INFO("method runners called");
+#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
        resp = afm_run_list();
+#else
+       resp = afm_urun_list(afudb);
+#endif
        jbus_reply_j(smsg, resp);
        json_object_put(resp);
 }
@@ -396,7 +444,11 @@ static void on_state(struct sd_bus_message *smsg, struct json_object *obj, void
        int runid;
        struct json_object *resp;
        if (onrunid(smsg, obj, "state", &runid)) {
+#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
                resp = afm_run_state(runid);
+#else
+               resp = afm_urun_state(afudb, runid);
+#endif
                reply(smsg, resp, error_not_found);
                json_object_put(resp);
        }
@@ -450,10 +502,15 @@ static void on_uninstall(struct sd_bus_message *smsg, const char *msg, void *unu
  */
 static void on_signal_changed(struct json_object *obj, void *unused)
 {
-       /* update the database */
 #ifdef LEGACY_MODE_WITHOUT_SYSTEMD
+       /* update the database */
        afm_db_update_applications(afdb);
 #else
+       /* enforce daemon reload */
+       systemd_daemon_reload(1);
+       systemd_unit_restart_name(1, "sockets.target");
+
+       /* update the database */
        afm_udb_update(afudb);
 #endif
        /* re-propagate now */
@@ -536,6 +593,9 @@ int main(int ac, char **av)
                case 'h':
                        printf(usagestr, appname);
                        return 0;
+               case 'V':
+                       printf(versionstr, appname);
+                       return 0;
                case 'q':
                        if (verbosity)
                                verbosity--;
@@ -578,6 +638,7 @@ int main(int ac, char **av)
        /* init random generator */
        srandom((unsigned int)time(NULL));
 
+#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
        /* init runners */
        if (afm_run_init()) {
                ERROR("afm_run_init failed");
@@ -585,7 +646,6 @@ int main(int ac, char **av)
        }
 
        /* init framework */
-#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
        afdb = afm_db_create();
        if (!afdb) {
                ERROR("afm_db_create failed");
@@ -621,6 +681,7 @@ int main(int ac, char **av)
                return 1;
        }
 #else
+       /* init database */
        afudb = afm_udb_create(0, 1, "afm-appli-");
        if (!afudb) {
                ERROR("afm_udb_create failed");
@@ -717,17 +778,3 @@ int main(int ac, char **av)
        return 0;
 }
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-