Skip to content

Commit 94ee605

Browse files
author
Peng Hu
committed
添加mysql引用
1 parent 6c57216 commit 94ee605

File tree

4 files changed

+183
-198
lines changed

4 files changed

+183
-198
lines changed

pom.xml

+5
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,11 @@
142142
<artifactId>yamlbeans</artifactId>
143143
<version>1.15</version>
144144
</dependency>
145+
<dependency>
146+
<groupId>mysql</groupId>
147+
<artifactId>mysql-connector-java</artifactId>
148+
<version>8.0.22</version>
149+
</dependency>
145150
</dependencies>
146151

147152
<build>

src/main/java/info/xiaomo/gengine/network/ISession.java

-11
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,6 @@
44
import io.netty.channel.Channel;
55

66
/**
7-
* 把今天最好的表现当作明天最新的起点..~
8-
* いま 最高の表現 として 明日最新の始発..~
9-
* Today the best performance as tomorrow newest starter!
10-
* Created by IntelliJ IDEA.
11-
* <p>
12-
* @author : xiaomo
13-
* github: https://github.com/xiaomoinfo
14-
* email : xiaomo@xiaomo.info
15-
* QQ : 83387856
16-
* Date : 2017/9/11 16:40
17-
* desc :
187
* Copyright(©) 2017 by xiaomo.
198
*/
209
public interface ISession {
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package info.xiaomo.gengine.network;
22

3-
import java.io.File;
4-
import java.util.concurrent.TimeUnit;
53
import info.xiaomo.gengine.network.handler.*;
64
import io.netty.bootstrap.ServerBootstrap;
75
import io.netty.channel.*;
@@ -17,183 +15,184 @@
1715
import io.netty.handler.ssl.SslContext;
1816
import io.netty.handler.ssl.SslContextBuilder;
1917
import io.netty.util.concurrent.Future;
20-
import org.slf4j.Logger;
21-
import org.slf4j.LoggerFactory;
18+
import lombok.extern.slf4j.Slf4j;
19+
20+
import java.io.File;
21+
import java.util.concurrent.TimeUnit;
2222

2323
/**
2424
* @author xiaomo
2525
*/
26+
@Slf4j
2627
public class NetworkServiceImpl implements IService {
2728

28-
private static final Logger LOGGER = LoggerFactory.getLogger(NetworkServiceImpl.class);
29-
30-
private int port;
31-
32-
private EventLoopGroup bossGroup;
33-
34-
private EventLoopGroup workerGroup;
35-
36-
private ServerBootstrap bootstrap;
37-
38-
private ServiceState state;
39-
40-
NetworkServiceImpl(final NetworkServiceBuilder builder) {
41-
int bossLoopGroupCount = builder.getBossLoopGroupCount();
42-
int workerLoopGroupCount = builder.getWorkerLoopGroupCount();
43-
this.port = builder.getPort();
44-
final SslContext sslCtx;
45-
46-
bossGroup = new NioEventLoopGroup(bossLoopGroupCount);
47-
workerGroup = new NioEventLoopGroup(workerLoopGroupCount);
48-
49-
if (builder.isSsl()) {
50-
try {
51-
File keyCertChainFile = new File(builder.getSslKeyCertChainFile());
52-
File keyFile = new File(builder.getSslKeyFile());
53-
sslCtx = SslContextBuilder.forServer(keyCertChainFile, keyFile).build();
54-
} catch (Exception var4) {
55-
throw new RuntimeException("sslCtx create failed.", var4);
56-
}
57-
} else {
58-
sslCtx = null;
59-
}
60-
bootstrap = new ServerBootstrap();
61-
bootstrap.group(bossGroup, workerGroup);
62-
bootstrap.channel(NioServerSocketChannel.class);
63-
bootstrap.option(ChannelOption.SO_BACKLOG, 1024);
64-
bootstrap.childOption(ChannelOption.TCP_NODELAY, true);
65-
bootstrap.childOption(ChannelOption.SO_RCVBUF, 128 * 1024);
66-
bootstrap.childOption(ChannelOption.SO_SNDBUF, 128 * 1024);
67-
68-
bootstrap.handler(new LoggingHandler(LogLevel.DEBUG));
69-
if (builder.isWebSocket()) {
70-
bootstrap.childHandler(new WebSocketHandler(builder, sslCtx));
71-
} else {
72-
bootstrap.childHandler(new SocketHandler(builder));
73-
}
74-
}
75-
76-
77-
/**
78-
* web socket的handler
79-
*/
80-
static class WebSocketHandler extends ChannelInitializer {
81-
private NetworkServiceBuilder builder;
82-
private SslContext sslCtx;
83-
84-
WebSocketHandler(NetworkServiceBuilder builder, SslContext sslCtx) {
85-
this.builder = builder;
86-
this.sslCtx = sslCtx;
87-
}
88-
89-
@Override
90-
protected void initChannel(Channel ch) {
91-
//添加web socket相关内容
92-
ChannelPipeline pip = ch.pipeline();
93-
if (sslCtx != null) {
94-
pip.addLast("sslHandler", sslCtx.newHandler(ch.alloc()));
95-
}
96-
pip.addLast(new HttpServerCodec());
97-
pip.addLast(new HttpObjectAggregator(65536));
98-
pip.addLast(new WebSocketServerProtocolHandler("/"));
99-
pip.addLast(new WebSocketDecoder());
100-
pip.addLast(new WebSocketEncoder());
101-
pip.addLast(new MessageDecoder(builder.getImessageandhandler()));
102-
pip.addLast(new MessageExecutor(builder.getConsumer(), builder.getListener()));
103-
for (ChannelHandler handler : builder.getExtraHandlers()) {
104-
pip.addLast(handler);
105-
}
106-
}
107-
}
108-
109-
110-
/**
111-
* socket的handler
112-
*/
113-
static class SocketHandler extends ChannelInitializer {
114-
private NetworkServiceBuilder builder;
115-
116-
SocketHandler(NetworkServiceBuilder builder) {
117-
this.builder = builder;
118-
}
119-
120-
@Override
121-
protected void initChannel(Channel ch) {
122-
ChannelPipeline pip = ch.pipeline();
123-
int maxLength = 1048576;
124-
int lengthFieldLength = 4;
125-
int ignoreLength = -4;
126-
int offset = 0;
127-
pip.addLast(new LengthFieldBasedFrameDecoder(maxLength, offset, lengthFieldLength, ignoreLength, lengthFieldLength));
128-
pip.addLast(new MessageDecoder(builder.getImessageandhandler()));
129-
pip.addLast(new LengthFieldPrepender(4, true));
130-
pip.addLast(new MessageEncoder(builder.getImessageandhandler()));
131-
pip.addLast(new MessageExecutor(builder.getConsumer(), builder.getListener()));
132-
for (ChannelHandler handler : builder.getExtraHandlers()) {
133-
pip.addLast(handler);
134-
}
135-
}
136-
}
137-
138-
139-
@Override
140-
public void start() {
141-
try {
142-
ChannelFuture f = bootstrap.bind(port);
143-
f.sync();
144-
} catch (Exception e) {
145-
throw new RuntimeException(e);
146-
}
147-
this.state = ServiceState.RUNNING;
148-
LOGGER.info("Server on port:{} is start", port);
149-
}
150-
151-
152-
/**
153-
* 停止網絡服務
154-
*/
155-
@Override
156-
public void stop() {
157-
this.state = ServiceState.STOPPED;
158-
Future<?> bf = bossGroup.shutdownGracefully();
159-
Future<?> wf = workerGroup.shutdownGracefully();
160-
try {
161-
bf.get(5000, TimeUnit.MILLISECONDS);
162-
wf.get(5000, TimeUnit.MILLISECONDS);
163-
} catch (Exception e) {
164-
LOGGER.info("Netty服务器关闭失败", e);
165-
}
166-
LOGGER.info("Netty Server on port:{} is closed", port);
167-
}
168-
169-
170-
/**
171-
* 獲取當前網絡服務狀態
172-
*
173-
* @return state
174-
*/
175-
@Override
176-
public ServiceState getState() {
177-
return this.state;
178-
}
179-
180-
/**
181-
* 服務是否開啟
182-
*
183-
* @return bool
184-
*/
185-
@Override
186-
public boolean isOpened() {
187-
return state == ServiceState.RUNNING;
188-
}
189-
190-
/**
191-
* 服務是否關閉
192-
*
193-
* @return bool
194-
*/
195-
@Override
196-
public boolean isClosed() {
197-
return state == ServiceState.STOPPED;
198-
}
29+
private final int port;
30+
31+
private final EventLoopGroup bossGroup;
32+
33+
private final EventLoopGroup workerGroup;
34+
35+
private final ServerBootstrap bootstrap;
36+
37+
private ServiceState state;
38+
39+
NetworkServiceImpl(final NetworkServiceBuilder builder) {
40+
int bossLoopGroupCount = builder.getBossLoopGroupCount();
41+
int workerLoopGroupCount = builder.getWorkerLoopGroupCount();
42+
this.port = builder.getPort();
43+
final SslContext sslCtx;
44+
45+
bossGroup = new NioEventLoopGroup(bossLoopGroupCount);
46+
workerGroup = new NioEventLoopGroup(workerLoopGroupCount);
47+
48+
if (builder.isSsl()) {
49+
try {
50+
File keyCertChainFile = new File(builder.getSslKeyCertChainFile());
51+
File keyFile = new File(builder.getSslKeyFile());
52+
sslCtx = SslContextBuilder.forServer(keyCertChainFile, keyFile).build();
53+
} catch (Exception var4) {
54+
throw new RuntimeException("sslCtx create failed.", var4);
55+
}
56+
} else {
57+
sslCtx = null;
58+
}
59+
bootstrap = new ServerBootstrap();
60+
bootstrap.group(bossGroup, workerGroup);
61+
bootstrap.channel(NioServerSocketChannel.class);
62+
bootstrap.option(ChannelOption.SO_BACKLOG, 1024);
63+
bootstrap.childOption(ChannelOption.TCP_NODELAY, true);
64+
bootstrap.childOption(ChannelOption.SO_RCVBUF, 128 * 1024);
65+
bootstrap.childOption(ChannelOption.SO_SNDBUF, 128 * 1024);
66+
67+
bootstrap.handler(new LoggingHandler(LogLevel.DEBUG));
68+
if (builder.isWebSocket()) {
69+
bootstrap.childHandler(new WebSocketHandler(builder, sslCtx));
70+
} else {
71+
bootstrap.childHandler(new SocketHandler(builder));
72+
}
73+
}
74+
75+
76+
/**
77+
* web socket的handler
78+
*/
79+
static class WebSocketHandler extends ChannelInitializer<Channel> {
80+
private final NetworkServiceBuilder builder;
81+
private final SslContext sslCtx;
82+
83+
WebSocketHandler(NetworkServiceBuilder builder, SslContext sslCtx) {
84+
this.builder = builder;
85+
this.sslCtx = sslCtx;
86+
}
87+
88+
@Override
89+
protected void initChannel(Channel ch) {
90+
//添加web socket相关内容
91+
ChannelPipeline pip = ch.pipeline();
92+
if (sslCtx != null) {
93+
pip.addLast("sslHandler", sslCtx.newHandler(ch.alloc()));
94+
}
95+
pip.addLast(new HttpServerCodec());
96+
pip.addLast(new HttpObjectAggregator(65536));
97+
pip.addLast(new WebSocketServerProtocolHandler("/"));
98+
pip.addLast(new WebSocketDecoder());
99+
pip.addLast(new WebSocketEncoder());
100+
pip.addLast(new MessageDecoder(builder.getImessageandhandler()));
101+
pip.addLast(new MessageExecutor(builder.getConsumer(), builder.getListener()));
102+
for (ChannelHandler handler : builder.getExtraHandlers()) {
103+
pip.addLast(handler);
104+
}
105+
}
106+
}
107+
108+
109+
/**
110+
* socket的handler
111+
*/
112+
static class SocketHandler extends ChannelInitializer<Channel> {
113+
private final NetworkServiceBuilder builder;
114+
115+
SocketHandler(NetworkServiceBuilder builder) {
116+
this.builder = builder;
117+
}
118+
119+
@Override
120+
protected void initChannel(Channel ch) {
121+
ChannelPipeline pip = ch.pipeline();
122+
int maxLength = 1048576;
123+
int lengthFieldLength = 4;
124+
int ignoreLength = -4;
125+
int offset = 0;
126+
pip.addLast(new LengthFieldBasedFrameDecoder(maxLength, offset, lengthFieldLength, ignoreLength, lengthFieldLength));
127+
pip.addLast(new MessageDecoder(builder.getImessageandhandler()));
128+
pip.addLast(new LengthFieldPrepender(4, true));
129+
pip.addLast(new MessageEncoder(builder.getImessageandhandler()));
130+
pip.addLast(new MessageExecutor(builder.getConsumer(), builder.getListener()));
131+
for (ChannelHandler handler : builder.getExtraHandlers()) {
132+
pip.addLast(handler);
133+
}
134+
}
135+
}
136+
137+
138+
@Override
139+
public void start() {
140+
try {
141+
ChannelFuture f = bootstrap.bind(port);
142+
f.sync();
143+
} catch (Exception e) {
144+
throw new RuntimeException(e);
145+
}
146+
this.state = ServiceState.RUNNING;
147+
log.info("Server on port:{} is start", port);
148+
}
149+
150+
151+
/**
152+
* 停止網絡服務
153+
*/
154+
@Override
155+
public void stop() {
156+
this.state = ServiceState.STOPPED;
157+
Future<?> bf = bossGroup.shutdownGracefully();
158+
Future<?> wf = workerGroup.shutdownGracefully();
159+
try {
160+
bf.get(5000, TimeUnit.MILLISECONDS);
161+
wf.get(5000, TimeUnit.MILLISECONDS);
162+
} catch (Exception e) {
163+
log.info("Netty服务器关闭失败", e);
164+
}
165+
log.info("Netty Server on port:{} is closed", port);
166+
}
167+
168+
169+
/**
170+
* 獲取當前網絡服務狀態
171+
*
172+
* @return state
173+
*/
174+
@Override
175+
public ServiceState getState() {
176+
return this.state;
177+
}
178+
179+
/**
180+
* 服務是否開啟
181+
*
182+
* @return bool
183+
*/
184+
@Override
185+
public boolean isOpened() {
186+
return state == ServiceState.RUNNING;
187+
}
188+
189+
/**
190+
* 服務是否關閉
191+
*
192+
* @return bool
193+
*/
194+
@Override
195+
public boolean isClosed() {
196+
return state == ServiceState.STOPPED;
197+
}
199198
}

0 commit comments

Comments
 (0)