Index: services/service_manager/background/background_service_manager.h |
diff --git a/services/service_manager/background/background_service_manager.h b/services/service_manager/background/background_service_manager.h |
index 1926d04275671ba7608b382f645223677ff4dd04..eb024f82c3786840c9cbe999c1d314ccf0cd0190 100644 |
--- a/services/service_manager/background/background_service_manager.h |
+++ b/services/service_manager/background/background_service_manager.h |
@@ -6,58 +6,57 @@ |
#define SERVICES_SERVICE_MANAGER_BACKGROUND_BACKGROUND_SERVICE_MANAGER_H_ |
#include <memory> |
-#include <vector> |
#include "base/macros.h" |
-#include "mojo/public/cpp/bindings/interface_request.h" |
-#include "services/catalog/store.h" |
+#include "base/threading/thread.h" |
+#include "services/service_manager/public/cpp/identity.h" |
+#include "services/service_manager/public/interfaces/connector.mojom.h" |
#include "services/service_manager/public/interfaces/service.mojom.h" |
#include "services/service_manager/runner/host/service_process_launcher.h" |
+namespace base { |
+class Value; |
+class WaitableEvent; |
+} |
+ |
namespace service_manager { |
+class Context; |
class ServiceManager; |
-// BackgroundServiceManager starts up a Service Manager on a background thread, |
-// and |
-// destroys the thread in the destructor. Once created use CreateApplication() |
-// to obtain an InterfaceRequest for the Application. The InterfaceRequest can |
-// then be bound to an ApplicationImpl. |
+// BackgroundServiceManager runs a Service Manager on a dedicated background |
+// thread. |
class BackgroundServiceManager { |
public: |
- struct InitParams { |
- InitParams(); |
- ~InitParams(); |
- |
- ServiceProcessLauncher::Delegate* |
- service_process_launcher_delegate = nullptr; |
- |
- // If true the edk is initialized. |
- bool init_edk = true; |
- }; |
- |
- BackgroundServiceManager(); |
+ BackgroundServiceManager( |
+ service_manager::ServiceProcessLauncher::Delegate* launcher_delegate, |
+ std::unique_ptr<base::Value> catalog_contents); |
~BackgroundServiceManager(); |
- // Starts the background service manager. |command_line_switches| are |
- // additional |
- // switches applied to any processes spawned by this call. |
- void Init(std::unique_ptr<InitParams> init_params); |
- |
- // Obtains an InterfaceRequest for the specified name. |
- mojom::ServiceRequest CreateServiceRequest(const std::string& name); |
- |
- // Use to do processing on the thread running the Service Manager. The |
- // callback is supplied a pointer to the Service Manager. The callback does |
- // *not* own the Service Manager. |
- using ServiceManagerThreadCallback = base::Callback<void(ServiceManager*)>; |
- void ExecuteOnServiceManagerThread( |
- const ServiceManagerThreadCallback& callback); |
+ // Creates a service instance for |identity|. This is intended for use by the |
+ // Service Manager's embedder to register instances directly, without |
+ // requiring a Connector. |
+ // |
+ // |pid_receiver_request| may be null, in which case the service manager |
+ // assumes the new service is running in this process. |
+ void RegisterService(const Identity& identity, |
+ mojom::ServicePtr service, |
+ mojom::PIDReceiverRequest pid_receiver_request); |
private: |
- class MojoThread; |
- |
- std::unique_ptr<MojoThread> thread_; |
+ void InitializeOnBackgroundThread( |
+ service_manager::ServiceProcessLauncher::Delegate* launcher_delegate, |
+ std::unique_ptr<base::Value> catalog_contents); |
+ void ShutDownOnBackgroundThread(base::WaitableEvent* done_event); |
+ void RegisterServiceOnBackgroundThread( |
+ const Identity& identity, |
+ mojom::ServicePtrInfo service_info, |
+ mojom::PIDReceiverRequest pid_receiver_request); |
+ |
+ base::Thread background_thread_; |
+ |
+ // The ServiceManager context. Must only be used on the background thread. |
+ std::unique_ptr<Context> context_; |
DISALLOW_COPY_AND_ASSIGN(BackgroundServiceManager); |
}; |