| OLD | NEW |
| (Empty) |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_MAIN_DELEGATE_H_ | |
| 6 #define SERVICES_SERVICE_MANAGER_EMBEDDER_MAIN_DELEGATE_H_ | |
| 7 | |
| 8 #include "services/service_manager/embedder/service_manager_embedder_export.h" | |
| 9 | |
| 10 namespace base { | |
| 11 namespace mac { | |
| 12 class ScopedNSAutoreleasePool; | |
| 13 } | |
| 14 } | |
| 15 | |
| 16 namespace service_manager { | |
| 17 | |
| 18 // An interface which must be implemented by Service Manager embedders to | |
| 19 // control basic process initialization and shutdown, as well as early branching | |
| 20 // to run specific types of subprocesses. | |
| 21 class MainDelegate { | |
| 22 public: | |
| 23 // Extra parameters passed to MainDelegate::Initialize. | |
| 24 struct InitializeParams { | |
| 25 #if defined(OS_MACOSX) | |
| 26 // The outermost autorelease pool, allocated by internal service manager | |
| 27 // logic. This is guaranteed to live throughout the extent of Run(). | |
| 28 base::mac::ScopedNSAutoreleasePool* autorelease_pool = nullptr; | |
| 29 #endif | |
| 30 }; | |
| 31 | |
| 32 virtual ~MainDelegate() {} | |
| 33 | |
| 34 // Perform early process initialization. Returns -1 if successful, or the exit | |
| 35 // code with which the process should be terminated due to initialization | |
| 36 // failure. | |
| 37 virtual int Initialize(const InitializeParams& params) = 0; | |
| 38 | |
| 39 // Runs the main process logic. Called exactly once, and only after a | |
| 40 // successful call to Initialize(). Returns the exit code to use when | |
| 41 // terminating the process after Run() (and then ShutDown()) completes. | |
| 42 virtual int Run() = 0; | |
| 43 | |
| 44 // Called after Run() returns, before exiting the process. | |
| 45 virtual void ShutDown() = 0; | |
| 46 }; | |
| 47 | |
| 48 } // namespace service_manager | |
| 49 | |
| 50 #endif // SERVICES_SERVICE_MANAGER_EMBEDDER_MAIN_DELEGATE_H_ | |
| OLD | NEW |