@Override public DefaultFilterChain subList(int fromIndex, int toIndex) { return new DefaultFilterChain(filters.subList(fromIndex, toIndex)); }
currentFilter = get(i); checkStoredMessage(ctx, filtersState, i); lastNextAction = executeFilter(executor, currentFilter, ctx); } else { lastNextAction = ctx.predefinedNextAction; storeMessage(ctx, filtersState, invokeAction.isIncomplete(), notifyComplete(ctx); break; case StopAction.TYPE: storeMessage(ctx, filtersState, true,
final FiltersState filtersState = obtainFiltersState(connection); final int end = ctx.getEndIdx(); final FilterExecution execution = executeChainPart(ctx, executor, ctx.getFilterIdx(), end, filtersState); switch (execution.type) { } while (prepareRemainder(ctx, filtersState)); } catch (Throwable e) { LOGGER.log(e instanceof IOException ? Level.FINE : Level.WARNING, LogMessages.WARNING_GRIZZLY_FILTERCHAIN_EXCEPTION(), e); throwChain(ctx, executor, e); ctx.getCloseable().closeWithReason(Exceptions.makeIOException(e));
final FiltersState filtersState = obtainFiltersState(connection); if (!prepareRemainder(context, filtersState)) { context.setFilterIdx(0); context.setMessage(null); executeChainPart(context, executor, context.getFilterIdx(), context.getEndIdx(), filtersState); } while (!future.isDone());
@Override public ProcessorResult process(final Context context) { if (isEmpty()) return ProcessorResult.createComplete(); final InternalContextImpl internalContext = (InternalContextImpl) context; final FilterChainContext filterChainContext = internalContext.filterChainContext; if (filterChainContext.getOperation() == Operation.NONE) { final IOEvent ioEvent = internalContext.getIoEvent(); if (ioEvent != IOEvent.WRITE) { filterChainContext.setOperation(FilterChainContext.ioEvent2Operation(ioEvent)); } else { // On OP_WRITE - call the async write queue final Connection connection = context.getConnection(); final AsyncQueueEnabledTransport transport = (AsyncQueueEnabledTransport) connection.getTransport(); final AsyncQueueWriter writer = transport.getAsyncQueueIO().getWriter(); return writer.processAsync(context).toProcessorResult(); } } return execute(filterChainContext); }
/** * Notify the filters about error. * @param ctx {@link FilterChainContext} * @return position of the last executed {@link Filter} */ private void throwChain(final FilterChainContext ctx, final FilterExecutor executor, final Throwable exception) { notifyFailure(ctx, exception); final int endIdx = ctx.getStartIdx(); if (ctx.getFilterIdx() == endIdx) { return; } int i; while (true) { i = executor.getPreviousFilter(ctx); ctx.setFilterIdx(i); get(i).exceptionOccurred(ctx, exception); if (i == endIdx) { return; } } }
@Override public void fireEventDownstream(final Connection connection, final FilterChainEvent event, final CompletionHandler<FilterChainContext> completionHandler) { final FilterChainContext context = obtainFilterChainContext(connection); context.operationCompletionHandler = completionHandler; context.setOperation(Operation.EVENT); context.event = event; ExecutorResolver.DOWNSTREAM_EXECUTOR_SAMPLE.initIndexes(context); ProcessorExecutor.execute(context.internalContext); }
currentFilter = get(i); checkStoredMessage(ctx, filtersState, i); lastNextAction = executeFilter(executor, currentFilter, ctx); } else { lastNextAction = ctx.predefinedNextAction; storeMessage(ctx, filtersState, invokeAction.isIncomplete(), notifyComplete(ctx); break; case StopAction.TYPE: storeMessage(ctx, filtersState, true,
final FiltersState filtersState = obtainFiltersState(connection); final int end = ctx.getEndIdx(); final FilterExecution execution = executeChainPart(ctx, executor, ctx.getFilterIdx(), end, filtersState); switch (execution.type) { } while (prepareRemainder(ctx, filtersState)); } catch (Throwable e) { LOGGER.log(e instanceof IOException ? Level.FINE : Level.WARNING, LogMessages.WARNING_GRIZZLY_FILTERCHAIN_EXCEPTION(), e); throwChain(ctx, executor, e); ctx.getCloseable().closeWithReason(Exceptions.makeIOException(e));
final FiltersState filtersState = obtainFiltersState(connection); if (!prepareRemainder(context, filtersState)) { context.setFilterIdx(0); context.setMessage(null); executeChainPart(context, executor, context.getFilterIdx(), context.getEndIdx(), filtersState); } while (!future.isDone());
@Override public ProcessorResult process(final Context context) { if (isEmpty()) return ProcessorResult.createComplete(); final InternalContextImpl internalContext = (InternalContextImpl) context; final FilterChainContext filterChainContext = internalContext.filterChainContext; if (filterChainContext.getOperation() == Operation.NONE) { final IOEvent ioEvent = internalContext.getIoEvent(); if (ioEvent != IOEvent.WRITE) { filterChainContext.setOperation(FilterChainContext.ioEvent2Operation(ioEvent)); } else { // On OP_WRITE - call the async write queue final Connection connection = context.getConnection(); final AsyncQueueEnabledTransport transport = (AsyncQueueEnabledTransport) connection.getTransport(); final AsyncQueueWriter writer = transport.getAsyncQueueIO().getWriter(); return writer.processAsync(context).toProcessorResult(); } } return execute(filterChainContext); }
/** * Notify the filters about error. * @param ctx {@link FilterChainContext} * @return position of the last executed {@link Filter} */ private void throwChain(final FilterChainContext ctx, final FilterExecutor executor, final Throwable exception) { notifyFailure(ctx, exception); final int endIdx = ctx.getStartIdx(); if (ctx.getFilterIdx() == endIdx) { return; } int i; while (true) { i = executor.getPreviousFilter(ctx); ctx.setFilterIdx(i); get(i).exceptionOccurred(ctx, exception); if (i == endIdx) { return; } } }
@Override public void fireEventDownstream(final Connection connection, final FilterChainEvent event, final CompletionHandler<FilterChainContext> completionHandler) { final FilterChainContext context = obtainFilterChainContext(connection); context.operationCompletionHandler = completionHandler; context.setOperation(Operation.EVENT); context.event = event; ExecutorResolver.DOWNSTREAM_EXECUTOR_SAMPLE.initIndexes(context); ProcessorExecutor.execute(context.internalContext); }
currentFilter = get(i); checkStoredMessage(ctx, filtersState, i); lastNextAction = executeFilter(executor, currentFilter, ctx); } else { lastNextAction = ctx.predefinedNextAction; storeMessage(ctx, filtersState, invokeAction.isIncomplete(), notifyComplete(ctx); break; case StopAction.TYPE: storeMessage(ctx, filtersState, true,
final FiltersState filtersState = obtainFiltersState(connection); final int end = ctx.getEndIdx(); final FilterExecution execution = executeChainPart(ctx, executor, ctx.getFilterIdx(), end, filtersState); switch (execution.type) { } while (prepareRemainder(ctx, filtersState)); } catch (Throwable e) { LOGGER.log(e instanceof IOException ? Level.FINE : Level.WARNING, LogMessages.WARNING_GRIZZLY_FILTERCHAIN_EXCEPTION(), e); throwChain(ctx, executor, e); ctx.getCloseable().closeWithReason(Exceptions.makeIOException(e));
final FiltersState filtersState = obtainFiltersState(connection); if (!prepareRemainder(context, filtersState)) { context.setFilterIdx(0); context.setMessage(null); executeChainPart(context, executor, context.getFilterIdx(), context.getEndIdx(), filtersState); } while (!future.isDone());
@Override public ProcessorResult process(final Context context) { if (isEmpty()) return ProcessorResult.createComplete(); final InternalContextImpl internalContext = (InternalContextImpl) context; final FilterChainContext filterChainContext = internalContext.filterChainContext; if (filterChainContext.getOperation() == Operation.NONE) { final IOEvent ioEvent = internalContext.getIoEvent(); if (ioEvent != IOEvent.WRITE) { filterChainContext.setOperation(FilterChainContext.ioEvent2Operation(ioEvent)); } else { // On OP_WRITE - call the async write queue final Connection connection = context.getConnection(); final AsyncQueueEnabledTransport transport = (AsyncQueueEnabledTransport) connection.getTransport(); final AsyncQueueWriter writer = transport.getAsyncQueueIO().getWriter(); return writer.processAsync(context).toProcessorResult(); } } return execute(filterChainContext); }
/** * Notify the filters about error. * @param ctx {@link FilterChainContext} * @return position of the last executed {@link Filter} */ private void throwChain(final FilterChainContext ctx, final FilterExecutor executor, final Throwable exception) { notifyFailure(ctx, exception); final int endIdx = ctx.getStartIdx(); if (ctx.getFilterIdx() == endIdx) { return; } int i; while (true) { i = executor.getPreviousFilter(ctx); ctx.setFilterIdx(i); get(i).exceptionOccurred(ctx, exception); if (i == endIdx) { return; } } }
@Override public DefaultFilterChain subList(int fromIndex, int toIndex) { return new DefaultFilterChain(filters.subList(fromIndex, toIndex)); }
@Override public void fireEventUpstream(final Connection connection, final FilterChainEvent event, final CompletionHandler<FilterChainContext> completionHandler) { final FilterChainContext context = obtainFilterChainContext(connection); context.operationCompletionHandler = completionHandler; context.setOperation(Operation.EVENT); context.event = event; ExecutorResolver.UPSTREAM_EXECUTOR_SAMPLE.initIndexes(context); ProcessorExecutor.execute(context.internalContext); }