equal
deleted
inserted
replaced
30 import java.util.concurrent.CompletableFuture; |
30 import java.util.concurrent.CompletableFuture; |
31 import java.net.http.HttpRequest; |
31 import java.net.http.HttpRequest; |
32 import java.net.http.HttpResponse; |
32 import java.net.http.HttpResponse; |
33 import java.net.http.HttpResponse.BodyHandler; |
33 import java.net.http.HttpResponse.BodyHandler; |
34 import java.net.http.HttpResponse.PushPromiseHandler; |
34 import java.net.http.HttpResponse.PushPromiseHandler; |
|
35 import java.util.concurrent.Executor; |
|
36 |
35 import jdk.internal.net.http.common.MinimalFuture; |
37 import jdk.internal.net.http.common.MinimalFuture; |
36 import jdk.internal.net.http.common.Log; |
38 import jdk.internal.net.http.common.Log; |
37 |
39 |
38 /** |
40 /** |
39 * One PushGroup object is associated with the parent Stream of the pushed |
41 * One PushGroup object is associated with the parent Stream of the pushed |
96 @Override public CompletableFuture<HttpResponse<T>> cf() { return cf; } |
98 @Override public CompletableFuture<HttpResponse<T>> cf() { return cf; } |
97 |
99 |
98 @Override public boolean accepted() { return cf != null; } |
100 @Override public boolean accepted() { return cf != null; } |
99 } |
101 } |
100 |
102 |
101 Acceptor<T> acceptPushRequest(HttpRequest pushRequest) { |
103 Acceptor<T> acceptPushRequest(HttpRequest pushRequest, Executor e) { |
102 AcceptorImpl<T> acceptor = new AcceptorImpl<>(); |
104 AcceptorImpl<T> acceptor = new AcceptorImpl<>(); |
103 |
105 try { |
104 pushPromiseHandler.applyPushPromise(initiatingRequest, pushRequest, acceptor::accept); |
106 pushPromiseHandler.applyPushPromise(initiatingRequest, pushRequest, acceptor::accept); |
|
107 } catch (Throwable t) { |
|
108 if (acceptor.accepted()) { |
|
109 CompletableFuture<?> cf = acceptor.cf(); |
|
110 e.execute(() -> cf.completeExceptionally(t)); |
|
111 } |
|
112 throw t; |
|
113 } |
105 |
114 |
106 synchronized (this) { |
115 synchronized (this) { |
107 if (acceptor.accepted()) { |
116 if (acceptor.accepted()) { |
108 numberOfPushes++; |
117 numberOfPushes++; |
109 remainingPushes++; |
118 remainingPushes++; |