Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
caopu16
whatsmars
提交
17752e7a
W
whatsmars
项目概览
caopu16
/
whatsmars
与 Fork 源项目一致
Fork自
武汉红喜 / whatsmars
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
whatsmars
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
17752e7a
编写于
10月 07, 2018
作者:
武汉红喜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
lightrpc-serialization
上级
5726f205
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
137 addition
and
0 deletion
+137
-0
whatsmars-lightrpc/lightrpc-serialization/pom.xml
whatsmars-lightrpc/lightrpc-serialization/pom.xml
+26
-0
whatsmars-lightrpc/lightrpc-serialization/src/main/java/org/hongxi/lightrpc/codec/Serialization.java
...rc/main/java/org/hongxi/lightrpc/codec/Serialization.java
+23
-0
whatsmars-lightrpc/lightrpc-serialization/src/main/java/org/hongxi/lightrpc/serialization/DeserializableObject.java
...g/hongxi/lightrpc/serialization/DeserializableObject.java
+30
-0
whatsmars-lightrpc/lightrpc-serialization/src/main/java/org/hongxi/lightrpc/serialization/Hessian2Serialization.java
.../hongxi/lightrpc/serialization/Hessian2Serialization.java
+57
-0
whatsmars-lightrpc/pom.xml
whatsmars-lightrpc/pom.xml
+1
-0
未找到文件。
whatsmars-lightrpc/lightrpc-serialization/pom.xml
0 → 100644
浏览文件 @
17752e7a
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
lightrpc
</artifactId>
<groupId>
org.hongxi
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
lightrpc-serialization
</artifactId>
<packaging>
jar
</packaging>
<name>
${project.artifactId}
</name>
<url>
http://maven.apache.org
</url>
<dependencies>
<dependency>
<groupId>
com.caucho
</groupId>
<artifactId>
hessian
</artifactId>
<version>
4.0.38
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
whatsmars-lightrpc/lightrpc-serialization/src/main/java/org/hongxi/lightrpc/codec/Serialization.java
0 → 100644
浏览文件 @
17752e7a
package
org.hongxi.lightrpc.codec
;
import
java.io.IOException
;
/**
* Created by shenhongxi on 2018/10/7.
*/
public
interface
Serialization
{
byte
[]
serialize
(
Object
obj
)
throws
IOException
;
<
T
>
T
deserialize
(
byte
[]
bytes
,
Class
<
T
>
clz
)
throws
IOException
;
byte
[]
serializeMulti
(
Object
[]
data
)
throws
IOException
;
Object
[]
deserializeMulti
(
byte
[]
data
,
Class
<?>[]
classes
)
throws
IOException
;
/**
* serializaion的唯一编号,用于传输协议中指定序列化方式。每种序列化的编号必须唯一。
* @return 由于编码规范限制,序列化方式最大支持32种,因此返回值必须在0-31之间。
*/
int
getSerializationNumber
();
}
whatsmars-lightrpc/lightrpc-serialization/src/main/java/org/hongxi/lightrpc/serialization/DeserializableObject.java
0 → 100644
浏览文件 @
17752e7a
package
org.hongxi.lightrpc.serialization
;
import
org.hongxi.lightrpc.codec.Serialization
;
import
java.io.IOException
;
/**
* Created by shenhongxi on 2018/10/7.
*/
public
class
DeserializableObject
{
private
Serialization
serialization
;
private
byte
[]
objBytes
;
public
DeserializableObject
(
Serialization
serialization
,
byte
[]
objBytes
)
{
this
.
serialization
=
serialization
;
this
.
objBytes
=
objBytes
;
}
public
<
T
>
T
deserialize
(
Class
<
T
>
clz
)
throws
IOException
{
return
serialization
.
deserialize
(
objBytes
,
clz
);
}
public
Object
[]
deserializeMulti
(
Class
<?>[]
paramTypes
)
throws
IOException
{
Object
[]
ret
=
null
;
if
(
paramTypes
!=
null
&&
paramTypes
.
length
>
0
)
{
ret
=
serialization
.
deserializeMulti
(
objBytes
,
paramTypes
);
}
return
ret
;
}
}
whatsmars-lightrpc/lightrpc-serialization/src/main/java/org/hongxi/lightrpc/serialization/Hessian2Serialization.java
0 → 100644
浏览文件 @
17752e7a
package
org.hongxi.lightrpc.serialization
;
import
com.caucho.hessian.io.Hessian2Input
;
import
com.caucho.hessian.io.Hessian2Output
;
import
org.hongxi.lightrpc.codec.Serialization
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
/**
* Created by shenhongxi on 2018/10/7.
*/
public
class
Hessian2Serialization
implements
Serialization
{
@Override
public
byte
[]
serialize
(
Object
data
)
throws
IOException
{
ByteArrayOutputStream
bos
=
new
ByteArrayOutputStream
();
Hessian2Output
out
=
new
Hessian2Output
(
bos
);
out
.
writeObject
(
data
);
out
.
flush
();
return
bos
.
toByteArray
();
}
@SuppressWarnings
(
"unchecked"
)
@Override
public
<
T
>
T
deserialize
(
byte
[]
data
,
Class
<
T
>
clz
)
throws
IOException
{
Hessian2Input
input
=
new
Hessian2Input
(
new
ByteArrayInputStream
(
data
));
return
(
T
)
input
.
readObject
(
clz
);
}
@Override
public
byte
[]
serializeMulti
(
Object
[]
data
)
throws
IOException
{
ByteArrayOutputStream
bos
=
new
ByteArrayOutputStream
();
Hessian2Output
out
=
new
Hessian2Output
(
bos
);
for
(
Object
obj:
data
){
out
.
writeObject
(
obj
);
}
out
.
flush
();
return
bos
.
toByteArray
();
}
@Override
public
Object
[]
deserializeMulti
(
byte
[]
data
,
Class
<?>[]
classes
)
throws
IOException
{
Hessian2Input
input
=
new
Hessian2Input
(
new
ByteArrayInputStream
(
data
));
Object
[]
objects
=
new
Object
[
classes
.
length
];
for
(
int
i
=
0
;
i
<
classes
.
length
;
i
++)
{
objects
[
i
]
=
input
.
readObject
(
classes
[
i
]);
}
return
objects
;
}
@Override
public
int
getSerializationNumber
()
{
return
0
;
}
}
whatsmars-lightrpc/pom.xml
浏览文件 @
17752e7a
...
...
@@ -15,6 +15,7 @@
<modules>
<module>
lightrpc-rpc
</module>
<module>
lightrpc-remoting
</module>
<module>
lightrpc-serialization
</module>
</modules>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录