@Override public void fetchStart(@NonNull DownloadTask task, int blockIndex, long contentLength) { final DownloadListener[] listeners = getThreadSafeArray(task, realListenerMap); if (listeners == null) return; for (final DownloadListener realOne : listeners) { if (realOne == null) continue; realOne.fetchStart(task, blockIndex, contentLength); } }
@Override public void fetchStart(@NonNull DownloadTask task, int blockIndex, long contentLength) { for (DownloadListener listener : listenerList) { listener.fetchStart(task, blockIndex, contentLength); } }
@Override public void run() { task.getListener().fetchStart(task, blockIndex, contentLength); } });
@Override public void fetchStart(@NonNull final DownloadTask task, final int blockIndex, final long contentLength) { Util.d(TAG, "fetchStart: " + task.getId()); if (task.isAutoCallbackToUIThread()) { uiHandler.post(new Runnable() { @Override public void run() { task.getListener().fetchStart(task, blockIndex, contentLength); } }); } else { task.getListener().fetchStart(task, blockIndex, contentLength); } }
@Test public void fetchStart() throws Exception { listenerBunch.fetchStart(task, 1, 1L); verify(listener1).fetchStart(eq(task), eq(1), eq(1L)); verify(listener2).fetchStart(eq(task), eq(1), eq(1L)); }
void start() throws IOException { final CallbackDispatcher dispatcher = OkDownload.with().callbackDispatcher(); // connect chain final RetryInterceptor retryInterceptor = new RetryInterceptor(); final BreakpointInterceptor breakpointInterceptor = new BreakpointInterceptor(); connectInterceptorList.add(retryInterceptor); connectInterceptorList.add(breakpointInterceptor); connectInterceptorList.add(new HeaderInterceptor()); connectInterceptorList.add(new CallServerInterceptor()); connectIndex = 0; final DownloadConnection.Connected connected = processConnect(); if (cache.isInterrupt()) { throw InterruptException.SIGNAL; } dispatcher.dispatch().fetchStart(task, blockIndex, getResponseContentLength()); // fetch chain final FetchDataInterceptor fetchDataInterceptor = new FetchDataInterceptor(blockIndex, connected.getInputStream(), getOutputStream(), task); fetchInterceptorList.add(retryInterceptor); fetchInterceptorList.add(breakpointInterceptor); fetchInterceptorList.add(fetchDataInterceptor); fetchIndex = 0; final long totalFetchedBytes = processFetch(); dispatcher.dispatch().fetchEnd(task, blockIndex, totalFetchedBytes); }
verify(listener).connectEnd(eq(task), eq(2), eq(200), eq(headerFields)); dispatcher.dispatch().fetchStart(task, 1, 2L); verify(listener).fetchStart(eq(task), eq(1), eq(2L));
verify(listener).connectEnd(eq(task), eq(2), eq(200), eq(headerFields)); dispatcher.dispatch().fetchStart(task, 1, 2L); verify(listener).fetchStart(eq(task), eq(1), eq(2L));
verify(listener2).connectEnd(eq(task), eq(1), eq(200), eq(headerFields)); listener.fetchStart(task, 1, 2L); listener.fetchStart(noAttachTask, 1, 2L); verify(listener1).fetchStart(eq(task), eq(1), eq(2L)); verify(listener2).fetchStart(eq(task), eq(1), eq(2L));