1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.http.impl.nio.client;
28
29 import java.util.concurrent.ExecutionException;
30 import java.util.concurrent.Future;
31 import java.util.concurrent.TimeUnit;
32 import java.util.concurrent.TimeoutException;
33
34 import org.apache.http.concurrent.Cancellable;
35
36 final class FutureWrapper<T> implements Future<T> {
37
38 private final Future<T> future;
39 private final Cancellable cancellable;
40
41 public FutureWrapper(final Future<T> future, final Cancellable cancellable) {
42 super();
43 this.future = future;
44 this.cancellable = cancellable;
45 }
46
47 @Override
48 public boolean cancel(final boolean mayInterruptIfRunning) {
49 try {
50 if (cancellable != null) {
51 cancellable.cancel();
52 }
53 } finally {
54 return future.cancel(mayInterruptIfRunning);
55 }
56 }
57
58 @Override
59 public boolean isCancelled() {
60 return future.isCancelled();
61 }
62
63 @Override
64 public boolean isDone() {
65 return future.isDone();
66 }
67
68 @Override
69 public T get() throws InterruptedException, ExecutionException {
70 return future.get();
71 }
72
73 @Override
74 public T get(final long timeout, final TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
75 return future.get(timeout, unit);
76 }
77
78 @Override
79 public String toString() {
80 return future.toString();
81 }
82
83 }