src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Stream.java
branchhttp-client-branch
changeset 56020 ae3a51bc5b9f
parent 56019 2cb33775fc6f
child 56036 89a688549f5d
equal deleted inserted replaced
56019:2cb33775fc6f 56020:ae3a51bc5b9f
   434             pushStream.close();
   434             pushStream.close();
   435             return;
   435             return;
   436         }
   436         }
   437 
   437 
   438         PushGroup.Acceptor<T> acceptor = pushGroup.acceptPushRequest(pushRequest);
   438         PushGroup.Acceptor<T> acceptor = pushGroup.acceptPushRequest(pushRequest);
   439         CompletableFuture<HttpResponse<T>> pushResponseCF = acceptor.cf();
       
   440 
   439 
   441         if (!acceptor.accepted()) {
   440         if (!acceptor.accepted()) {
   442             // cancel / reject
   441             // cancel / reject
   443             IOException ex = new IOException("Stream " + streamid + " cancelled by users handler");
   442             IOException ex = new IOException("Stream " + streamid + " cancelled by users handler");
   444             if (Log.trace()) {
   443             if (Log.trace()) {
   447             }
   446             }
   448             pushStream.cancelImpl(ex);
   447             pushStream.cancelImpl(ex);
   449             return;
   448             return;
   450         }
   449         }
   451 
   450 
   452         CompletableFuture<HttpResponse<T>> cf = pushStream.responseCF();
   451         CompletableFuture<HttpResponse<T>> pushResponseCF = acceptor.cf();
   453         HttpResponse.BodyHandler<T> pushHandler = acceptor.bodyHandler();
   452         HttpResponse.BodyHandler<T> pushHandler = acceptor.bodyHandler();
       
   453         assert pushHandler != null;
   454 
   454 
   455         pushStream.requestSent();
   455         pushStream.requestSent();
   456         pushStream.setPushHandler(pushHandler);  // TODO: could wrap the handler to throw on acceptPushPromise ?
   456         pushStream.setPushHandler(pushHandler);  // TODO: could wrap the handler to throw on acceptPushPromise ?
   457         // setup housekeeping for when the push is received
   457         // setup housekeeping for when the push is received
   458         // TODO: deal with ignoring of CF anti-pattern
   458         // TODO: deal with ignoring of CF anti-pattern
       
   459         CompletableFuture<HttpResponse<T>> cf = pushStream.responseCF();
   459         cf.whenComplete((HttpResponse<T> resp, Throwable t) -> {
   460         cf.whenComplete((HttpResponse<T> resp, Throwable t) -> {
   460             t = Utils.getCompletionCause(t);
   461             t = Utils.getCompletionCause(t);
   461             if (Log.trace()) {
   462             if (Log.trace()) {
   462                 Log.logTrace("Push completed on stream {0} for {1}{2}",
   463                 Log.logTrace("Push completed on stream {0} for {1}{2}",
   463                              pushStream.streamid, resp,
   464                              pushStream.streamid, resp,