提交 cad9727a 编写于 作者: T terrymanu

refactor BackendNettyClient

上级 c894fe58
......@@ -98,12 +98,12 @@ public final class ShardingDataSourceMetaData {
}
/**
* Get actual schema name.
*
* Get data source meta data.
*
* @param actualDataSourceName actual data source name
* @return actual schema name
* @return actual data source meta data
*/
public String getActualSchemaName(final String actualDataSourceName) {
return dataSourceMetaDataMap.get(actualDataSourceName).getSchemeName();
public DataSourceMetaData getActualDataSourceMetaData(final String actualDataSourceName) {
return dataSourceMetaDataMap.get(actualDataSourceName);
}
}
......@@ -131,7 +131,7 @@ public final class SQLBuilder {
private void appendSchemaPlaceholder(final ShardingRule shardingRule, final ShardingDataSourceMetaData shardingDataSourceMetaData,
final String actualTableName, final StringBuilder stringBuilder) {
stringBuilder.append(shardingDataSourceMetaData.getActualSchemaName(shardingRule.getActualDataSourceNameByActualTableName(actualTableName)));
stringBuilder.append(shardingDataSourceMetaData.getActualDataSourceMetaData(shardingRule.getActualDataSourceNameByActualTableName(actualTableName)).getSchemeName());
}
private void appendIndexPlaceholder(final IndexPlaceholder indexPlaceholder, final String actualTableName, final StringBuilder stringBuilder) {
......
......@@ -93,11 +93,11 @@ public class ShardingDataSourceMetaDataTest {
@Test
public void assertGetActualSchemaNameForMasterSlaveShardingRule() {
assertEquals(masterSlaveShardingDataSourceMetaData.getActualSchemaName("ms_0"), "master_0");
assertEquals(masterSlaveShardingDataSourceMetaData.getActualDataSourceMetaData("ms_0").getSchemeName(), "master_0");
}
@Test
public void assertGetActualSchemaNameForShardingRule() {
assertEquals(shardingDataSourceMetaData.getActualSchemaName("ds_0"), "db_0");
assertEquals(shardingDataSourceMetaData.getActualDataSourceMetaData("ds_0").getSchemeName(), "db_0");
}
}
......@@ -17,7 +17,6 @@
package io.shardingsphere.proxy.backend.netty.client;
import com.google.common.collect.Maps;
import io.netty.bootstrap.Bootstrap;
import io.netty.buffer.PooledByteBufAllocator;
import io.netty.channel.Channel;
......@@ -32,6 +31,7 @@ import io.netty.channel.pool.ChannelPoolMap;
import io.netty.channel.pool.FixedChannelPool;
import io.netty.channel.pool.SimpleChannelPool;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.shardingsphere.core.metadata.datasource.DataSourceMetaData;
import io.shardingsphere.core.rule.DataSourceParameter;
import io.shardingsphere.proxy.config.RuleRegistry;
import lombok.AccessLevel;
......@@ -39,8 +39,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ExecutionException;
......@@ -67,7 +66,7 @@ public final class BackendNettyClient {
private static final int CONNECTION_TIMEOUT_SECONDS = RULE_REGISTRY.getBackendNIOConfig().getConnectionTimeoutSeconds();
private final Map<String, DataSourceConfig> dataSourceConfigMap = Maps.newHashMap();
private final Map<String, DataSourceConfig> dataSourceConfigMap = new HashMap<>();
private EventLoopGroup workerGroup;
......@@ -86,14 +85,16 @@ public final class BackendNettyClient {
/**
* Start backend connection client for netty.
*
* @throws MalformedURLException URL is illegal
* @throws InterruptedException interrupted exception
*/
public void start() throws MalformedURLException, InterruptedException {
public void start() throws InterruptedException {
Map<String, DataSourceParameter> dataSourceConfigurationMap = RULE_REGISTRY.getDataSourceConfigurationMap();
for (Entry<String, DataSourceParameter> each : dataSourceConfigurationMap.entrySet()) {
URL url = new URL(each.getValue().getUrl().replaceAll("jdbc:mysql:", "http:"));
dataSourceConfigMap.put(each.getKey(), new DataSourceConfig(url.getHost(), url.getPort(), url.getPath().substring(1), each.getValue().getUsername(), each.getValue().getPassword()));
String actualDataSourceName = each.getKey();
DataSourceParameter dataSourceParameter = each.getValue();
DataSourceMetaData dataSourceMetaData = RULE_REGISTRY.getMetaData().getDataSource().getActualDataSourceMetaData(actualDataSourceName);
dataSourceConfigMap.put(each.getKey(), new DataSourceConfig(
dataSourceMetaData.getHostName(), dataSourceMetaData.getPort(), dataSourceMetaData.getSchemeName(), dataSourceParameter.getUsername(), dataSourceParameter.getPassword()));
}
Bootstrap bootstrap = new Bootstrap();
// TODO :jiaqi where to init workerGroup?
......@@ -137,6 +138,7 @@ public final class BackendNettyClient {
private void initPoolMap(final Bootstrap bootstrap) throws InterruptedException {
poolMap = new AbstractChannelPoolMap<String, SimpleChannelPool>() {
@Override
protected SimpleChannelPool newPool(final String datasourceName) {
DataSourceConfig dataSourceConfig = dataSourceConfigMap.get(datasourceName);
......
......@@ -19,8 +19,6 @@ package io.shardingsphere.proxy.backend.netty.client;
import io.netty.channel.Channel;
import io.netty.channel.pool.ChannelPoolHandler;
import io.shardingsphere.proxy.backend.netty.client.BackendNettyClientChannelInitializer;
import io.shardingsphere.proxy.backend.netty.client.DataSourceConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -33,6 +31,7 @@ import lombok.extern.slf4j.Slf4j;
@RequiredArgsConstructor
@Slf4j
public class NettyChannelPoolHandler implements ChannelPoolHandler {
private final DataSourceConfig dataSourceConfig;
@Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册