Search in sources :

Example 1 with Serializer

use of rpc.turbo.serialization.Serializer in project turbo-rpc by hank-whu.

the class AppConfig method parse.

@SuppressWarnings({ "rawtypes", "unchecked" })
private static AppConfig parse(Config config) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException {
    String group = getStringOrElse(config, "group", TurboService.DEFAULT_GROUP);
    String app = getStringOrElse(config, "app", TurboService.DEFAULT_GROUP);
    int globalTimeout = getIntOrElse(config, "globalTimeout", 0);
    int maxRequestWait = getIntOrElse(config, "maxRequestWait", 10000);
    int connectPerServer = getIntOrElse(config, "connectPerServer", 1);
    int serverErrorThreshold = getIntOrElse(config, "serverErrorThreshold", 16);
    int connectErrorThreshold = getIntOrElse(config, "connectErrorThreshold", 2 * serverErrorThreshold / connectPerServer);
    String serializerClass = getStringOrElse(config, "serializer.class", ProtostuffSerializer.class.getName());
    Serializer serializer = (Serializer) // 
    Class.forName(// 
    serializerClass).getDeclaredConstructor().newInstance();
    String loadBalanceFactoryClass = getStringOrElse(config, "loadBalanceFactory.class", RoundRobinLoadBalanceFactory.class.getName());
    LoadBalanceFactory loadBalanceFactory = (LoadBalanceFactory) // 
    Class.forName(// 
    loadBalanceFactoryClass).getDeclaredConstructor().newInstance();
    String discoverClass = getStringOrElse(config, "discover.class", DirectConnectDiscover.class.getName());
    List<String> discoverAddressList = config.getStringList("discover.address");
    Discover discover = (Discover) // 
    Class.forName(// 
    discoverClass).getDeclaredConstructor().newInstance();
    List<HostPort> hostPorts = // 
    discoverAddressList.stream().map(// 
    str -> new HostPort(str)).collect(Collectors.toList());
    discover.init(hostPorts);
    AppConfig appConfig = new AppConfig();
    appConfig.setGroup(group);
    appConfig.setApp(app);
    appConfig.setSerializer(serializer);
    appConfig.setGlobalTimeout(globalTimeout);
    appConfig.setMaxRequestWait(maxRequestWait);
    appConfig.setConnectPerServer(connectPerServer);
    appConfig.setServerErrorThreshold(serverErrorThreshold);
    appConfig.setConnectErrorThreshold(connectErrorThreshold);
    appConfig.setLoadBalanceFactory(loadBalanceFactory);
    appConfig.setDiscover(discover);
    return appConfig;
}
Also used : Discover(rpc.turbo.discover.Discover) Serializer(rpc.turbo.serialization.Serializer) Config(com.typesafe.config.Config) TurboService(rpc.turbo.annotation.TurboService) ConfigUtils.getStringOrElse(rpc.turbo.config.ConfigUtils.getStringOrElse) DirectConnectDiscover(rpc.turbo.discover.DirectConnectDiscover) ProtostuffSerializer(rpc.turbo.serialization.protostuff.ProtostuffSerializer) ConfigException(rpc.turbo.config.ConfigException) Collectors(java.util.stream.Collectors) LoadBalanceFactory(rpc.turbo.loadbalance.LoadBalanceFactory) InvocationTargetException(java.lang.reflect.InvocationTargetException) List(java.util.List) HostPort(rpc.turbo.config.HostPort) Weightable(rpc.turbo.loadbalance.Weightable) ConfigUtils.getIntOrElse(rpc.turbo.config.ConfigUtils.getIntOrElse) RoundRobinLoadBalanceFactory(rpc.turbo.loadbalance.RoundRobinLoadBalanceFactory) HostPort(rpc.turbo.config.HostPort) LoadBalanceFactory(rpc.turbo.loadbalance.LoadBalanceFactory) RoundRobinLoadBalanceFactory(rpc.turbo.loadbalance.RoundRobinLoadBalanceFactory) Discover(rpc.turbo.discover.Discover) DirectConnectDiscover(rpc.turbo.discover.DirectConnectDiscover) ProtostuffSerializer(rpc.turbo.serialization.protostuff.ProtostuffSerializer) DirectConnectDiscover(rpc.turbo.discover.DirectConnectDiscover) RoundRobinLoadBalanceFactory(rpc.turbo.loadbalance.RoundRobinLoadBalanceFactory) Serializer(rpc.turbo.serialization.Serializer) ProtostuffSerializer(rpc.turbo.serialization.protostuff.ProtostuffSerializer)

Example 2 with Serializer

use of rpc.turbo.serialization.Serializer in project turbo-rpc by hank-whu.

the class ServerConfig method parse.

