Files
flipper/docs/send-data.md
Daniel Büchele fbbf8cf16b Initial commit 🎉
fbshipit-source-id: b6fc29740c6875d2e78953b8a7123890a67930f2
Co-authored-by: Sebastian McKenzie <sebmck@fb.com>
Co-authored-by: John Knox <jknox@fb.com>
Co-authored-by: Emil Sjölander <emilsj@fb.com>
Co-authored-by: Pritesh Nandgaonkar <prit91@fb.com>
2018-06-01 11:03:58 +01:00

1.6 KiB

id, title, sidebar_label
id title sidebar_label
send-data Sending Data to Plugins Send Data

It is often useful to get an instance of a sonar plugin to send data to it. Sonar makes this simple with built in support.

Plugins should be treated as singleton instances as there can only be one SonarClient and each SonarClient can only have one instance of a certain plugin. The Sonar API makes this simple by offering a way to get the current client and query it for plugins.

Plugins are identified by the string that their identifier method returns, in this example, "MySonarPlugin":

Android

final SonarClient client = AndroidSonarClient.getInstance(context);
// Client may be null if AndroidSonarClient.createInstance() was never called
// which is the case in production builds.
if (client != null) {
  final MySonarPlugin plugin = client.getPlugin("MySonarPlugin");
  plugin.sendData(myData);
}

iOS

SonarClient *client = [SonarClient sharedClient];
MySonarPlugin *myPlugin = [client pluginWithIdentifier:@"MySonarPlugin"];
[myPlugin sendData:myData];

C++

auto &client = SonarClient::instance();

// "MySonarPlugin is the return value of MySonarPlugin::identifier()
auto aPlugin = client.getPlugin("MySonarPlugin");

// aPlugin is a std::shared_ptr<SonarPlugin>. Downcast to expected type.
auto myPlugin = std::static_pointer_cast<MySonarPlugin>(aPlugin);

// Alternatively, use the templated version
myPlugin = client.getPlugin<MySonarPlugin>("MySonarPlugin");

myPlugin->sendData(myData);

Here, sendData is an example of a method that might be implemented by the sonar plugin.