private static ReadConfigHandler newReadHttpStatusHandler( AstReadConfigNode node, Function<AstValueMatcher, MessageDecoder> decoderFactory) { AstValueMatcher code = node.getMatcher("code"); AstValueMatcher reason = node.getMatcher("reason"); MessageDecoder codeDecoder = decoderFactory.apply(code); MessageDecoder reasonDecoder = decoderFactory.apply(reason); HttpStatusDecoder decoder = new HttpStatusDecoder(codeDecoder, reasonDecoder); ReadConfigHandler handler = new ReadConfigHandler(decoder); handler.setRegionInfo(node.getRegionInfo()); return handler; }
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 newReadHttpMethodHandler( AstReadConfigNode node, Function<AstValueMatcher, MessageDecoder> decoderFactory) { AstValueMatcher methodName = node.getMatcher(); requireNonNull(methodName); MessageDecoder methodValueDecoder = decoderFactory.apply(methodName); HttpMethodDecoder decoder = new HttpMethodDecoder(methodValueDecoder); ReadConfigHandler handler = new ReadConfigHandler(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; } }
private static ReadConfigHandler newReadHttpVersionHandler( AstReadConfigNode node, Function<AstValueMatcher, MessageDecoder> decoderFactory) { AstValueMatcher version = node.getMatcher(); MessageDecoder versionDecoder = decoderFactory.apply(version); HttpVersionDecoder decoder = new HttpVersionDecoder(versionDecoder); ReadConfigHandler handler = new ReadConfigHandler(decoder); handler.setRegionInfo(node.getRegionInfo()); return handler; }