Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2013 Jeanfrancois Arcand
   *
   * 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 org.atmosphere.wasync.impl;
 
 
The default org.atmosphere.wasync.Future used by the library, based on the java.util.concurrent.CountDownLatch

Author(s):
Jeanfrancois Arcand
 
 public class DefaultFuture implements Future {
 
     private final DefaultSocket socket;
     private CountDownLatch latch = new CountDownLatch(1);
     private final AtomicBoolean done = new AtomicBoolean(false);
     private long time = -1;
     private TimeUnit tu;
     private TimeoutException te = null;
 
     public DefaultFuture(DefaultSocket socket) {
         this. = socket;
     }
 
     public long time(){
         return ;
     }
 
     public TimeUnit timeUnit(){
         return ;
     }
 
         this. = te;
         return this;
     }

    
 
     @Override
     public boolean cancel(boolean mayInterruptIfRunning) {
         .countDown();
         return true;
     }


    
 
     @Override
     public boolean isCancelled() {
         return .getCount() == 0;
     }


    
 
     @Override
     public boolean isDone() {
         return .get();
     }
 
     // TODO: Not public
     
 
     @Override
     public Future done(){
         .set(true);
         .countDown();
         return this;
     }
 
     protected void reset(){
         .set(false);
          = new CountDownLatch(1);
    }

    
    @Override
    public Socket get() throws InterruptedExceptionExecutionException {
        .await();
        return ;
    }

    
    @Override
    public Socket get(long timeoutTimeUnit unitthrows InterruptedExceptionExecutionExceptionTimeoutException {
         = timeout;
         = unit;
        if (!.await(timeoutunit) ||  != null) {
            throw  == null ? new TimeoutException() : ;
        }
        return ;
    }
    protected Socket socket() {
        return ;
    }

    
    @Override
    public Future fire(Object datathrows IOException {
        reset();
        .internalSocket().write(.request(), data);
        return this;
    }
New to GrepCode? Check out our FAQ X