Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *  Licensed to the Apache Software Foundation (ASF) under one or more
   *  contributor license agreements.  See the NOTICE file distributed with
   *  this work for additional information regarding copyright ownership.
   *  The ASF licenses this file to You 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 org.apache.tomcat.websocket;
 
 
Converts a Future to a SendHandler.
 
 class FutureToSendHandler implements Future<Void>, SendHandler {
 
     private final CountDownLatch latch = new CountDownLatch(1);
     private final WsSession wsSession;
     private volatile SendResult result = null;
 
     public FutureToSendHandler(WsSession wsSession) {
         this. = wsSession;
     }
 
 
     // --------------------------------------------------------- SendHandler
 
     @Override
     public void onResult(SendResult result) {
 
         this. = result;
         .countDown();
     }
 
 
     // -------------------------------------------------------------- Future
 
     @Override
     public boolean cancel(boolean mayInterruptIfRunning) {
         // Cancelling the task is not supported
         return false;
     }
 
     @Override
     public boolean isCancelled() {
         // Cancelling the task is not supported
         return false;
     }
 
     @Override
     public boolean isDone() {
         return .getCount() == 0;
     }
 
     @Override
     public Void get() throws InterruptedException,
             ExecutionException {
         try {
             .registerFuture(this);
             .await();
         } finally {
             .unregisterFuture(this);
         }
         if (.getException() != null) {
             throw new ExecutionException(.getException());
         }
         return null;
     }
 
     @Override
     public Void get(long timeoutTimeUnit unit)
             throws InterruptedExceptionExecutionException,
             TimeoutException {
         boolean retval = false;
         try {
             .registerFuture(this);
             retval = .await(timeoutunit);
         } finally {
             .unregisterFuture(this);
 
         }
         if (retval == false) {
             throw new TimeoutException();
        }
        if (.getException() != null) {
            throw new ExecutionException(.getException());
        }
        return null;
    }
New to GrepCode? Check out our FAQ X