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:
Pritesh Nandgaonkar
2018-10-11 15:19:19 -07:00
committed by Facebook Github Bot
parent 992ad68517
commit 5bbfa58909
11 changed files with 104 additions and 5 deletions

View File

@@ -38,6 +38,13 @@ public:
void didDisconnect() override { [_objCPlugin didDisconnect]; }
bool runInBackground() override {
if ([_objCPlugin respondsToSelector:@selector(runInBackground)]) {
return [_objCPlugin runInBackground];
}
return false;
}
ObjCPlugin getObjCPlugin() { return _objCPlugin; }
private:

View File

@@ -124,6 +124,7 @@ using WrapperPlugin = facebook::flipper::FlipperCppWrapperPlugin;
_cppClient->start();
}
- (void)stop
{
_cppClient->stop();

View File

@@ -36,4 +36,10 @@ longer valid to use.
*/
- (void)didDisconnect;
/**
Returns true if the plugin is meant to be run in background too, otherwise it returns false.
*/
@optional
- (BOOL)runInBackground;
@end