Skip to content

Commit

Permalink
Update DevServerHelper.java
Browse files Browse the repository at this point in the history
  • Loading branch information
esamelson authored and gabrieldonadel committed Jul 17, 2024
1 parent 749c48d commit 1dae69b
Showing 1 changed file with 35 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import com.facebook.common.logging.FLog;
import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.R;
import com.facebook.react.common.ReactConstants;
import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener;
import com.facebook.react.devsupport.interfaces.PackagerStatusCallback;
Expand Down Expand Up @@ -108,6 +110,7 @@ public String typeID() {
private final Context mApplicationContext;
private final String mPackageName;

private boolean mPackagerConnectionLock = false;
private @Nullable JSPackagerClient mPackagerClient;
private @Nullable IInspectorPackagerConnection mInspectorPackagerConnection;

Expand All @@ -131,13 +134,14 @@ public DevServerHelper(

public void openPackagerConnection(
final String clientId, final PackagerCommandListener commandListener) {
if (mPackagerClient != null) {
if (mPackagerClient != null || mPackagerConnectionLock) {
FLog.w(ReactConstants.TAG, "Packager connection already open, nooping.");
return;
}
new AsyncTask<Void, Void, Void>() {
mPackagerConnectionLock = true;
new AsyncTask<Void, Void, JSPackagerClient>() {
@Override
protected Void doInBackground(Void... backgroundParams) {
protected JSPackagerClient doInBackground(Void... backgroundParams) {
Map<String, RequestHandler> handlers = new HashMap<>();
handlers.put(
"reload",
Expand Down Expand Up @@ -182,27 +186,46 @@ public void onDisconnected() {
}
};

mPackagerClient =
JSPackagerClient packagerClient =
new JSPackagerClient(
clientId, mPackagerConnectionSettings, handlers, onPackagerConnectedCallback);
mPackagerClient.init();
packagerClient.init();

return null;
return packagerClient;
}

@Override
protected void onPostExecute(JSPackagerClient packagerClient) {
UiThreadUtil.assertOnUiThread();
mPackagerClient = packagerClient;
mPackagerConnectionLock = false;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}

public void closePackagerConnection() {
new AsyncTask<Void, Void, Void>() {
if (mPackagerConnectionLock) {
FLog.w(ReactConstants.TAG, "Packager connection lock acquired, cannot close current connection.");
return;
}
mPackagerConnectionLock = true;
new AsyncTask<JSPackagerClient, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
if (mPackagerClient != null) {
mPackagerClient.close();
mPackagerClient = null;
protected Void doInBackground(JSPackagerClient... params) {
if (params.length > 0 && params[0] != null) {
JSPackagerClient packagerClient = params[0];
packagerClient.close();
}
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

@Override
protected void onPostExecute(Void result) {
UiThreadUtil.assertOnUiThread();
mPackagerClient = null;
mPackagerConnectionLock = false;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mPackagerClient);
}

public void openInspectorConnection() {
Expand Down

0 comments on commit 1dae69b

Please sign in to comment.