前情提要
之前先容了TProcessor的同步和异步实现,也阐明了TAsyncMethodCall中的状态循环以及它是如何和TServer进行交互的。
TProtocol
TProtocol 是一个抽象类,主要做了两件事变:
- 绑定一个TTransport
- 界说一系列读写消息的编解码接口。包括两类,一类是复杂数据布局比如readMessageBegin, readMessageEnd, writeMessageBegin, writMessageEnd.还有一类是根本数据布局,比如readI32, writeI32, readString, writeString
Schema
在编译完IDL之后,会生成一系列“方法名_args”/“方法名_result”的静态类,比如我有一个“add”方法。我就会生成add_args 和 add_result 两个类。
在Client中可以直接看到对这两个类的实例化:- public void send_add(int arg1, int arg2) throws TException
- {
- add_args args = new add_args(); // 这里
- args.setArg1(arg1);
- args.setArg2(arg2);
- sendBase("add", args);
- }
复制代码 回到静态类中,这里以add_args为例子,可以看到里面有一个静态代码块,初始化了两个Schema。
[code]public static class add_args implements org.apache.thrift.TBase, java.io.Serializable, Cloneable, Comparable { //... private static final Map |