Refine search
/** * {@inheritDoc} */ @Override public final GrizzlyFuture<ReadResult<Buffer, L>> read( final Connection<L> connection, final Buffer buffer) { final FutureImpl<ReadResult<Buffer, L>> future = Futures.createSafeFuture(); read(connection, buffer, Futures.toCompletionHandler(future), null); return future; }
protected void waitNIOFuture(final FutureImpl<Connection> future, final CompletionHandler<Connection> completionHandler) { try { future.get(connectionTimeoutMillis, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { Futures.notifyFailure(future, completionHandler, e); } catch (TimeoutException e) { Futures.notifyFailure(future, completionHandler, new IOException("Channel registration on Selector timeout!")); } catch (Exception ignored) { } }
/** * Creates {@link CompletionHandler}, which may serve as a bridge * for passed {@link FutureImpl}. All the notifications coming to the returned * {@link CompletionHandler} will be <tt>adapted</tt> using * {@link GenericAdapter} and passed to the {@link FutureImpl}. * * @return {@link CompletionHandler}, which may serve as a bridge * for passed {@link FutureImpl}. All the notifications coming to the returned * {@link CompletionHandler} will be <tt>adapted</tt> using * {@link GenericAdapter} and passed to the {@link FutureImpl}. */ public static <A, B> CompletionHandler<B> toAdaptedCompletionHandler( final FutureImpl<A> future, final GenericAdapter<B, A> adapter) { return toAdaptedCompletionHandler(future, null, adapter); }
} else { final FutureImpl<FilterChainContext> future = Futures.createUnsafeFuture(); context.operationCompletionHandler = Futures.toCompletionHandler(future); } while (!future.isDone()); final FilterChainContext retContext = future.get(); ReadResult rr = ReadResult.create(connection); rr.setMessage(retContext.getMessage()); rr.setSrcAddressHolder(retContext.getAddressHolder()); future.recycle(false);
public void register() throws IOException { final FutureImpl<RegisterChannelResult> future = Futures.createSafeFuture(); transport.getNIOChannelDistributor().registerServiceChannelAsync( channel, SelectionKey.OP_READ, this, Futures.toCompletionHandler(future, ((UDPNIOTransport) transport).registerChannelCompletionHandler )); try { future.get(10, TimeUnit.SECONDS); } catch (Exception e) { throw new IOException("Error registering server channel key", e); } notifyReady(); }
@Override public GrizzlyFuture<CloseReason> closeFuture() { if (closeFuture == null) { synchronized (this) { if (closeFuture == null) { final CloseReason cr = closeReason; if (cr == null) { final FutureImpl<CloseReason> f = Futures.createSafeFuture(); addCloseListener(new org.glassfish.grizzly.CloseListener() { @Override public void onClosed(Closeable closeable, ICloseType type) throws IOException { final CloseReason cr = closeReason; assert cr != null; f.result(cr); } }); closeFuture = f; } else { closeFuture = Futures.createReadyFuture(cr); } } } } return closeFuture; }
public void attachToSelectorRunner(final SelectorRunner selectorRunner) throws IOException { detachSelectorRunner(); final SelectorHandler selectorHandler = transport.getSelectorHandler(); final FutureImpl<RegisterChannelResult> future = Futures.createSafeFuture(); selectorHandler.registerChannelAsync( selectorRunner, channel, 0, this, Futures.toCompletionHandler(future)); try { final RegisterChannelResult result = future.get(readTimeoutMillis, TimeUnit.MILLISECONDS); this.selectorRunner = selectorRunner; this.selectionKey = result.getSelectionKey(); } catch (InterruptedException | TimeoutException e) { throw new IOException("", e); } catch (ExecutionException e) { throw new IOException("", e.getCause()); } }
@Override public void read(final Connection connection, final CompletionHandler<ReadResult> completionHandler) { final FilterChainContext context = obtainFilterChainContext(connection); context.setOperation(FilterChainContext.Operation.READ); context.getTransportContext().configureBlocking(true); ExecutorResolver.resolve(context).initIndexes(context); try { final ReadResult readResult = read(context); Futures.notifyResult(null, completionHandler, readResult); } catch (IOException e) { Futures.notifyFailure(null, completionHandler, e); } }
GrizzlyResponseFuture(final AsyncHandler asyncHandler) { this.asyncHandler = asyncHandler; delegate = Futures.<V>createSafeFuture(); delegate.addCompletionHandler(this); }
@Override public Future<Result<Thread>> start() throws IOException { final FutureImpl<Result<Thread>> future = Futures.<Result<Thread>>createUnsafeFuture(); if (!isAjpEnabled(grizzlyListener)) { // If this is not AJP listener - initiate startup right now start0(); } else { // For AJP listener we have to wait until server is up and ready // to process incoming requests // Related to the GLASSFISH-18267 grizzlyService.addServerReadyListener(new Callable<Void>() { @Override public Void call() throws Exception { start0(); return null; } }); } future.result(new Result<Thread>(Thread.currentThread())); return future; }
/** * This method will block if the async write queue is currently larger * than the configured maximum. The amount of time that this method * will block is dependent on the write timeout of the transport * associated with the specified connection. */ private static void blockUntilQueueFree(final Connection c) { if (!c.canWrite()) { final FutureImpl<Boolean> future = Futures.createSafeFuture(); // Connection may be obtained by calling FilterChainContext.getConnection(). c.notifyCanWrite(new WriteHandler() { @Override public void onWritePossible() throws Exception { future.result(TRUE); } @Override public void onError(Throwable t) { future.failure(makeIOException(t)); } }); block(c, future); } }
Futures.notifyResult(asyncPoller.future, asyncPoller.completionHandler, info.connection);
} else { final FutureImpl<FilterChainContext> future = Futures.createUnsafeFuture(); context.operationCompletionHandler = Futures.toCompletionHandler(future); } while (!future.isDone()); final FilterChainContext retContext = future.get(); ReadResult rr = ReadResult.create(connection); rr.setMessage(retContext.getMessage()); rr.setSrcAddressHolder(retContext.getAddressHolder()); future.recycle(false);
public void register() throws IOException { final FutureImpl<RegisterChannelResult> future = Futures.createSafeFuture(); transport.getNIOChannelDistributor().registerServiceChannelAsync( channel, SelectionKey.OP_READ, this, Futures.toCompletionHandler(future, ((UDPNIOTransport) transport).registerChannelCompletionHandler )); try { future.get(10, TimeUnit.SECONDS); } catch (Exception e) { throw new IOException("Error registering server channel key", e); } notifyReady(); }
@Override public GrizzlyFuture<CloseReason> closeFuture() { if (closeFuture == null) { synchronized (this) { if (closeFuture == null) { final CloseReason cr = closeReason; if (cr == null) { final FutureImpl<CloseReason> f = Futures.createSafeFuture(); addCloseListener(new org.glassfish.grizzly.CloseListener() { @Override public void onClosed(Closeable closeable, ICloseType type) throws IOException { final CloseReason cr = closeReason; assert cr != null; f.result(cr); } }); closeFuture = f; } else { closeFuture = Futures.createReadyFuture(cr); } } } } return closeFuture; }
public void attachToSelectorRunner(final SelectorRunner selectorRunner) throws IOException { detachSelectorRunner(); final SelectorHandler selectorHandler = transport.getSelectorHandler(); final FutureImpl<RegisterChannelResult> future = Futures.createSafeFuture(); selectorHandler.registerChannelAsync( selectorRunner, channel, 0, this, Futures.toCompletionHandler(future)); try { final RegisterChannelResult result = future.get(readTimeoutMillis, TimeUnit.MILLISECONDS); this.selectorRunner = selectorRunner; this.selectionKey = result.getSelectionKey(); } catch (InterruptedException | TimeoutException e) { throw new IOException("", e); } catch (ExecutionException e) { throw new IOException("", e.getCause()); } }
@Override public void read(final Connection connection, final CompletionHandler<ReadResult> completionHandler) { final FilterChainContext context = obtainFilterChainContext(connection); context.setOperation(FilterChainContext.Operation.READ); context.getTransportContext().configureBlocking(true); ExecutorResolver.resolve(context).initIndexes(context); try { final ReadResult readResult = read(context); Futures.notifyResult(null, completionHandler, readResult); } catch (IOException e) { Futures.notifyFailure(null, completionHandler, e); } }
GrizzlyResponseFuture(final AsyncHandler asyncHandler) { this.asyncHandler = asyncHandler; delegate = Futures.<V>createSafeFuture(); delegate.addCompletionHandler(this); }
Futures.notifyResult(asyncPoller.future, asyncPoller.completionHandler, info.connection);
} else { final FutureImpl<FilterChainContext> future = Futures.createUnsafeFuture(); context.operationCompletionHandler = Futures.toCompletionHandler(future); } while (!future.isDone()); final FilterChainContext retContext = future.get(); ReadResult rr = ReadResult.create(connection); rr.setMessage(retContext.getMessage()); rr.setSrcAddressHolder(retContext.getAddressHolder()); future.recycle(false);