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