forked from yanatan16/thrift4go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
52 lines (34 loc) · 3.07 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
The contents of this repository are now part of Apache Thrift as of version 0.7 or commit revision 1072478 (https://issues.apache.org/jira/browse/THRIFT-625).
This project will continued to be maintained for any further developments for Thrift for Go as needed.
Add this git repository to your thrift checkout. It will overwrite a few files to add options for Go.
Currently generates code for the following protocols:
1) Binary Protocol (with test cases)
2) Fast Binary Protocol (with test cases)
3) Standard Thrift JSON Protocol (with test cases)
4) A (custom) simple JSON Protocol (with test cases)
5) Services (compiles and runs against Java, assumed to work elsewhere)
Tested on Mac OS X 10.6 (Snow Leopard)
To install in your Go Repository do:
goinstall github.com/pomack/thrift4go/lib/go/thrift
goinstall -a -log
4 files for thrift compiler (last tested on February 17, 2010):
1) configure.ac
2) lib/Makefile.am
3) compiler/cpp/Makefile.am
4) compiler/cpp/src/generate/t_go_generator.cc
A tutorial has been created in the thrift4go/tutorial/go/src directory
To use this tutorial, run
thrift -r --gen go --gen java <thrift_src_dir>/tutorial/tutorial.thrift
Build the files in the gen-go/ directory using gomake install
Build the files in the <thrift_src_dir>/tutorial/go directory using gomake install
Run the server from <thrift_src_dir>/tutorial/go/TutorialServerClient and run the client from either <thrift_src_dir>/tutorial/go/TutorialServerClient or gen-go/tutorial/Calculator/Calculator-remote
Make sure you specify the same protocol for both the server and client
Here's a basic walkthrough:
thrift --gen go --gen java <thrift_src_dir>/test/ThriftTest.thrift
this will create gen-go/thrift/test/*.go and associated files/directories
* gen-go/thrift/test/ThriftTest.go shows a service and client base implementation with the associated interfaces and the ability to send/receive or serialize/deserialize as necessary.
* ThriftTestClient is a client library designed to access the ThriftTest service. No changes would need to be made here.
* A ThriftTest/ThriftTest-remote.go and associated Makefile is also made available so you can access a remote service implementing the ThriftTest interface and see how the client side works under the covers. The command-line arguments use the custom JSON parser, so you can just pass in JSON strings as arguments when you need to populate a struct, which I find better than any other alternative.
* ThriftTestProcessor implements the server side and you would want to implement the server handlers using the function: NewThriftTestProcessor()
* You just pass in your handler that implements the IThriftTest interface and make sure you import the appropriate package. Package directories/names are shown in the relevant Makefile.
* One unique thing about Go is that to have a publicly available function/variable, the first letter has to be capitalized, so all exportable functions/variables have the first letter capitalized, but since the thrift files normally don't, they assume any serialization uses the capitalization found in the thrift file itself.