|  | // Copyright 2013 The Flutter 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 FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_THREAD_HOST_H_ | 
|  | #define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_THREAD_HOST_H_ | 
|  |  | 
|  | #include <map> | 
|  | #include <memory> | 
|  | #include <set> | 
|  |  | 
|  | #include "flutter/common/task_runners.h" | 
|  | #include "flutter/fml/macros.h" | 
|  | #include "flutter/shell/common/thread_host.h" | 
|  | #include "flutter/shell/platform/embedder/embedder.h" | 
|  | #include "flutter/shell/platform/embedder/embedder_task_runner.h" | 
|  |  | 
|  | namespace flutter { | 
|  |  | 
|  | class EmbedderThreadHost { | 
|  | public: | 
|  | static std::unique_ptr<EmbedderThreadHost> | 
|  | CreateEmbedderOrEngineManagedThreadHost( | 
|  | const FlutterCustomTaskRunners* custom_task_runners); | 
|  |  | 
|  | EmbedderThreadHost( | 
|  | ThreadHost host, | 
|  | flutter::TaskRunners runners, | 
|  | std::set<fml::RefPtr<EmbedderTaskRunner>> embedder_task_runners); | 
|  |  | 
|  | ~EmbedderThreadHost(); | 
|  |  | 
|  | bool IsValid() const; | 
|  |  | 
|  | const flutter::TaskRunners& GetTaskRunners() const; | 
|  |  | 
|  | bool PostTask(int64_t runner, uint64_t task) const; | 
|  |  | 
|  | private: | 
|  | ThreadHost host_; | 
|  | flutter::TaskRunners runners_; | 
|  | std::map<int64_t, fml::RefPtr<EmbedderTaskRunner>> runners_map_; | 
|  |  | 
|  | static std::unique_ptr<EmbedderThreadHost> CreateEmbedderManagedThreadHost( | 
|  | const FlutterCustomTaskRunners* custom_task_runners); | 
|  |  | 
|  | static std::unique_ptr<EmbedderThreadHost> CreateEngineManagedThreadHost(); | 
|  |  | 
|  | FML_DISALLOW_COPY_AND_ASSIGN(EmbedderThreadHost); | 
|  | }; | 
|  |  | 
|  | }  // namespace flutter | 
|  |  | 
|  | #endif  // FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_THREAD_HOST_H_ |