Index: services/service_manager/embedder/main_delegate.h |
diff --git a/services/service_manager/embedder/main_delegate.h b/services/service_manager/embedder/main_delegate.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f9222959ecef93345514e28847d171b8384f27e5 |
--- /dev/null |
+++ b/services/service_manager/embedder/main_delegate.h |
@@ -0,0 +1,50 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_MAIN_DELEGATE_H_ |
+#define SERVICES_SERVICE_MANAGER_EMBEDDER_MAIN_DELEGATE_H_ |
+ |
+#include "services/service_manager/embedder/service_manager_embedder_export.h" |
+ |
+namespace base { |
+namespace mac { |
+class ScopedNSAutoreleasePool; |
+} |
+} |
+ |
+namespace service_manager { |
+ |
+// An interface which must be implemented by Service Manager embedders to |
+// control basic process initialization and shutdown, as well as early branching |
+// to run specific types of subprocesses. |
+class MainDelegate { |
+ public: |
+ // Extra parameters passed to MainDelegate::Initialize. |
+ struct InitializeParams { |
+#if defined(OS_MACOSX) |
+ // The outermost autorelease pool, allocated by internal service manager |
+ // logic. This is guaranteed to live throughout the extent of Run(). |
+ base::mac::ScopedNSAutoreleasePool* autorelease_pool = nullptr; |
+#endif |
+ }; |
+ |
+ virtual ~MainDelegate() {} |
+ |
+ // Perform early process initialization. Returns -1 if successful, or the exit |
+ // code with which the process should be terminated due to initialization |
+ // failure. |
+ virtual int Initialize(const InitializeParams& params) = 0; |
+ |
+ // Runs the main process logic. Called exactly once, and only after a |
+ // successful call to Initialize(). Returns the exit code to use when |
+ // terminating the process after Run() (and then ShutDown()) completes. |
+ virtual int Run() = 0; |
+ |
+ // Called after Run() returns, before exiting the process. |
+ virtual void ShutDown() = 0; |
+}; |
+ |
+} // namespace service_manager |
+ |
+#endif // SERVICES_SERVICE_MANAGER_EMBEDDER_MAIN_DELEGATE_H_ |