Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
西红柿炒蛋不加盐
guide-rpc-framework
提交
801287f4
G
guide-rpc-framework
项目概览
西红柿炒蛋不加盐
/
guide-rpc-framework
与 Fork 源项目一致
Fork自
嗝屁小孩纸 / guide-rpc-framework
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
guide-rpc-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
801287f4
编写于
11月 11, 2020
作者:
G
guide
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[refractor]duplicate code
上级
914bbad9
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
15 addition
and
24 deletion
+15
-24
rpc-framework-common/src/main/java/github/javaguide/enums/SerializationTypeEnum.java
...in/java/github/javaguide/enums/SerializationTypeEnum.java
+2
-1
rpc-framework-simple/src/main/java/github/javaguide/remoting/transport/netty/client/NettyClientHandler.java
...e/remoting/transport/netty/client/NettyClientHandler.java
+1
-1
rpc-framework-simple/src/main/java/github/javaguide/remoting/transport/netty/client/NettyClientTransport.java
...remoting/transport/netty/client/NettyClientTransport.java
+1
-1
rpc-framework-simple/src/main/java/github/javaguide/remoting/transport/netty/codec/RpcMessageDecoder.java
...ide/remoting/transport/netty/codec/RpcMessageDecoder.java
+1
-0
rpc-framework-simple/src/main/java/github/javaguide/remoting/transport/netty/codec/RpcMessageEncoder.java
...ide/remoting/transport/netty/codec/RpcMessageEncoder.java
+1
-0
rpc-framework-simple/src/main/java/github/javaguide/remoting/transport/netty/server/NettyServerHandler.java
...e/remoting/transport/netty/server/NettyServerHandler.java
+6
-16
rpc-framework-simple/src/main/java/github/javaguide/serialize/protostuff/ProtostuffSerializer.java
.../javaguide/serialize/protostuff/ProtostuffSerializer.java
+3
-5
未找到文件。
rpc-framework-common/src/main/java/github/javaguide/enums/SerializationTypeEnum.java
浏览文件 @
801287f4
...
...
@@ -11,7 +11,8 @@ import lombok.Getter;
@Getter
public
enum
SerializationTypeEnum
{
KYRO
((
byte
)
0x01
,
"kyro"
);
KYRO
((
byte
)
0x01
,
"kyro"
),
PROTOSTUFF
((
byte
)
0x02
,
"protostuff"
);;
private
final
byte
code
;
private
final
String
name
;
...
...
rpc-framework-simple/src/main/java/github/javaguide/remoting/transport/netty/client/NettyClientHandler.java
浏览文件 @
801287f4
...
...
@@ -69,7 +69,7 @@ public class NettyClientHandler extends ChannelInboundHandlerAdapter {
log
.
info
(
"write idle happen [{}]"
,
ctx
.
channel
().
remoteAddress
());
Channel
channel
=
channelProvider
.
get
((
InetSocketAddress
)
ctx
.
channel
().
remoteAddress
());
RpcMessage
rpcMessage
=
new
RpcMessage
();
rpcMessage
.
setCodec
(
SerializationTypeEnum
.
KYRO
.
getCode
());
rpcMessage
.
setCodec
(
SerializationTypeEnum
.
PROTOSTUFF
.
getCode
());
rpcMessage
.
setCompress
(
CompressTypeEnum
.
GZIP
.
getCode
());
rpcMessage
.
setMessageType
(
RpcConstants
.
HEARTBEAT_REQUEST_TYPE
);
rpcMessage
.
setData
(
RpcConstants
.
PING
);
...
...
rpc-framework-simple/src/main/java/github/javaguide/remoting/transport/netty/client/NettyClientTransport.java
浏览文件 @
801287f4
...
...
@@ -50,7 +50,7 @@ public class NettyClientTransport implements ClientTransport {
unprocessedRequests
.
put
(
rpcRequest
.
getRequestId
(),
resultFuture
);
RpcMessage
rpcMessage
=
new
RpcMessage
();
rpcMessage
.
setData
(
rpcRequest
);
rpcMessage
.
setCodec
(
SerializationTypeEnum
.
KYRO
.
getCode
());
rpcMessage
.
setCodec
(
SerializationTypeEnum
.
PROTOSTUFF
.
getCode
());
rpcMessage
.
setCompress
(
CompressTypeEnum
.
GZIP
.
getCode
());
rpcMessage
.
setMessageType
(
RpcConstants
.
REQUEST_TYPE
);
channel
.
writeAndFlush
(
rpcMessage
).
addListener
((
ChannelFutureListener
)
future
->
{
...
...
rpc-framework-simple/src/main/java/github/javaguide/remoting/transport/netty/codec/RpcMessageDecoder.java
浏览文件 @
801287f4
...
...
@@ -128,6 +128,7 @@ public class RpcMessageDecoder extends LengthFieldBasedFrameDecoder {
bs
=
compress
.
decompress
(
bs
);
// deserialize the object
String
codecName
=
SerializationTypeEnum
.
getName
(
rpcMessage
.
getCodec
());
log
.
info
(
"codec name: [{}] "
,
codecName
);
Serializer
serializer
=
ExtensionLoader
.
getExtensionLoader
(
Serializer
.
class
)
.
getExtension
(
codecName
);
if
(
messageType
==
RpcConstants
.
REQUEST_TYPE
)
{
...
...
rpc-framework-simple/src/main/java/github/javaguide/remoting/transport/netty/codec/RpcMessageEncoder.java
浏览文件 @
801287f4
...
...
@@ -64,6 +64,7 @@ public class RpcMessageEncoder extends MessageToByteEncoder<RpcMessage> {
&&
messageType
!=
RpcConstants
.
HEARTBEAT_RESPONSE_TYPE
)
{
// serialize the object
String
codecName
=
SerializationTypeEnum
.
getName
(
rpcMessage
.
getCodec
());
log
.
info
(
"codec name: [{}] "
,
codecName
);
Serializer
serializer
=
ExtensionLoader
.
getExtensionLoader
(
Serializer
.
class
)
.
getExtension
(
codecName
);
bodyBytes
=
serializer
.
serialize
(
rpcMessage
.
getData
());
...
...
rpc-framework-simple/src/main/java/github/javaguide/remoting/transport/netty/server/NettyServerHandler.java
浏览文件 @
801287f4
...
...
@@ -2,13 +2,13 @@ package github.javaguide.remoting.transport.netty.server;
import
github.javaguide.enums.CompressTypeEnum
;
import
github.javaguide.enums.RpcResponseCodeEnum
;
import
github.javaguide.enums.SerializationTypeEnum
;
import
github.javaguide.factory.SingletonFactory
;
import
github.javaguide.remoting.constants.RpcConstants
;
import
github.javaguide.remoting.dto.RpcMessage
;
import
github.javaguide.remoting.dto.RpcRequest
;
import
github.javaguide.remoting.dto.RpcResponse
;
import
github.javaguide.remoting.handler.RpcRequestHandler
;
import
github.javaguide.enums.SerializationTypeEnum
;
import
io.netty.channel.ChannelFutureListener
;
import
io.netty.channel.ChannelHandlerContext
;
import
io.netty.channel.ChannelInboundHandlerAdapter
;
...
...
@@ -42,38 +42,28 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
if
(
msg
instanceof
RpcMessage
)
{
log
.
info
(
"server receive msg: [{}] "
,
msg
);
byte
messageType
=
((
RpcMessage
)
msg
).
getMessageType
();
RpcMessage
rpcMessage
=
new
RpcMessage
();
rpcMessage
.
setCodec
(
SerializationTypeEnum
.
PROTOSTUFF
.
getCode
());
rpcMessage
.
setCompress
(
CompressTypeEnum
.
GZIP
.
getCode
());
if
(
messageType
==
RpcConstants
.
HEARTBEAT_REQUEST_TYPE
)
{
RpcMessage
rpcMessage
=
new
RpcMessage
();
rpcMessage
.
setCodec
(
SerializationTypeEnum
.
KYRO
.
getCode
());
rpcMessage
.
setCompress
(
CompressTypeEnum
.
GZIP
.
getCode
());
rpcMessage
.
setMessageType
(
RpcConstants
.
HEARTBEAT_RESPONSE_TYPE
);
rpcMessage
.
setData
(
RpcConstants
.
PONG
);
ctx
.
writeAndFlush
(
rpcMessage
).
addListener
(
ChannelFutureListener
.
CLOSE_ON_FAILURE
);
}
else
{
RpcRequest
rpcRequest
=
(
RpcRequest
)
((
RpcMessage
)
msg
).
getData
();
// Execute the target method (the method the client needs to execute) and return the method result
Object
result
=
rpcRequestHandler
.
handle
(
rpcRequest
);
log
.
info
(
String
.
format
(
"server get result: %s"
,
result
.
toString
()));
rpcMessage
.
setMessageType
(
RpcConstants
.
RESPONSE_TYPE
);
if
(
ctx
.
channel
().
isActive
()
&&
ctx
.
channel
().
isWritable
())
{
RpcResponse
<
Object
>
rpcResponse
=
RpcResponse
.
success
(
result
,
rpcRequest
.
getRequestId
());
RpcMessage
rpcMessage
=
new
RpcMessage
();
rpcMessage
.
setCodec
(
SerializationTypeEnum
.
KYRO
.
getCode
());
rpcMessage
.
setCompress
(
CompressTypeEnum
.
GZIP
.
getCode
());
rpcMessage
.
setMessageType
(
RpcConstants
.
RESPONSE_TYPE
);
rpcMessage
.
setData
(
rpcResponse
);
ctx
.
writeAndFlush
(
rpcMessage
).
addListener
(
ChannelFutureListener
.
CLOSE_ON_FAILURE
);
}
else
{
RpcResponse
<
Object
>
rpcResponse
=
RpcResponse
.
fail
(
RpcResponseCodeEnum
.
FAIL
);
RpcMessage
rpcMessage
=
new
RpcMessage
();
rpcMessage
.
setCodec
(
SerializationTypeEnum
.
KYRO
.
getCode
());
rpcMessage
.
setCompress
(
CompressTypeEnum
.
GZIP
.
getCode
());
rpcMessage
.
setMessageType
(
RpcConstants
.
RESPONSE_TYPE
);
rpcMessage
.
setData
(
rpcResponse
);
ctx
.
writeAndFlush
(
rpcMessage
).
addListener
(
ChannelFutureListener
.
CLOSE_ON_FAILURE
);
log
.
error
(
"not writable now, message dropped"
);
}
}
ctx
.
writeAndFlush
(
rpcMessage
).
addListener
(
ChannelFutureListener
.
CLOSE_ON_FAILURE
);
}
}
finally
{
//Ensure that ByteBuf is released, otherwise there may be memory leaks
...
...
rpc-framework-simple/src/main/java/github/javaguide/serialize/protostuff/ProtostuffSerializer.java
浏览文件 @
801287f4
package
github.javaguide.serialize.protostuff
;
import
github.javaguide.remoting.dto.RpcMessage
;
import
github.javaguide.serialize.Serializer
;
import
io.protostuff.LinkedBuffer
;
import
io.protostuff.ProtostuffIOUtil
;
...
...
@@ -16,18 +15,17 @@ public class ProtostuffSerializer implements Serializer {
/**
* Avoid re applying buffer space every time serialization
*/
private
static
LinkedBuffer
buffer
=
LinkedBuffer
.
allocate
(
LinkedBuffer
.
DEFAULT_BUFFER_SIZE
);
private
static
final
LinkedBuffer
BUFFER
=
LinkedBuffer
.
allocate
(
LinkedBuffer
.
DEFAULT_BUFFER_SIZE
);
@SuppressWarnings
(
"unchecked"
)
@Override
public
byte
[]
serialize
(
Object
obj
)
{
Class
<?>
clazz
=
obj
.
getClass
();
Schema
schema
=
RuntimeSchema
.
getSchema
(
clazz
);
byte
[]
bytes
;
try
{
bytes
=
ProtostuffIOUtil
.
toByteArray
(
obj
,
schema
,
buffer
);
bytes
=
ProtostuffIOUtil
.
toByteArray
(
obj
,
schema
,
BUFFER
);
}
finally
{
buffer
.
clear
();
BUFFER
.
clear
();
}
return
bytes
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录