#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
*/
" -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' },
{ "quiet", no_argument, NULL, 'q' },
{ "verbose", no_argument, NULL, 'v' },
{ "help", no_argument, NULL, 'h' },
+ { "version", no_argument, NULL, 'V' },
{ NULL, 0, NULL, 0 }
};
/* 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);
&& 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);
}
/* 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);
}
{
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);
}
}
{
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);
}
}
{
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);
}
}
{
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);
}
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);
}
*/
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 */
case 'h':
printf(usagestr, appname);
return 0;
+ case 'V':
+ printf(versionstr, appname);
+ return 0;
case 'q':
if (verbosity)
verbosity--;
/* init random generator */
srandom((unsigned int)time(NULL));
+#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
/* init runners */
if (afm_run_init()) {
ERROR("afm_run_init failed");
}
/* init framework */
-#ifdef LEGACY_MODE_WITHOUT_SYSTEMD
afdb = afm_db_create();
if (!afdb) {
ERROR("afm_db_create failed");
return 1;
}
#else
+ /* init database */
afudb = afm_udb_create(0, 1, "afm-appli-");
if (!afudb) {
ERROR("afm_udb_create failed");
return 0;
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-