Handle onReceive logic in background thread (#7809)

This commit is contained in:
Mikael Mengistu 2019-02-25 14:24:07 -08:00 committed by GitHub
parent 3b95ef0b95
commit 3d17ac3d4c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 1 deletions

View File

@ -29,6 +29,7 @@ class LongPollingTransport implements Transport {
private Single<String> accessTokenProvider;
private CompletableSubject receiveLoop = CompletableSubject.create();
private ExecutorService threadPool;
private ExecutorService onReceiveThread;
private AtomicBoolean stopCalled = new AtomicBoolean(false);
private final Logger logger = LoggerFactory.getLogger(LongPollingTransport.class);
@ -38,6 +39,7 @@ class LongPollingTransport implements Transport {
this.client = client;
this.pollingClient = client.cloneWithTimeOut(POLL_TIMEOUT);
this.accessTokenProvider = accessTokenProvider;
this.onReceiveThread = Executors.newSingleThreadExecutor();
}
//Package private active accessor for testing.
@ -98,7 +100,7 @@ class LongPollingTransport implements Transport {
} else {
if (response.getContent() != null) {
logger.debug("Message received.");
this.onReceive(response.getContent());
onReceiveThread.submit(() ->this.onReceive(response.getContent()));
} else {
logger.debug("Poll timed out, reissuing.");
}