
记录一些不错的rpc描述:
c++简陋实现
java实现,多线程
原理展示
python的简陋rpc实现
推荐:逐步完善的py实现rpc
前提:模板编程、<<运算符重载、序列化概念、ZeroMQ
序列化这个代码的序列化很简陋,大致就是强制类型转换为字节指针
先看serializer_test.cpp中的测试代码: 可以看出支持连续序列化
void test1()
{
int a = 100;
std::string c = "hello";
Serializer sr;
sr << a; //序列化//对应的函数返回sr自身//我等于我自己
sr << c;
int b = 0;
std::string d;
sr >> b; //反序列化
sr >> d;
std::cout << "b=" << b << ", d=" << d << std::endl;
}
查看<< 与>>对应的代码:
templateSerializer &operator<<(T i) //序列化实际调用点 { input_type(i); return *this; //这种写法用于返回自身//return this 用于返回自己的地址 }
再看input_type的实现:
templateinline void Serializer::input_type(T v) { size_t len = sizeof(v); char *p = reinterpret_cast (&v); //用这种方式进行序列化?reininterpret强制类型转化 byteOrder(p, len); input(p, len); //把转换后的字节流添加到类内buffer }
最后是input函数
void input(const char *data, int len) { buffer_->append(data, len); } //仅仅是添加到buffer尾巴
网络传输
后面想起来再更新吧



