在apache thrift中有没有像import这样的导入语句?

时间:2014-02-12 07:37:38

标签: thrift

我想在IDL文件中定义几个结构。然后在服务中返回该结构类型的对象。要做到这一点,我必须导入该结构。如何在IDL中导入它们。

namespace java abc.xyz

struct struct_{
    1:string s
    2:bool b

}

service struct_test{
    struct_ getstruct_()
}

2 个答案:

答案 0 :(得分:4)

是的,正如@ Vj-正确指出的那样:

include "path/to/file.thrift"

顺便说一句,在调用编译器时,可以使用-r(用于递归)为所有 thrift IDL生成包含所包含文件的代码。

要了解两件重要事项:

(1)包含文件中的定义使用前缀在包含文件中引用,前缀来自包含的IDL的文件名。本教程有一个很好的例子(注意shared前缀):

include "shared.thrift"

service Calculator extends shared.SharedService {
    // more code
}

(2)建议在每个IDL文件中声明不同的命名空间。否则可能会发生一些目标语言(例如PHP),从外部IDL生成的代码会覆盖从内部IDL生成的代码,因为使用了相同的输出文件夹。

例如:

namespace * tutorial

namespace * shared

答案 1 :(得分:3)

只需将以下内容添加到.thrift文件的开头即可。

include "path/to/file.thrift"

请注意文件名末尾的.thrift扩展名。

给出的路径是相对的,如果没有给出,则搜索当前目录。