/** * Copyright (C) 2014-2016 LinkedIn Corp. (pinot-core@linkedin.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.linkedin.pinot.transport.conf; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import com.linkedin.pinot.transport.config.ConnectionPoolConfig; import com.linkedin.pinot.transport.config.RoutingTableConfig; public class TransportClientConf { public static enum RoutingMode { CONFIG, HELIX }; public static final String ROUTING_MODE_KEY = "routingMode"; public static final String CFG_BASED_ROUTING = "routing"; public static final String HELIX_CONFIG = "helix"; public static final String CONNECTION_POOL_CONFIG = "connPool"; // TODO: Revisit defaults private static final String DEFAULT_ROUTING_MODE = "CONFIG"; private RoutingMode _routingMode; private RoutingTableConfig _cfgBasedRouting; private ConnectionPoolConfig _connPool; public TransportClientConf() { _routingMode = RoutingMode.valueOf(DEFAULT_ROUTING_MODE); _cfgBasedRouting = new RoutingTableConfig(); _connPool = new ConnectionPoolConfig(); } public void init(Configuration cfg) throws ConfigurationException { if (cfg.containsKey(ROUTING_MODE_KEY)) { _routingMode = RoutingMode.valueOf(cfg.getString(ROUTING_MODE_KEY)); } if ((_routingMode == RoutingMode.CONFIG)) { _cfgBasedRouting.init(cfg.subset(CFG_BASED_ROUTING)); } Configuration connPoolCfg = cfg.subset(CONNECTION_POOL_CONFIG); if (connPoolCfg != null) { _connPool.init(connPoolCfg); } } public RoutingMode getRoutingMode() { return _routingMode; } public RoutingTableConfig getCfgBasedRouting() { return _cfgBasedRouting; } public ConnectionPoolConfig getConnPool() { return _connPool; } }