Setup sdk for background plugin
Summary: This diff sets up flipper for running plugins in background. This diff does the following - Adds a function named `runInBackground` to the interface `FlipperPlugin` to make the plugins opt in to be run in background, default is false - Changes the javascript side of the flipper to store the messages received by the plugins in background - Process the stored messages when the plugin in background becomes active - Currently I have just turned on network plugin to be in background mode. - Remove the buffering from the network plugin, as it will run in background - Write a batching layer to batch the messages and send to flipper. Note: I haven't tested the wilde app yet, but the sample app works. I will remove the "[WIP]" from the title once I have tested it in wilde Reviewed By: danielbuechele Differential Revision: D10301403 fbshipit-source-id: 034eebf659a545d6b480a4ac1b73b0aa4b2f9797
This commit is contained in:
committed by
Facebook Github Bot
parent
992ad68517
commit
5bbfa58909
@@ -79,6 +79,19 @@ void FlipperClient::removePlugin(std::shared_ptr<FlipperPlugin> plugin) {
|
||||
});
|
||||
}
|
||||
|
||||
void FlipperClient::startBackgroundPlugins() {
|
||||
std::cout << "Activating Background Plugins..." << std::endl;
|
||||
for (std::map<std::string, std::shared_ptr<FlipperPlugin>>::iterator it=plugins_.begin(); it!=plugins_.end(); ++it) {
|
||||
std::cout << it->first << std::endl;
|
||||
if (it->second.get()->runInBackground()) {
|
||||
auto& conn = connections_[it->first];
|
||||
conn = std::make_shared<FlipperConnectionImpl>(socket_.get(),it->first);
|
||||
it->second.get()->didConnect(conn);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<FlipperPlugin> FlipperClient::getPlugin(
|
||||
const std::string& identifier) {
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
@@ -113,6 +126,7 @@ void FlipperClient::onConnected() {
|
||||
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
connected_ = true;
|
||||
startBackgroundPlugins();
|
||||
}
|
||||
|
||||
void FlipperClient::onDisconnected() {
|
||||
@@ -161,7 +175,9 @@ void FlipperClient::onMessageReceived(const dynamic& message) {
|
||||
auto& conn = connections_[plugin->identifier()];
|
||||
conn = std::make_shared<FlipperConnectionImpl>(
|
||||
socket_.get(), plugin->identifier());
|
||||
plugin->didConnect(conn);
|
||||
if (!plugin.get()->runInBackground()) {
|
||||
plugin->didConnect(conn);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -173,7 +189,9 @@ void FlipperClient::onMessageReceived(const dynamic& message) {
|
||||
method.getString());
|
||||
}
|
||||
const auto plugin = plugins_.at(identifier);
|
||||
disconnect(plugin);
|
||||
if (!plugin.get()->runInBackground()) {
|
||||
disconnect(plugin);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user