介绍
Searpc
是Seafile
项目中基于GObject
系统的一个简单的C语言RPC框架,当然为了使其Web
框架Seahub
通配,所以也支持了python
语言。
github地址: https://github.com/haiwen/libsearpc
框架目录
➜ libsearpc git:(master) ✗ tree -L 1
.
├── AUTHORS
├── ChangeLog
├── INSTALL
├── LICENSE.txt
├── Makefile.am
├── NEWS
├── README.markdown
├── autogen.sh
├── configure.ac
├── debian
├── demo
├── lib
├── libsearpc.pc.in
├── libsearpc.sln
├── libsearpc.vcxproj
├── m4
├── po
├── pysearpc
└── tests
其PRC
功能在lib
目录下基于C
语言实现,在pysearpc
目录下基于python
语言实现。
且其基于C
语言和基于python
语言的实现是一一对应的。
lib
lib
目录:
➜ lib git:(master) ✗ tree -L 1
.
├── Makefile.am
├── searpc-client.c
├── searpc-client.h
├── searpc-codegen.py
├── searpc-named-pipe-transport.c
├── searpc-named-pipe-transport.h
├── searpc-server.c
├── searpc-server.h
├── searpc-utils.c
├── searpc-utils.h
└── searpc.h
pysearpc
pysearpc
目录:
➜ pysearpc git:(master) ✗ tree -L 1
.
├── Makefile.am
├── __init__.py
├── client.py
├── common.py
├── errors.py
├── named_pipe.py
├── pygencode.py
├── server.py
├── test_pysearpc.py
├── transport.py
└── utils.py
librpc
同样实现了一般rpc
应具有的功能,例如通讯,服务注册,远程接口注册,数据序列化等。后面会对照着代码看这些功能具体是怎么实现的。