aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/android/volley/AsyncNetwork.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/android/volley/AsyncNetwork.java')
-rw-r--r--src/main/java/com/android/volley/AsyncNetwork.java140
1 files changed, 0 insertions, 140 deletions
diff --git a/src/main/java/com/android/volley/AsyncNetwork.java b/src/main/java/com/android/volley/AsyncNetwork.java
deleted file mode 100644
index ad19c03..0000000
--- a/src/main/java/com/android/volley/AsyncNetwork.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.volley;
-
-import androidx.annotation.RestrictTo;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.atomic.AtomicReference;
-
-/** An asynchronous implementation of {@link Network} to perform requests. */
-public abstract class AsyncNetwork implements Network {
- private ExecutorService mBlockingExecutor;
- private ExecutorService mNonBlockingExecutor;
- private ScheduledExecutorService mNonBlockingScheduledExecutor;
-
- protected AsyncNetwork() {}
-
- /** Interface for callback to be called after request is processed. */
- public interface OnRequestComplete {
- /** Method to be called after successful network request. */
- void onSuccess(NetworkResponse networkResponse);
-
- /** Method to be called after unsuccessful network request. */
- void onError(VolleyError volleyError);
- }
-
- /**
- * Non-blocking method to perform the specified request.
- *
- * @param request Request to process
- * @param callback to be called once NetworkResponse is received
- */
- public abstract void performRequest(Request<?> request, OnRequestComplete callback);
-
- /**
- * Blocking method to perform network request.
- *
- * @param request Request to process
- * @return response retrieved from the network
- * @throws VolleyError in the event of an error
- */
- @Override
- public NetworkResponse performRequest(Request<?> request) throws VolleyError {
- final CountDownLatch latch = new CountDownLatch(1);
- final AtomicReference<NetworkResponse> response = new AtomicReference<>();
- final AtomicReference<VolleyError> error = new AtomicReference<>();
- performRequest(
- request,
- new OnRequestComplete() {
- @Override
- public void onSuccess(NetworkResponse networkResponse) {
- response.set(networkResponse);
- latch.countDown();
- }
-
- @Override
- public void onError(VolleyError volleyError) {
- error.set(volleyError);
- latch.countDown();
- }
- });
- try {
- latch.await();
- } catch (InterruptedException e) {
- VolleyLog.e(e, "while waiting for CountDownLatch");
- Thread.currentThread().interrupt();
- throw new VolleyError(e);
- }
-
- if (response.get() != null) {
- return response.get();
- } else if (error.get() != null) {
- throw error.get();
- } else {
- throw new VolleyError("Neither response entry was set");
- }
- }
-
- /**
- * This method sets the non blocking executor to be used by the network for non-blocking tasks.
- *
- * <p>This method must be called before performing any requests.
- */
- @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
- public void setNonBlockingExecutor(ExecutorService executor) {
- mNonBlockingExecutor = executor;
- }
-
- /**
- * This method sets the blocking executor to be used by the network for potentially blocking
- * tasks.
- *
- * <p>This method must be called before performing any requests.
- */
- @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
- public void setBlockingExecutor(ExecutorService executor) {
- mBlockingExecutor = executor;
- }
-
- /**
- * This method sets the scheduled executor to be used by the network for non-blocking tasks to
- * be scheduled.
- *
- * <p>This method must be called before performing any requests.
- */
- @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
- public void setNonBlockingScheduledExecutor(ScheduledExecutorService executor) {
- mNonBlockingScheduledExecutor = executor;
- }
-
- /** Gets blocking executor to perform any potentially blocking tasks. */
- protected ExecutorService getBlockingExecutor() {
- return mBlockingExecutor;
- }
-
- /** Gets non-blocking executor to perform any non-blocking tasks. */
- protected ExecutorService getNonBlockingExecutor() {
- return mNonBlockingExecutor;
- }
-
- /** Gets scheduled executor to perform any non-blocking tasks that need to be scheduled. */
- protected ScheduledExecutorService getNonBlockingScheduledExecutor() {
- return mNonBlockingScheduledExecutor;
- }
-}