Skip to content

Commit 8dc7b17

Browse files
author
Peng Hu
committed
添加客户端相关
1 parent 2e00f78 commit 8dc7b17

13 files changed

+1193
-1
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package info.xiaomo.gengine.network.client;
2+
3+
import io.netty.channel.ChannelFuture;
4+
import io.netty.channel.ChannelFutureListener;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
8+
import java.util.concurrent.TimeUnit;
9+
10+
11+
/**
12+
* Created by 张力 on 2017/6/30.
13+
*/
14+
public class ChannelConnectListener implements ChannelFutureListener {
15+
16+
private final Client client;
17+
18+
private final int index;
19+
20+
public static final Logger LOGGER = LoggerFactory.getLogger(ChannelConnectListener.class);
21+
22+
public ChannelConnectListener(Client client, int index) {
23+
this.client = client;
24+
this.index = index;
25+
}
26+
27+
@Override
28+
public void operationComplete(ChannelFuture future) {
29+
30+
ClientBuilder builder = client.getBuilder();
31+
32+
if (future.isSuccess()) {
33+
34+
client.registerChannel(index, future.channel());
35+
36+
if (client.getBuilder().getClientListener() != null) {
37+
client.getBuilder().getClientListener().afterConnected(future.channel());
38+
}
39+
LOGGER.info("成功连接到服务器,index->{}, host->{}, port->{}", index, builder.getHost(), builder.getPort());
40+
return;
41+
}
42+
43+
44+
LOGGER.error("连接服务器失败,index->{}, host->{}, port->{}", index, builder.getHost(), builder.getPort());
45+
46+
if (client.isStopped()) {
47+
LOGGER.error("客户端已经关闭不重连,index->{}, host->{}, port->{}", index, builder.getHost(), builder.getPort());
48+
} else if (!client.needReconnect) {
49+
LOGGER.error("重连功能关闭不重连,index->{}, host->{}, port->{}", index, builder.getHost(), builder.getPort());
50+
} else {
51+
52+
int reconnectDelay = client.getReconnectDelay(index);
53+
client.countReconnectDelay(index);
54+
55+
LOGGER.error("{}秒后进行重连,index->{}, host->{}, port->{}", reconnectDelay, index, builder.getHost(), builder.getPort());
56+
Client.executor.schedule(() -> {
57+
client.createChannel(index);
58+
}, reconnectDelay, TimeUnit.SECONDS);
59+
}
60+
61+
}
62+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package info.xiaomo.gengine.network.client;
2+
3+
import io.netty.channel.ChannelFuture;
4+
import io.netty.channel.ChannelFutureListener;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
8+
import java.util.concurrent.TimeUnit;
9+
10+
/**
11+
* Created by 张力 on 2017/6/30.
12+
*/
13+
public class ChannelDisconnectedListener implements ChannelFutureListener {
14+
15+
private static final Logger LOGGER = LoggerFactory.getLogger(ChannelDisconnectedListener.class);
16+
17+
private final Client client;
18+
19+
private final int index;
20+
21+
22+
public ChannelDisconnectedListener(Client client, int index) {
23+
this.client = client;
24+
this.index = index;
25+
}
26+
27+
@Override
28+
public void operationComplete(ChannelFuture future) {
29+
if (client.isStopped()) {
30+
LOGGER.info("连接断开,客户端已关闭不进行重连,host->{},port->{}", client.getBuilder().getHost(), client.getBuilder().getPort());
31+
} else if (!client.needReconnect) {
32+
LOGGER.info("连接断开,重连功能关闭不重连,host->{},port->{}", client.getBuilder().getHost(), client.getBuilder().getPort());
33+
} else {
34+
int reconnectDelay = client.getReconnectDelay(index);
35+
client.countReconnectDelay(index);
36+
37+
LOGGER.info("连接断开,{}秒后开始重连,host->{},port->{}", reconnectDelay, client.getBuilder().getHost(), client.getBuilder().getPort());
38+
39+
Client.executor.schedule(() -> {
40+
client.createChannel(index);
41+
}, reconnectDelay, TimeUnit.SECONDS);
42+
}
43+
}
44+
}

0 commit comments

Comments
 (0)