Skip to content

Commit 19de7fc

Browse files
dcaspifacebook-github-bot
authored andcommitted
Moving some RAM logic to Instance.
Reviewed By: michalgr Differential Revision: D6208977 fbshipit-source-id: 28339d07c58f1acc816be02f2707ef75529fa069
1 parent 59a5dbc commit 19de7fc

File tree

4 files changed

+34
-25
lines changed

4 files changed

+34
-25
lines changed

ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp

+2-23
Original file line numberDiff line numberDiff line change
@@ -207,32 +207,11 @@ void CatalystInstanceImpl::jniLoadScriptFromAssets(
207207
}
208208
}
209209

210-
bool CatalystInstanceImpl::isIndexedRAMBundle(const char *sourcePath) {
211-
std::ifstream bundle_stream(sourcePath, std::ios_base::in);
212-
if (!bundle_stream) {
213-
return false;
214-
}
215-
BundleHeader header;
216-
bundle_stream.read(reinterpret_cast<char *>(&header), sizeof(header));
217-
bundle_stream.close();
218-
return parseTypeFromHeader(header) == ScriptTag::RAMBundle;
219-
}
220-
221210
void CatalystInstanceImpl::jniLoadScriptFromFile(const std::string& fileName,
222211
const std::string& sourceURL,
223212
bool loadSynchronously) {
224-
auto zFileName = fileName.c_str();
225-
if (isIndexedRAMBundle(zFileName)) {
226-
auto bundle = folly::make_unique<JSIndexedRAMBundle>(zFileName);
227-
auto startupScript = bundle->getStartupCode();
228-
auto registry = jsBundlesDirectory_.empty()
229-
? folly::make_unique<RAMBundleRegistry>(std::move(bundle))
230-
: folly::make_unique<JSIndexedRAMBundleRegistry>(std::move(bundle), jsBundlesDirectory_);
231-
instance_->loadRAMBundle(
232-
std::move(registry),
233-
std::move(startupScript),
234-
sourceURL,
235-
loadSynchronously);
213+
if (Instance::isIndexedRAMBundle(fileName.c_str())) {
214+
instance_->loadRAMBundleFromFile(fileName, sourceURL, loadSynchronously);
236215
} else {
237216
std::unique_ptr<const JSBigFileString> script;
238217
RecoverableError::runRethrowingAsRecoverable<std::system_error>(

ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h

-2
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ class CatalystInstanceImpl : public jni::HybridClass<CatalystInstanceImpl> {
4040

4141
CatalystInstanceImpl();
4242

43-
static bool isIndexedRAMBundle(const char *sourcePath);
44-
4543
void initializeBridge(
4644
jni::alias_ref<ReactCallback::javaobject> callback,
4745
// This executor is actually a factory holder.

ReactCommon/cxxreact/Instance.cpp

+28
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "Instance.h"
44

55
#include "JSBigString.h"
6+
#include "JSBundleType.h"
67
#include "JSExecutor.h"
78
#include "MessageQueueThread.h"
89
#include "MethodCall.h"
@@ -11,13 +12,15 @@
1112
#include "RecoverableError.h"
1213
#include "SystraceSection.h"
1314

15+
#include <cxxreact/JSIndexedRAMBundle.h>
1416
#include <folly/Memory.h>
1517
#include <folly/MoveWrapper.h>
1618
#include <folly/json.h>
1719

1820
#include <glog/logging.h>
1921

2022
#include <condition_variable>
23+
#include <fstream>
2124
#include <mutex>
2225
#include <string>
2326

@@ -91,6 +94,31 @@ void Instance::loadScriptFromString(std::unique_ptr<const JSBigString> string,
9194
}
9295
}
9396

97+
bool Instance::isIndexedRAMBundle(const char *sourcePath) {
98+
std::ifstream bundle_stream(sourcePath, std::ios_base::in);
99+
BundleHeader header;
100+
101+
if (!bundle_stream ||
102+
!bundle_stream.read(reinterpret_cast<char *>(&header), sizeof(header))) {
103+
return false;
104+
}
105+
106+
return parseTypeFromHeader(header) == ScriptTag::RAMBundle;
107+
}
108+
109+
void Instance::loadRAMBundleFromFile(const std::string& sourcePath,
110+
const std::string& sourceURL,
111+
bool loadSynchronously) {
112+
auto bundle = folly::make_unique<JSIndexedRAMBundle>(sourcePath.c_str());
113+
auto startupScript = bundle->getStartupCode();
114+
auto registry = folly::make_unique<RAMBundleRegistry>(std::move(bundle));
115+
loadRAMBundle(
116+
std::move(registry),
117+
std::move(startupScript),
118+
sourceURL,
119+
loadSynchronously);
120+
}
121+
94122
void Instance::loadRAMBundle(std::unique_ptr<RAMBundleRegistry> bundleRegistry,
95123
std::unique_ptr<const JSBigString> startupScript,
96124
std::string startupScriptSourceURL,

ReactCommon/cxxreact/Instance.h

+4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ class RN_EXPORT Instance {
4444

4545
void loadScriptFromString(std::unique_ptr<const JSBigString> string,
4646
std::string sourceURL, bool loadSynchronously);
47+
static bool isIndexedRAMBundle(const char *sourcePath);
48+
void loadRAMBundleFromFile(const std::string& sourcePath,
49+
const std::string& sourceURL,
50+
bool loadSynchronously);
4751
void loadRAMBundle(std::unique_ptr<RAMBundleRegistry> bundleRegistry,
4852
std::unique_ptr<const JSBigString> startupScript,
4953
std::string startupScriptSourceURL, bool loadSynchronously);

0 commit comments

Comments
 (0)