add support for registering and calling sync methods in C++ modules

Differential Revision: D3574800

fbshipit-source-id: 4c238fd96c8f83e9424c8e2bf2c8ebb1d39d397a
This commit is contained in:
Marc Horowitz
2016-08-03 18:03:42 -07:00
committed by Facebook Github Bot 8
parent a7ca90e7c7
commit e5ccdc4c2d
3 changed files with 78 additions and 5 deletions
+6 -2
View File
@@ -65,18 +65,22 @@ folly::dynamic ModuleRegistry::getConfig(const std::string& name) {
folly::dynamic methodNames = folly::dynamic::array;
folly::dynamic asyncMethodIds = folly::dynamic::array;
folly::dynamic syncHookIds = folly::dynamic::array;
for (auto& descriptor : methods) {
methodNames.push_back(std::move(descriptor.name));
if (descriptor.type == "remoteAsync") {
asyncMethodIds.push_back(methodNames.size() - 1);
} else if (descriptor.type == "syncHook") {
syncHookIds.push_back(methodNames.size() - 1);
}
}
if (!methodNames.empty()) {
config.push_back(std::move(methodNames));
if (!asyncMethodIds.empty()) {
config.push_back(std::move(asyncMethodIds));
config.push_back(std::move(asyncMethodIds));
if (!syncHookIds.empty()) {
config.push_back(std::move(syncHookIds));
}
}
}