分类 : 31个相关结果 136次浏览

proto文件定义 // Interface exported by the server. service RouteGuide { // 一个标准的rpc调用 rpc GetFeature(Point) returns (Feature) {} // 一个server返回给客户端一个stream的调用 rpc ListFeatures(Rectangle …

protobuf原生的异步调用 void DoneCallback(PingMessage *response) { } void async_test() { RpcClient client("127.0.0.1", 8000); PingService::Stub stub(client.Channel()); if (!clien …

Channel Channel层中有关的几个类: grpc_channel, grpc_channel_stack, grpc_channel_element, grpc_call_stack, grpc_call_element, grpc_channel_filter: 其中grpc_channel_stack与grpc_channel_element用 …

GPRC同步调用分析

GRPC 对于写过rpc底层框架的人来说,都会去考虑怎么怎么通过方法名去执行service中对应函数的方式,对于java这样反射能力强的语言,可以很方便的通过一个字符串得到一个类的Method对象,然后再去调用invoke方法来执行;但是对于像c/cpp这样没有反射的语言,它怎么去通过方法名执行具体的方法呢? 最简单的想法是: class Hello { p …

减小动态库大小

ELF文件类型: ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。它自最早在 System V 系统上出现后,被 xNIX 世界所广泛接受,作为缺省的二进制文件格式来使用。可以说,ELF是构成众多xNIX系统的基 …

在使用map的operator[]和find(),遇到一个问题,发现不知怎么的,本来已经删除的项,在find()时,居然已经不等于end()了。 查看map的[]方法说明才发现: mapped_type& operator[] (const key_type& k); mapped_type& operator[] (key_type …

区别 kqueue和epoll是freebsd和linux下用于大规模网络io复用的方法。它们之前和很多相似之处。但也有些地方要注意: select/poll/epoll还不支持普通文件,而kqueue支持; kqueue可以多次add,它通过<fd, filter>的组合作为不同过滤器之间的标志,如果这两个键完全相同,则直接覆盖; epoll以 …

网络通信中的close时注意事项

socket关闭时的一个简单的流程: read函数当接收到一个FIN时,会返回0,所以可以通过它来判断另一端是否已经关闭了。 当A方调用close时,另一方B read会返回0,如果B没有调用close,则B会到CLOSE_WAIT,而A停在了FIN_TIME2. 所以在写程序的时候,要注意,一次关闭操作,两端都会有close的调用。 另外要注意如果是主动关 …

stl中算法分成两类,一类是与stl中特定的数据结构相关的,另一类是通用的;与特定数据结构相关的在容器里有讲到,比如二叉树、红黑树相关的算法。下面讲的是通用的算法。算法一般的前两个参数都要指定一个区间范围[fist, last),并且也会有一个参数用来传递一个仿函数,用于算法内部,比如sort,要用到相等比较,但是一个自定义的类型,可能没有定义equal方法 …

stl源码笔记__关联容器_hashtable

hashtable hashtable,hash_set,hash_map在c++4.9.1的源码中都存在两份,一份是最新默认使用的,另一份在backward的文件夹中。而backward文件夹中的代码更接近是《stl源码剖析》中提到的那样。不过下面,还是以最新的代码来看看它的结构。最新的hashtable异常复杂。 通过c++11中的unordered_m …