From 68a3c0f919a80a8d2a346462fe5f3b92b6f91aa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 18 Jun 2015 09:27:37 +0200 Subject: [PATCH] launch_daemon: Moved settings parsing into its own file. --- src/servers/launch/Jamfile | 1 + src/servers/launch/LaunchDaemon.cpp | 40 ++--------------- src/servers/launch/SettingsParser.cpp | 63 +++++++++++++++++++++++++++ src/servers/launch/SettingsParser.h | 20 +++++++++ 4 files changed, 87 insertions(+), 37 deletions(-) create mode 100644 src/servers/launch/SettingsParser.cpp create mode 100644 src/servers/launch/SettingsParser.h diff --git a/src/servers/launch/Jamfile b/src/servers/launch/Jamfile index 637e649f05..ba29a02dd4 100644 --- a/src/servers/launch/Jamfile +++ b/src/servers/launch/Jamfile @@ -9,6 +9,7 @@ Server launch_daemon : LaunchDaemon.cpp Job.cpp + SettingsParser.cpp Target.cpp Worker.cpp diff --git a/src/servers/launch/LaunchDaemon.cpp b/src/servers/launch/LaunchDaemon.cpp index 7af14fd44d..8a0303c4f4 100644 --- a/src/servers/launch/LaunchDaemon.cpp +++ b/src/servers/launch/LaunchDaemon.cpp @@ -23,7 +23,6 @@ #include #include -#include #include #include #include @@ -35,6 +34,7 @@ #include "InitSharedMemoryDirectoryJob.h" #include "InitTemporaryDirectoryJob.h" #include "Job.h" +#include "SettingsParser.h" #include "Target.h" #include "Worker.h" @@ -47,38 +47,6 @@ using BSupportKit::BPrivate::JobQueue; static const char* kLaunchDirectory = "launch"; -const static settings_template kPortTemplate[] = { - {B_STRING_TYPE, "name", NULL, true}, - {B_INT32_TYPE, "capacity", NULL}, -}; - -const static settings_template kJobTemplate[] = { - {B_STRING_TYPE, "name", NULL, true}, - {B_BOOL_TYPE, "disabled", NULL}, - {B_STRING_TYPE, "launch", NULL}, - {B_STRING_TYPE, "requires", NULL}, - {B_BOOL_TYPE, "legacy", NULL}, - {B_MESSAGE_TYPE, "port", kPortTemplate}, - {B_BOOL_TYPE, "no_safemode", NULL}, - {0, NULL, NULL} -}; - -const static settings_template kTargetTemplate[] = { - {B_STRING_TYPE, "name", NULL, true}, - {B_BOOL_TYPE, "reset", NULL}, - {B_MESSAGE_TYPE, "job", kJobTemplate}, - {B_MESSAGE_TYPE, "service", kJobTemplate}, - {0, NULL, NULL} -}; - -const static settings_template kSettingsTemplate[] = { - {B_MESSAGE_TYPE, "target", kTargetTemplate}, - {B_MESSAGE_TYPE, "job", kJobTemplate}, - {B_MESSAGE_TYPE, "service", kJobTemplate}, - {0, NULL, NULL} -}; - - class Session { public: Session(uid_t user, const BMessenger& target); @@ -462,16 +430,14 @@ LaunchDaemon::_ReadDirectory(const char* context, BEntry& directoryEntry) status_t LaunchDaemon::_ReadFile(const char* context, BEntry& entry) { - DriverSettingsMessageAdapter adapter; - BPath path; status_t status = path.SetTo(&entry); if (status != B_OK) return status; + SettingsParser parser; BMessage message; - status = adapter.ConvertFromDriverSettings(path.Path(), kSettingsTemplate, - message); + status = parser.ParseFile(path.Path(), message); if (status == B_OK) { _AddJobs(NULL, message); diff --git a/src/servers/launch/SettingsParser.cpp b/src/servers/launch/SettingsParser.cpp new file mode 100644 index 0000000000..d9e61a3ce3 --- /dev/null +++ b/src/servers/launch/SettingsParser.cpp @@ -0,0 +1,63 @@ +/* + * Copyright 2015, Axel Dörfler, axeld@pinc-software.de. + * Distributed under the terms of the MIT License. + */ + + +#include "SettingsParser.h" + +#include + + +const static settings_template kPortTemplate[] = { + {B_STRING_TYPE, "name", NULL, true}, + {B_INT32_TYPE, "capacity", NULL}, +}; + +const static settings_template kJobTemplate[] = { + {B_STRING_TYPE, "name", NULL, true}, + {B_BOOL_TYPE, "disabled", NULL}, + {B_STRING_TYPE, "launch", NULL}, + {B_STRING_TYPE, "requires", NULL}, + {B_BOOL_TYPE, "legacy", NULL}, + {B_MESSAGE_TYPE, "port", kPortTemplate}, + {B_BOOL_TYPE, "no_safemode", NULL}, + {0, NULL, NULL} +}; + +const static settings_template kConditionTemplate[] = { + {B_STRING_TYPE, NULL, NULL, true}, + {B_MESSAGE_TYPE, "not", kConditionTemplate}, + {B_MESSAGE_TYPE, "and", kConditionTemplate}, + {B_MESSAGE_TYPE, "or", kConditionTemplate}, + {0, NULL, NULL} +}; + +const static settings_template kTargetTemplate[] = { + {B_STRING_TYPE, "name", NULL, true}, + {B_BOOL_TYPE, "reset", NULL}, + {B_MESSAGE_TYPE, "if", kConditionTemplate}, + {B_MESSAGE_TYPE, "job", kJobTemplate}, + {B_MESSAGE_TYPE, "service", kJobTemplate}, + {0, NULL, NULL} +}; + +const static settings_template kSettingsTemplate[] = { + {B_MESSAGE_TYPE, "target", kTargetTemplate}, + {B_MESSAGE_TYPE, "job", kJobTemplate}, + {B_MESSAGE_TYPE, "service", kJobTemplate}, + {0, NULL, NULL} +}; + + +SettingsParser::SettingsParser() +{ +} + + +status_t +SettingsParser::ParseFile(const char* path, BMessage& settings) +{ + DriverSettingsMessageAdapter adapter; + return adapter.ConvertFromDriverSettings(path, kSettingsTemplate, settings); +} diff --git a/src/servers/launch/SettingsParser.h b/src/servers/launch/SettingsParser.h new file mode 100644 index 0000000000..673e8e7278 --- /dev/null +++ b/src/servers/launch/SettingsParser.h @@ -0,0 +1,20 @@ +/* + * Copyright 2015, Axel Dörfler, axeld@pinc-software.de. + * Distributed under the terms of the MIT License. + */ +#ifndef SETTINGS_PARSER_H +#define SETTINGS_PARSER_H + + +#include + + +class SettingsParser { +public: + SettingsParser(); + + status_t ParseFile(const char* path, BMessage& settings); +}; + + +#endif // SETTINGS_PARSER_H