Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: include/AdblockPlus/Platform.h

Issue 29535600: Issue 5617 - Provide with async executor bound to Platform in the future (Closed) Base URL: https://github.com/adblockplus/libadblockplus.git
Patch Set: Created Sept. 4, 2017, 12:03 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | shell/src/Main.cpp » ('j') | src/Platform.cpp » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/AdblockPlus/Platform.h
diff --git a/include/AdblockPlus/Platform.h b/include/AdblockPlus/Platform.h
index be1302b725aee0c0fe9654923328fabf575665b5..0b85dec8e8661e968fda41aa68c3dc0345f95e39 100644
--- a/include/AdblockPlus/Platform.h
+++ b/include/AdblockPlus/Platform.h
@@ -30,26 +30,6 @@
namespace AdblockPlus
{
- /**
- * A factory to construct DefaultTimer.
- */
- TimerPtr CreateDefaultTimer();
-
- /**
- * A factory to construct DefaultFileSystem.
- */
- FileSystemPtr CreateDefaultFileSystem(const Scheduler& scheduler, const std::string& basePath = std::string());
-
- /**
- * A factory to construct DefaultWebRequest.
- */
- WebRequestPtr CreateDefaultWebRequest(const Scheduler& scheduler, WebRequestSyncPtr syncImpl = nullptr);
-
- /**
- * A factory to construct LogSystem.
- */
- LogSystemPtr CreateDefaultLogSystem();
-
class IV8IsolateProvider;
class JsEngine;
@@ -91,7 +71,7 @@ namespace AdblockPlus
* implementation is chosen.
*/
explicit Platform(CreationParameters&& creationParameters = CreationParameters());
- ~Platform();
+ virtual ~Platform();
/**
* Ensures that JsEngine is constructed. If JsEngine is already present
@@ -157,6 +137,52 @@ namespace AdblockPlus
std::shared_ptr<JsEngine> jsEngine;
std::shared_future<FilterEnginePtr> filterEngine;
};
+
+ /**
+ * A helper class allowing to construct a default Platform and to obtain
+ * the Scheduler used by Platform before the latter is constructed.
+ */
+ class DefaultPlatformBuilder : public Platform::CreationParameters
+ {
+ public:
+ /**
+ * Constructs a default executor for asynchronous tasks. When Platform
+ * is being destroyed it starts to ignore new tasks and waits for finishing
+ * of already running tasks.
+ * @return Scheduler allowing to execute tasks asynchronously.
+ */
+ Scheduler GetDefaultAsyncExecutor();
+
+ /**
+ * Constructs default implementation of `ITimer`.
+ */
+ void CreateDefaultTimer();
+
+ /**
+ * Constructs default implementation of `IFileSystem`.
+ * @param basePath A working directory for file system operations.
+ */
+ void CreateDefaultFileSystem(const std::string& basePath = std::string());
+
+ /**
+ * Constructs default implementation of `IWebRequest`.
+ */
+ void CreateDefaultWebRequest(WebRequestSyncPtr webRequest = nullptr);
+
+ /**
+ * Constructs default implementation of `LogSystem`.
+ */
+ void CreateDefaultLogSystem();
+
+ /**
+ * Constructs Platform with default implementations of platform interfaces
+ * when a corresponding field is nullptr and with a default Scheduler.
+ */
+ std::unique_ptr<Platform> CreatePlatform();
+ private:
+ std::shared_ptr<Scheduler> asyncExecutor;
+ Scheduler defaultScheduler;
+ };
}
#endif // ADBLOCK_PLUS_PLATFORM_H
« no previous file with comments | « no previous file | shell/src/Main.cpp » ('j') | src/Platform.cpp » ('J')

Powered by Google App Engine
This is Rietveld