private static ReadConfigHandler newReadHttpParameterHandler( AstReadConfigNode node, Function<AstValueMatcher, MessageDecoder> decoderFactory) { AstExactTextMatcher name = (AstExactTextMatcher) node.getMatcher("name"); requireNonNull(name); List<MessageDecoder> valueDecoders = new ArrayList<>(); for (AstValueMatcher matcher : node.getMatchers()) { valueDecoders.add(decoderFactory.apply(matcher)); } HttpParameterDecoder decoder = new HttpParameterDecoder(name.getValue(), valueDecoders); decoder.setRegionInfo(node.getRegionInfo()); ReadConfigHandler handler = new ReadConfigHandler(decoder); handler.setRegionInfo(node.getRegionInfo()); return handler; }
private static ReadHttpTrailersHandler newReadHttpTrailerHandler( AstReadConfigNode node, Function<AstValueMatcher, MessageDecoder> decoderFactory) { AstExactTextMatcher name = (AstExactTextMatcher) node.getMatcher("name"); List<MessageDecoder> valueDecoders = new ArrayList<>(); for (AstValueMatcher matcher : node.getMatchers()) { valueDecoders.add(decoderFactory.apply(matcher)); } HttpTrailerDecoder decoder = new HttpTrailerDecoder(name.getValue(), valueDecoders); decoder.setRegionInfo(node.getRegionInfo()); // Ideally we could use a ReadConfigHandler as follows, but the trailers come in-sync with // with the channel close, which completes the composite future of all handlers and checks // the ReadConfigHandler to see if it completed. // HttpTrailerDecoder decoder = new HttpTrailerDecoder(name.getValue(), valueDecoders); // decoder.setRegionInfo(node.getRegionInfo()); // ReadConfigHandler handler = new ReadConfigHandler(decoder); ReadHttpTrailersHandler handler = new ReadHttpTrailersHandler(decoder); handler.setRegionInfo(node.getRegionInfo()); return handler; }
private static ReadConfigHandler newReadHttpHeaderHandler( AstReadConfigNode node, Function<AstValueMatcher, MessageDecoder> decoderFactory) { AstExactTextMatcher name = (AstExactTextMatcher) node.getMatcher("name"); requireNonNull(name); if (node.isMissing()) { HttpHeaderMissingDecoder decoder = new HttpHeaderMissingDecoder(name.getValue()); decoder.setRegionInfo(node.getRegionInfo()); ReadConfigHandler handler = new ReadConfigHandler(decoder); handler.setRegionInfo(node.getRegionInfo()); return handler; } else { List<MessageDecoder> valueDecoders = new ArrayList<>(); for (AstValueMatcher matcher : node.getMatchers()) { valueDecoders.add(decoderFactory.apply(matcher)); } HttpHeaderDecoder decoder = new HttpHeaderDecoder(name.getValue(), valueDecoders); decoder.setRegionInfo(node.getRegionInfo()); ReadConfigHandler handler = new ReadConfigHandler(decoder); handler.setRegionInfo(node.getRegionInfo()); return handler; } }