@Override protected void doOpen() throws Throwable { FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless(); filterChainBuilder.add(new TransportFilter()); filterChainBuilder.add(new GrizzlyCodecAdapter(getCodec(), getUrl(), this)); filterChainBuilder.add(new GrizzlyHandler(getUrl(), this)); TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance(); ThreadPoolConfig config = builder.getWorkerThreadPoolConfig(); config.setPoolName(CLIENT_THREAD_POOL_NAME) .setQueueLimit(-1) .setCorePoolSize(0) .setMaxPoolSize(Integer.MAX_VALUE) .setKeepAliveTime(60L, TimeUnit.SECONDS); builder.setTcpNoDelay(true).setKeepAlive(true) .setConnectionTimeout(getConnectTimeout()) .setIOStrategy(SameThreadIOStrategy.getInstance()); transport = builder.build(); transport.setProcessor(filterChainBuilder.build()); transport.start(); }
/** * Returns the {@link FilterChainBuilder}, developers may use to build there * custom protocol filter chain. * The returned {@link FilterChainBuilder} may have some {@link Filter}s pre-added. * * @return {@link FilterChainBuilder}. */ public FilterChainBuilder getPUFilterChainBuilder() { final FilterChainBuilder builder = FilterChainBuilder.stateless(); builder.add(backChannelFilter); return builder; }
/** * Installs a new Grizzly filter (e.g. SSL/SASL) beneath the top-level * LDAP filter. * * @param filter * The filter to be installed. */ private void installFilter(final Filter filter) { // Determine the index where the filter should be added. final FilterChain oldFilterChain = (FilterChain) connection.getProcessor(); int filterIndex = oldFilterChain.size() - 1; if (filter instanceof SSLFilter) { // Beneath any ConnectionSecurityLayerFilters if present, // otherwise beneath the LDAP filter. for (int i = oldFilterChain.size() - 2; i >= 0; i--) { if (!(oldFilterChain.get(i) instanceof ConnectionSecurityLayerFilter)) { filterIndex = i + 1; break; } } } // Create the new filter chain. final FilterChain newFilterChain = FilterChainBuilder.stateless().addAll(oldFilterChain).add(filterIndex, filter) .build(); connection.setProcessor(newFilterChain); }
/** * {@inheritDoc} */ @Override public void setup(NetworkListener networkListener, FilterChainBuilder builder) { // Get the index of HttpServerFilter in the HttpServer filter chain final int httpServerFilterIdx = builder.indexOfType(HttpServerFilter.class); if (httpServerFilterIdx >= 0) { // Insert the WebSocketFilter right before HttpServerFilter builder.add(httpServerFilterIdx, createWebSocketFilter()); } }
/** * Returns {@link FilterChain} instance, if it's interested in processing * passed {@link IOEvent}, or <tt>null</tt> otherwise. * * @param ioEvent {@link IOEvent} to process. * @param connection {@link Connection}, where {@link IOEvent} occured. * * @return {@link FilterChain} instance, if it's interested in processing * passed {@link IOEvent}, or <tt>null</tt> otherwise. */ @Override public Processor select(IOEvent ioEvent, Connection connection) { FilterChain chain = builder.build(); if (chain.isInterested(ioEvent)) { return chain; } return null; } }
@Override public void configure(final ServiceLocator habitat, final NetworkListener networkListener) throws IOException { setName(networkListener.getName()); setAddress(InetAddress.getByName(networkListener.getAddress())); setPort(Integer.parseInt(networkListener.getPort())); final FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless(); configureTransport(networkListener, networkListener.findTransport(), filterChainBuilder); configureProtocol(habitat, networkListener, networkListener.findProtocol(), filterChainBuilder); configureThreadPool(habitat, networkListener, networkListener.findThreadPool()); rootFilterChain = filterChainBuilder.build(); transport.setProcessor(rootFilterChain); }
private static void configureAlpn(final Transport transport, final Http2ServerFilter http2Filter, final FilterChainBuilder builder) { final int idx = builder.indexOfType(SSLBaseFilter.class); if (idx != -1) { final SSLBaseFilter sslFilter = (SSLBaseFilter) builder.get(idx); AlpnSupport.getInstance().configure(sslFilter); AlpnSupport.getInstance().setServerSideNegotiator(transport, new AlpnServerNegotiatorImpl(http2Filter)); } } }
public int indexOfType(final Class<? extends Filter> filterType) { final int size = patternFilterChain.size(); for (int i = 0; i < size; i++) { final Filter filter = get(i); if (filterType.isAssignableFrom(filter.getClass())) { return i; } } return -1; }
@Override public void setup(NetworkListener networkListener, FilterChainBuilder builder) { // Get the index of HttpCodecFilter in the HttpServer filter chain final int httpCodecFilterIdx = builder.indexOfType(HttpServerFilter.class); if (httpCodecFilterIdx >= 0) { // Insert the WebSocketFilter right after HttpCodecFilter HttpServerFilter originalFilter = (HttpServerFilter) builder.get(httpCodecFilterIdx); builder.set(httpCodecFilterIdx, new ContentLengthFilter(originalFilter)); } }
@Override protected void configureProtocol(final ServiceLocator habitat, final NetworkListener networkListener, final Protocol protocol, final FilterChainBuilder filterChainBuilder) { filterChainBuilder.add(new ServiceInitializerFilter(this, grizzlyService.getHabitat(), logger)); }
public FilterChainBuilder addAll(List<Filter> list) { return addAll(patternFilterChain.size(), list); }
public FilterChainBuilder add(Filter filter) { return addLast(filter); }
/** * Returns the {@link FilterChainBuilder}, developers may use to build there * custom protocol filter chain. * The returned {@link FilterChainBuilder} may have some {@link Filter}s pre-added. * * @return {@link FilterChainBuilder}. */ public FilterChainBuilder getPUFilterChainBuilder() { final FilterChainBuilder builder = FilterChainBuilder.stateless(); builder.add(backChannelFilter); return builder; }
/** * Installs a new Grizzly filter (e.g. SSL/SASL) beneath the top-level LDAP * filter. * * @param filter * The filter to be installed. */ void installFilter(final Filter filter) { synchronized (stateLock) { // Determine the index where the filter should be added. final FilterChain oldFilterChain = (FilterChain) connection.getProcessor(); int filterIndex = oldFilterChain.size() - 1; if (filter instanceof SSLFilter) { // Beneath any ConnectionSecurityLayerFilters if present, // otherwise beneath the LDAP filter. for (int i = oldFilterChain.size() - 2; i >= 0; i--) { if (!(oldFilterChain.get(i) instanceof ConnectionSecurityLayerFilter)) { filterIndex = i + 1; break; } } } // Create the new filter chain. final FilterChain newFilterChain = FilterChainBuilder.stateless().addAll(oldFilterChain).add(filterIndex, filter) .build(); connection.setProcessor(newFilterChain); } }
/** * {@inheritDoc} */ @Override public void setup(NetworkListener networkListener, FilterChainBuilder builder) { // Get the index of HttpServerFilter in the HttpServer filter chain final int httpServerFilterIdx = builder.indexOfType(HttpServerFilter.class); if (httpServerFilterIdx >= 0) { // Insert the WebSocketFilter right before HttpServerFilter builder.add(httpServerFilterIdx, createWebSocketFilter()); } }
/** * Returns {@link FilterChain} instance, if it's interested in processing * passed {@link IOEvent}, or <tt>null</tt> otherwise. * * @param ioEvent {@link IOEvent} to process. * @param connection {@link Connection}, where {@link IOEvent} occured. * * @return {@link FilterChain} instance, if it's interested in processing * passed {@link IOEvent}, or <tt>null</tt> otherwise. */ @Override public Processor select(IOEvent ioEvent, Connection connection) { FilterChain chain = builder.build(); if (chain.isInterested(ioEvent)) { return chain; } return null; } }
@Override public void configure(final ServiceLocator habitat, final NetworkListener networkListener) throws IOException { setName(networkListener.getName()); setAddress(InetAddress.getByName(networkListener.getAddress())); setPort(Integer.parseInt(networkListener.getPort())); configureDelayedExecutor(); final FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless(); configureTransport(networkListener, networkListener.findTransport(), filterChainBuilder); configureProtocol(habitat, networkListener, networkListener.findProtocol(), filterChainBuilder); configureThreadPool(habitat, networkListener, networkListener.findThreadPool()); rootFilterChain = filterChainBuilder.build(); transport.setProcessor(rootFilterChain); }
private static void configureAlpn(final Transport transport, final Http2ServerFilter http2Filter, final FilterChainBuilder builder) { final int idx = builder.indexOfType(SSLBaseFilter.class); if (idx != -1) { final SSLBaseFilter sslFilter = (SSLBaseFilter) builder.get(idx); AlpnSupport.getInstance().configure(sslFilter); AlpnSupport.getInstance().setServerSideNegotiator(transport, new AlpnServerNegotiatorImpl(http2Filter)); } } }
public int indexOfType(final Class<? extends Filter> filterType) { final int size = patternFilterChain.size(); for (int i = 0; i < size; i++) { final Filter filter = get(i); if (filterType.isAssignableFrom(filter.getClass())) { return i; } } return -1; }
public FilterChainBuilder addAll(List<Filter> list) { return addAll(patternFilterChain.size(), list); }