diff options
author | Casey Dahlin <sadmac@google.com> | 2016-02-26 16:03:49 -0800 |
---|---|---|
committer | Casey Dahlin <sadmac@google.com> | 2016-03-01 11:20:06 -0800 |
commit | 3e121f22d4c1353d7b9a5c89c98a52c43d077380 (patch) | |
tree | a36f5c308b2f7018cb1f21d595f213e63539e747 /webservd | |
parent | 2135964d7048ab91ec9cc51952e4022b4a1cb0aa (diff) | |
download | webservd-3e121f22d4c1353d7b9a5c89c98a52c43d077380.tar.gz |
Implement binder response object
With this, we can now call the actual request handler.
Change-Id: I836ba7f5c90273186709664bb5fb9fa7aff2972b
Test: Build continues to pass in binder mode
Bug: 27204884
Diffstat (limited to 'webservd')
-rw-r--r-- | webservd/Android.mk | 24 | ||||
-rw-r--r-- | webservd/main.cc | 36 |
2 files changed, 47 insertions, 13 deletions
diff --git a/webservd/Android.mk b/webservd/Android.mk index 7d072bd..2224f0d 100644 --- a/webservd/Android.mk +++ b/webservd/Android.mk @@ -26,8 +26,12 @@ LOCAL_MODULE := webservd LOCAL_SHARED_LIBRARIES := \ libcrypto \ libfirewalld-client \ - libwebserv \ - libwebserv-proxies-internal \ + libwebserv + +ifeq ($(system_webservd_use_dbus),true) +LOCAL_SHARED_LIBRARIES += \ + libwebserv-proxies-internal +endif ifdef BRILLO @@ -39,18 +43,12 @@ endif LOCAL_SRC_FILES := \ config.cc \ - dbus_bindings/dbus-service-config.json \ - dbus_bindings/org.chromium.WebServer.ProtocolHandler.dbus-xml \ - dbus_bindings/org.chromium.WebServer.Server.dbus-xml \ - dbus_protocol_handler.cc \ - dbus_request_handler.cc \ error_codes.cc \ firewalld_firewall.cc \ log_manager.cc \ main.cc \ protocol_handler.cc \ request.cc \ - server.cc \ temp_file_manager.cc \ utils.cc \ @@ -64,6 +62,16 @@ LOCAL_SRC_FILES += \ binder_server.cc endif +ifeq ($(system_webservd_use_dbus),true) +LOCAL_SRC_FILES += \ + dbus_bindings/dbus-service-config.json \ + dbus_bindings/org.chromium.WebServer.ProtocolHandler.dbus-xml \ + dbus_bindings/org.chromium.WebServer.Server.dbus-xml \ + dbus_protocol_handler.cc \ + dbus_request_handler.cc \ + server.cc +endif + ifdef BRILLO LOCAL_SRC_FILES += keystore_encryptor.cc else diff --git a/webservd/main.cc b/webservd/main.cc index c32b138..c6bf364 100644 --- a/webservd/main.cc +++ b/webservd/main.cc @@ -22,10 +22,13 @@ #ifdef WEBSERV_USE_BINDER #include <binderwrapper/binder_wrapper.h> #include <brillo/binder_watcher.h> +#include <brillo/daemons/daemon.h> #endif // WEBSERV_USE_BINDER +#ifdef WEBSERV_USE_DBUS #include <brillo/dbus/async_event_sequencer.h> #include <brillo/dbus/exported_object_manager.h> #include <brillo/daemons/dbus_daemon.h> +#endif // WEBSERV_USE_DBUS #include <brillo/flag_helper.h> #if !defined(__ANDROID__) #include <brillo/minijail/minijail.h> @@ -37,7 +40,9 @@ #endif // WEBSERV_USE_BINDER #include "webservd/config.h" #include "webservd/log_manager.h" +#ifdef WEBSERV_USE_DBUS #include "webservd/server.h" +#endif #include "webservd/utils.h" #ifdef WEBSERV_USE_BINDER @@ -54,23 +59,39 @@ using FirewallImpl = webservd::PermissionBrokerFirewall; using brillo::dbus_utils::AsyncEventSequencer; +#ifdef WEBSERV_USE_DBUS +using BaseDaemon = brillo::DBusServiceDaemon; +#else +using BaseDaemon = brillo::Daemon; +#endif // WEBSERV_USE_DBUS + namespace { const char kDefaultConfigFilePath[] = "/etc/webservd/config"; + +#ifdef WEBSERV_USE_DBUS const char kServiceName[] = "org.chromium.WebServer"; const char kRootServicePath[] = "/org/chromium/WebServer"; +#endif // WEBSERV_USE_DBUS + #if !defined(__ANDROID__) const char kWebServerUserName[] = "webservd"; const char kWebServerGroupName[] = "webservd"; #endif // !defined(__ANDROID__) -class Daemon final : public brillo::DBusServiceDaemon { +class Daemon final : public BaseDaemon { public: +#ifdef WEBSERV_USE_DBUS explicit Daemon(webservd::Config config) : DBusServiceDaemon{kServiceName, kRootServicePath}, config_{std::move(config)} {} +#else + explicit Daemon(webservd::Config config) + : config_{std::move(config)} {} +#endif // WEBSERV_USE_DBUS protected: +#ifdef WEBSERV_USE_DBUS void RegisterDBusObjectsAsync(AsyncEventSequencer* sequencer) override { webservd::LogManager::Init(base::FilePath{config_.log_directory}); server_.reset(new webservd::Server{ @@ -83,11 +104,12 @@ class Daemon final : public brillo::DBusServiceDaemon { void OnShutdown(int* /* return_code */) override { server_.reset(); } +#endif // WEBSERV_USE_DBUS private: #ifdef WEBSERV_USE_BINDER int OnInit() override { - int result = brillo::DBusServiceDaemon::OnInit(); + int result = brillo::Daemon::OnInit(); if (result != EX_OK) { return result; } @@ -97,9 +119,11 @@ class Daemon final : public brillo::DBusServiceDaemon { return EX_OSERR; } + server_.reset(new webservd::BinderServer(config_)); + if (!android::BinderWrapper::Get()->RegisterService( webservd::kWebserverBinderServiceName, - new webservd::BinderServer(config_))) { + server_.get())) { return EX_OSERR; } @@ -109,10 +133,12 @@ class Daemon final : public brillo::DBusServiceDaemon { #endif // WEBSERV_USE_BINDER webservd::Config config_; +#ifdef WEBSERV_USE_DBUS std::unique_ptr<webservd::Server> server_; -#ifdef WEBSERV_USE_BINDER +#else + std::unique_ptr<webservd::BinderServer> server_; brillo::BinderWatcher binder_watcher_; -#endif // WEBSERV_USE_BINDER +#endif // WEBSERV_USE_DBUS DISALLOW_COPY_AND_ASSIGN(Daemon); }; |