private static ServerConfig parse(Config config) {
    String group = getStringOrElse(config, "group", TurboService.DEFAULT_GROUP);
    String app = getStringOrElse(config, "app", TurboService.DEFAULT_GROUP);
    String ownerName = getStringOrElse(config, "owner.name", "");
    String ownerPhone = getStringOrElse(config, "owner.phone", "");
    String serializerClass = getStringOrElse(config, "serializer.class", ProtostuffSerializer.class.getName());
    Serializer serializer;
    try {
        serializer = (Serializer) // 
        Class.forName(// 
        serializerClass).getDeclaredConstructor().newInstance();
    } catch (Throwable t) {
        throw new ConfigException(t);
    }
    String jsonMapperClass = getStringOrElse(config, "jsonMapper.class", JacksonMapper.class.getName());
    JsonMapper jsonMapper;
    try {
        jsonMapper = (JsonMapper) // 
        Class.forName(// 
        jsonMapperClass).getDeclaredConstructor().newInstance();
    } catch (Throwable t) {
        throw new ConfigException(t);
    }
    List<? extends Config> registerConfigList = config.getConfigList("registers");
    List<RegisterConfig> registers = // 
    registerConfigList.stream().map(registerConfig -> {
        try {
            return RegisterConfig.parse(registerConfig);
        } catch (Throwable e) {
            throw new ConfigException(e);
        }
    }).collect(Collectors.toList());
    Map<Integer, RegisterConfig> portMap = new HashMap<>();
    for (RegisterConfig registerConfig : registers) {
        HostPort serverAddress = registerConfig.getServerAddress();
        RegisterConfig existed = portMap.get(serverAddress.port);
        if (existed == null) {
            portMap.put(serverAddress.port, registerConfig);
            continue;
        }
        if (existed.getProtocol() == registerConfig.getProtocol() && existed.getServerAddress().equals(serverAddress)) {
            continue;
        }
        throw new ConfigException("存在端口冲突: " + registerConfig + " vs " + existed);
    }
    ServerConfig serverConfig = new ServerConfig();
    serverConfig.setGroup(group);
    serverConfig.setApp(app);
    serverConfig.setOwnerName(ownerName);
    serverConfig.setOwnerPhone(ownerPhone);
    serverConfig.setSerializer(serializer);
    serverConfig.setJsonMapper(jsonMapper);
    serverConfig.setRegisters(registers);
    return serverConfig;
}
Also used : Serializer(rpc.turbo.serialization.Serializer) Config(com.typesafe.config.Config) TurboService(rpc.turbo.annotation.TurboService) ConfigUtils.getStringOrElse(rpc.turbo.config.ConfigUtils.getStringOrElse) HashMap(java.util.HashMap) ProtostuffSerializer(rpc.turbo.serialization.protostuff.ProtostuffSerializer) ConfigException(rpc.turbo.config.ConfigException) Collectors(java.util.stream.Collectors) JacksonMapper(rpc.turbo.serialization.jackson.JacksonMapper) List(java.util.List) HostPort(rpc.turbo.config.HostPort) JsonMapper(rpc.turbo.serialization.JsonMapper) Map(java.util.Map) ConfigFactory(com.typesafe.config.ConfigFactory) JacksonMapper(rpc.turbo.serialization.jackson.JacksonMapper) HashMap(java.util.HashMap) HostPort(rpc.turbo.config.HostPort) ConfigException(rpc.turbo.config.ConfigException) ProtostuffSerializer(rpc.turbo.serialization.protostuff.ProtostuffSerializer) JsonMapper(rpc.turbo.serialization.JsonMapper) Serializer(rpc.turbo.serialization.Serializer) ProtostuffSerializer(rpc.turbo.serialization.protostuff.ProtostuffSerializer)

Aggregations

Config (com.typesafe.config.Config)2 List (java.util.List)2 Collectors (java.util.stream.Collectors)2 TurboService (rpc.turbo.annotation.TurboService)2 ConfigException (rpc.turbo.config.ConfigException)2 ConfigUtils.getStringOrElse (rpc.turbo.config.ConfigUtils.getStringOrElse)2 HostPort (rpc.turbo.config.HostPort)2 Serializer (rpc.turbo.serialization.Serializer)2 ProtostuffSerializer (rpc.turbo.serialization.protostuff.ProtostuffSerializer)2 ConfigFactory (com.typesafe.config.ConfigFactory)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 ConfigUtils.getIntOrElse (rpc.turbo.config.ConfigUtils.getIntOrElse)1 DirectConnectDiscover (rpc.turbo.discover.DirectConnectDiscover)1 Discover (rpc.turbo.discover.Discover)1 LoadBalanceFactory (rpc.turbo.loadbalance.LoadBalanceFactory)1 RoundRobinLoadBalanceFactory (rpc.turbo.loadbalance.RoundRobinLoadBalanceFactory)1 Weightable (rpc.turbo.loadbalance.Weightable)1 JsonMapper (rpc.turbo.serialization.JsonMapper)1