protected void channelRead0()

in src/main/java/org/apache/dubbo/proxy/server/HttpProcessHandler.java [48:77]


    protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) {

        QueryStringDecoder queryStringDecoder = new QueryStringDecoder(msg.uri());
        String path = queryStringDecoder.rawPath();
        if (path.endsWith("/")) {
            path = path.substring(0, path.length() - 1);
        }
        if (path.startsWith("/")) {
            path = path.substring(1);
        }
        if (path.contains("/")) {
            String application = path.split("/")[0];
            String service = path.split("/")[1];
            Map<String, List<String>> params = queryStringDecoder.parameters();
            if (params.containsKey("group")) {
                service = params.get("group").get(0) + "/" + service;
            }
            if (params.containsKey("version")) {
                service = service + ":" + params.get("version").get(0);
            }
            ByteBuf raw = msg.content();
            String info = raw.toString(CharsetUtil.UTF_8);
            ServiceDefinition serviceDefinition = JSON.parseObject(info, ServiceDefinition.class);
            serviceDefinition.setServiceID(service);
            serviceDefinition.setApplication(application);
            doRequest(ctx, serviceDefinition, msg);
        }  else {
            //TODO error handle
        }
    }