├── .gitignore ├── README.md ├── tarsgo-client ├── Hello.tars ├── HelloClient.go ├── SayHelloClient.go └── vendor │ └── TestApp │ ├── SayHello_IF.go │ └── Hello_IF.go └── tarsgo-server ├── Hello.tars ├── SayHelloImp.go ├── HelloImp.go ├── main.go ├── config.conf └── vendor └── TestApp ├── SayHello_IF.go └── Hello_IF.go /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **TarsGo使用指南** 2 | 3 | [1.TarsGo官方文档](https://github.com/TarsCloud/TarsGo) 4 | 5 | [2.TarsGo使用指南之服务端](https://www.jianshu.com/p/1ac4c236c442) 6 | 7 | [3.TarsGo使用指南之客户端](https://www.jianshu.com/p/00b18d30c499) -------------------------------------------------------------------------------- /tarsgo-client/Hello.tars: -------------------------------------------------------------------------------- 1 | module TestApp { 2 | interface Hello{ 3 | int test(); 4 | int testHello(string sReq, out string sRsp); 5 | }; 6 | 7 | interface SayHello { 8 | int echoHello(string name, out string greeting); 9 | }; 10 | }; -------------------------------------------------------------------------------- /tarsgo-server/Hello.tars: -------------------------------------------------------------------------------- 1 | module TestApp { 2 | interface Hello{ 3 | int test(); 4 | int testHello(string sReq, out string sRsp); 5 | }; 6 | 7 | interface SayHello { 8 | int echoHello(string name, out string greeting); 9 | }; 10 | }; -------------------------------------------------------------------------------- /tarsgo-client/HelloClient.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "TestApp" 5 | "fmt" 6 | "github.com/TarsCloud/TarsGo/tars" 7 | ) 8 | 9 | func main() { 10 | comm := tars.NewCommunicator() 11 | obj := "TestApp.HelloServer.HelloObj@tcp -h 127.0.0.1 -p 9998 -t 60000" 12 | app := new(TestApp.Hello) 13 | comm.StringToProxy(obj, app) 14 | req := "Hello World" 15 | var res string 16 | ret, err := app.TestHello(req, &res) 17 | if err != nil { 18 | fmt.Println(err) 19 | return 20 | } 21 | fmt.Println("ret: ", ret, "res: ", res) 22 | } -------------------------------------------------------------------------------- /tarsgo-server/SayHelloImp.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | type SayHelloImp struct { 4 | } 5 | 6 | // implement the echoHello interface 7 | func (imp *SayHelloImp) EchoHello(name string, greeting *string) (int32, error) { 8 | *greeting = "Hello " + name 9 | return 0, nil 10 | } 11 | 12 | //func main() { 13 | // sayHelloImp := new(SayHelloImp) // New Imp 14 | // app := new(TestApp.SayHello) // New init the A Tars 15 | // cfg := tars.GetServerConfig() // Get Config File Object 16 | // app.AddServant(sayHelloImp, cfg.App + "." + cfg.Server + ".SayHelloObj") // Register Servant 17 | // tars.Run() 18 | //} -------------------------------------------------------------------------------- /tarsgo-client/SayHelloClient.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "TestApp" 5 | "fmt" 6 | "github.com/TarsCloud/TarsGo/tars" 7 | ) 8 | 9 | // tars.Communicator should only init once and be global 10 | //var comm *tars.Communicator 11 | 12 | func main() { 13 | comm := tars.NewCommunicator() 14 | obj := "TestApp.SayHelloServer.SayHelloObj@tcp -h 127.0.0.1 -p 9997 -t 60000" 15 | app := new(TestApp.SayHello) 16 | comm.StringToProxy(obj, app) 17 | reqStr := "tars" 18 | var resp string 19 | ret, err := app.EchoHello(reqStr, &resp) 20 | if err != nil { 21 | fmt.Println(err) 22 | return 23 | } 24 | fmt.Println("ret: ", ret, "resp: ", resp) 25 | } -------------------------------------------------------------------------------- /tarsgo-server/HelloImp.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | type HelloImp struct { 4 | } 5 | 6 | // implement the test interface 7 | func (imp *HelloImp) Test() (int32, error) { 8 | return 0, nil 9 | } 10 | 11 | // implement the testHello interface 12 | func (imp *HelloImp) TestHello(in string, out *string) (int32, error) { 13 | *out = in 14 | return 0, nil 15 | } 16 | 17 | //func main() { 18 | // helloImp := new(HelloImp) // New Imp 19 | // app := new(TestApp.Hello) // New init the A Tars 20 | // cfg := tars.GetServerConfig() // Get Config File Object 21 | // app.AddServant(helloImp, cfg.App + "." + cfg.Server + ".HelloObj") // Register Servant 22 | // tars.Run() 23 | //} -------------------------------------------------------------------------------- /tarsgo-server/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "TestApp" 5 | "github.com/TarsCloud/TarsGo/tars" 6 | ) 7 | 8 | // Init servant 9 | func main() { 10 | sayHelloImp := new(SayHelloImp) // New Imp 11 | appSayHello := new(TestApp.SayHello) // New init the A Tars 12 | cfg := tars.GetServerConfig() // Get Config File Object 13 | appSayHello.AddServant(sayHelloImp, cfg.App + "." + cfg.Server + ".SayHelloObj") // Register Servant 14 | 15 | helloImp := new(HelloImp) // New Imp 16 | appHello := new(TestApp.Hello) // New init the A Tars 17 | //cfg := tars.GetServerConfig() // Get Config File Object 18 | appHello.AddServant(helloImp, cfg.App + "." + cfg.Server + ".HelloObj") // Register Servant 19 | tars.Run() 20 | } -------------------------------------------------------------------------------- /tarsgo-server/config.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | app=TestApp 5 | server=TestAppServer 6 | logpath=logs 7 | local=tcp -h 127.0.0.1 -p 9999 -t 3000 8 | 9 | endpoint=tcp -h 127.0.0.1 -p 9997 -t 6000 10 | servant=TestApp.TestAppServer.SayHelloObj 11 | 12 | 13 | 14 | endpoint=tcp -h 127.0.0.1 -p 9998 -t 6000 15 | servant=TestApp.TestAppServer.HelloObj 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tarsgo-client/vendor/TestApp/SayHello_IF.go: -------------------------------------------------------------------------------- 1 | //Package TestApp comment 2 | // This file war generated by tars2go 1.1 3 | // Generated from Hello.tars 4 | package TestApp 5 | 6 | import ( 7 | "context" 8 | "fmt" 9 | "github.com/TarsCloud/TarsGo/tars" 10 | m "github.com/TarsCloud/TarsGo/tars/model" 11 | "github.com/TarsCloud/TarsGo/tars/protocol/codec" 12 | "github.com/TarsCloud/TarsGo/tars/protocol/res/requestf" 13 | "github.com/TarsCloud/TarsGo/tars/util/current" 14 | "github.com/TarsCloud/TarsGo/tars/util/tools" 15 | ) 16 | 17 | //SayHello struct 18 | type SayHello struct { 19 | s m.Servant 20 | } 21 | 22 | //EchoHello is the proxy function for the method defined in the tars file, with the context 23 | func (_obj *SayHello) EchoHello(Name string, Greeting *string, _opt ...map[string]string) (ret int32, err error) { 24 | 25 | var length int32 26 | var have bool 27 | var ty byte 28 | _os := codec.NewBuffer() 29 | err = _os.Write_string(Name, 1) 30 | if err != nil { 31 | return ret, err 32 | } 33 | 34 | var _status map[string]string 35 | var _context map[string]string 36 | if len(_opt) == 1 { 37 | _context = _opt[0] 38 | } else if len(_opt) == 2 { 39 | _context = _opt[0] 40 | _status = _opt[1] 41 | } 42 | _resp := new(requestf.ResponsePacket) 43 | ctx := context.Background() 44 | err = _obj.s.Tars_invoke(ctx, 0, "echoHello", _os.ToBytes(), _status, _context, _resp) 45 | if err != nil { 46 | return ret, err 47 | } 48 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 49 | err = _is.Read_int32(&ret, 0, true) 50 | if err != nil { 51 | return ret, err 52 | } 53 | 54 | err = _is.Read_string(&(*Greeting), 2, true) 55 | if err != nil { 56 | return ret, err 57 | } 58 | 59 | if len(_opt) == 1 { 60 | for k, _ := range _context { 61 | delete(_context, k) 62 | } 63 | for k, v := range _resp.Context { 64 | _context[k] = v 65 | } 66 | } else if len(_opt) == 2 { 67 | for k, _ := range _context { 68 | delete(_context, k) 69 | } 70 | for k, v := range _resp.Context { 71 | _context[k] = v 72 | } 73 | for k, _ := range _status { 74 | delete(_status, k) 75 | } 76 | for k, v := range _resp.Status { 77 | _status[k] = v 78 | } 79 | 80 | } 81 | _ = length 82 | _ = have 83 | _ = ty 84 | return ret, nil 85 | } 86 | 87 | //EchoHelloWithContext is the proxy function for the method defined in the tars file, with the context 88 | func (_obj *SayHello) EchoHelloWithContext(ctx context.Context, Name string, Greeting *string, _opt ...map[string]string) (ret int32, err error) { 89 | 90 | var length int32 91 | var have bool 92 | var ty byte 93 | _os := codec.NewBuffer() 94 | err = _os.Write_string(Name, 1) 95 | if err != nil { 96 | return ret, err 97 | } 98 | 99 | var _status map[string]string 100 | var _context map[string]string 101 | if len(_opt) == 1 { 102 | _context = _opt[0] 103 | } else if len(_opt) == 2 { 104 | _context = _opt[0] 105 | _status = _opt[1] 106 | } 107 | _resp := new(requestf.ResponsePacket) 108 | err = _obj.s.Tars_invoke(ctx, 0, "echoHello", _os.ToBytes(), _status, _context, _resp) 109 | if err != nil { 110 | return ret, err 111 | } 112 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 113 | err = _is.Read_int32(&ret, 0, true) 114 | if err != nil { 115 | return ret, err 116 | } 117 | 118 | err = _is.Read_string(&(*Greeting), 2, true) 119 | if err != nil { 120 | return ret, err 121 | } 122 | 123 | if len(_opt) == 1 { 124 | for k, _ := range _context { 125 | delete(_context, k) 126 | } 127 | for k, v := range _resp.Context { 128 | _context[k] = v 129 | } 130 | } else if len(_opt) == 2 { 131 | for k, _ := range _context { 132 | delete(_context, k) 133 | } 134 | for k, v := range _resp.Context { 135 | _context[k] = v 136 | } 137 | for k, _ := range _status { 138 | delete(_status, k) 139 | } 140 | for k, v := range _resp.Status { 141 | _status[k] = v 142 | } 143 | 144 | } 145 | _ = length 146 | _ = have 147 | _ = ty 148 | return ret, nil 149 | } 150 | 151 | //SetServant sets servant for the service. 152 | func (_obj *SayHello) SetServant(s m.Servant) { 153 | _obj.s = s 154 | } 155 | 156 | //TarsSetTimeout sets the timeout for the servant which is in ms. 157 | func (_obj *SayHello) TarsSetTimeout(t int) { 158 | _obj.s.TarsSetTimeout(t) 159 | } 160 | 161 | //AddServant adds servant for the service. 162 | func (_obj *SayHello) AddServant(imp _impSayHello, obj string) { 163 | tars.AddServant(_obj, imp, obj) 164 | } 165 | 166 | //AddServant adds servant for the service with context. 167 | func (_obj *SayHello) AddServantWithContext(imp _impSayHelloWithContext, obj string) { 168 | tars.AddServantWithContext(_obj, imp, obj) 169 | } 170 | 171 | type _impSayHello interface { 172 | EchoHello(Name string, Greeting *string) (ret int32, err error) 173 | } 174 | type _impSayHelloWithContext interface { 175 | EchoHello(ctx context.Context, Name string, Greeting *string) (ret int32, err error) 176 | } 177 | 178 | //Dispatch is used to call the server side implemnet for the method defined in the tars file. withContext shows using context or not. 179 | func (_obj *SayHello) Dispatch(ctx context.Context, _val interface{}, req *requestf.RequestPacket, resp *requestf.ResponsePacket, withContext bool) (err error) { 180 | var length int32 181 | var have bool 182 | var ty byte 183 | _is := codec.NewReader(tools.Int8ToByte(req.SBuffer)) 184 | _os := codec.NewBuffer() 185 | switch req.SFuncName { 186 | case "echoHello": 187 | var Name string 188 | err = _is.Read_string(&Name, 1, true) 189 | if err != nil { 190 | return err 191 | } 192 | var Greeting string 193 | if withContext == false { 194 | _imp := _val.(_impSayHello) 195 | ret, err := _imp.EchoHello(Name, &Greeting) 196 | if err != nil { 197 | return err 198 | } 199 | 200 | err = _os.Write_int32(ret, 0) 201 | if err != nil { 202 | return err 203 | } 204 | } else { 205 | _imp := _val.(_impSayHelloWithContext) 206 | ret, err := _imp.EchoHello(ctx, Name, &Greeting) 207 | if err != nil { 208 | return err 209 | } 210 | 211 | err = _os.Write_int32(ret, 0) 212 | if err != nil { 213 | return err 214 | } 215 | } 216 | 217 | err = _os.Write_string(Greeting, 2) 218 | if err != nil { 219 | return err 220 | } 221 | 222 | default: 223 | return fmt.Errorf("func mismatch") 224 | } 225 | var _status map[string]string 226 | s, ok := current.GetResponseStatus(ctx) 227 | if ok && s != nil { 228 | _status = s 229 | } 230 | var _context map[string]string 231 | c, ok := current.GetResponseContext(ctx) 232 | if ok && c != nil { 233 | _context = c 234 | } 235 | *resp = requestf.ResponsePacket{ 236 | IVersion: 1, 237 | CPacketType: 0, 238 | IRequestId: req.IRequestId, 239 | IMessageType: 0, 240 | IRet: 0, 241 | SBuffer: tools.ByteToInt8(_os.ToBytes()), 242 | Status: _status, 243 | SResultDesc: "", 244 | Context: _context, 245 | } 246 | _ = length 247 | _ = have 248 | _ = ty 249 | return nil 250 | } 251 | -------------------------------------------------------------------------------- /tarsgo-server/vendor/TestApp/SayHello_IF.go: -------------------------------------------------------------------------------- 1 | //Package TestApp comment 2 | // This file war generated by tars2go 1.1 3 | // Generated from Hello.tars 4 | package TestApp 5 | 6 | import ( 7 | "context" 8 | "fmt" 9 | "github.com/TarsCloud/TarsGo/tars" 10 | m "github.com/TarsCloud/TarsGo/tars/model" 11 | "github.com/TarsCloud/TarsGo/tars/protocol/codec" 12 | "github.com/TarsCloud/TarsGo/tars/protocol/res/requestf" 13 | "github.com/TarsCloud/TarsGo/tars/util/current" 14 | "github.com/TarsCloud/TarsGo/tars/util/tools" 15 | ) 16 | 17 | //SayHello struct 18 | type SayHello struct { 19 | s m.Servant 20 | } 21 | 22 | //EchoHello is the proxy function for the method defined in the tars file, with the context 23 | func (_obj *SayHello) EchoHello(Name string, Greeting *string, _opt ...map[string]string) (ret int32, err error) { 24 | 25 | var length int32 26 | var have bool 27 | var ty byte 28 | _os := codec.NewBuffer() 29 | err = _os.Write_string(Name, 1) 30 | if err != nil { 31 | return ret, err 32 | } 33 | 34 | var _status map[string]string 35 | var _context map[string]string 36 | if len(_opt) == 1 { 37 | _context = _opt[0] 38 | } else if len(_opt) == 2 { 39 | _context = _opt[0] 40 | _status = _opt[1] 41 | } 42 | _resp := new(requestf.ResponsePacket) 43 | ctx := context.Background() 44 | err = _obj.s.Tars_invoke(ctx, 0, "echoHello", _os.ToBytes(), _status, _context, _resp) 45 | if err != nil { 46 | return ret, err 47 | } 48 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 49 | err = _is.Read_int32(&ret, 0, true) 50 | if err != nil { 51 | return ret, err 52 | } 53 | 54 | err = _is.Read_string(&(*Greeting), 2, true) 55 | if err != nil { 56 | return ret, err 57 | } 58 | 59 | if len(_opt) == 1 { 60 | for k, _ := range _context { 61 | delete(_context, k) 62 | } 63 | for k, v := range _resp.Context { 64 | _context[k] = v 65 | } 66 | } else if len(_opt) == 2 { 67 | for k, _ := range _context { 68 | delete(_context, k) 69 | } 70 | for k, v := range _resp.Context { 71 | _context[k] = v 72 | } 73 | for k, _ := range _status { 74 | delete(_status, k) 75 | } 76 | for k, v := range _resp.Status { 77 | _status[k] = v 78 | } 79 | 80 | } 81 | _ = length 82 | _ = have 83 | _ = ty 84 | return ret, nil 85 | } 86 | 87 | //EchoHelloWithContext is the proxy function for the method defined in the tars file, with the context 88 | func (_obj *SayHello) EchoHelloWithContext(ctx context.Context, Name string, Greeting *string, _opt ...map[string]string) (ret int32, err error) { 89 | 90 | var length int32 91 | var have bool 92 | var ty byte 93 | _os := codec.NewBuffer() 94 | err = _os.Write_string(Name, 1) 95 | if err != nil { 96 | return ret, err 97 | } 98 | 99 | var _status map[string]string 100 | var _context map[string]string 101 | if len(_opt) == 1 { 102 | _context = _opt[0] 103 | } else if len(_opt) == 2 { 104 | _context = _opt[0] 105 | _status = _opt[1] 106 | } 107 | _resp := new(requestf.ResponsePacket) 108 | err = _obj.s.Tars_invoke(ctx, 0, "echoHello", _os.ToBytes(), _status, _context, _resp) 109 | if err != nil { 110 | return ret, err 111 | } 112 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 113 | err = _is.Read_int32(&ret, 0, true) 114 | if err != nil { 115 | return ret, err 116 | } 117 | 118 | err = _is.Read_string(&(*Greeting), 2, true) 119 | if err != nil { 120 | return ret, err 121 | } 122 | 123 | if len(_opt) == 1 { 124 | for k, _ := range _context { 125 | delete(_context, k) 126 | } 127 | for k, v := range _resp.Context { 128 | _context[k] = v 129 | } 130 | } else if len(_opt) == 2 { 131 | for k, _ := range _context { 132 | delete(_context, k) 133 | } 134 | for k, v := range _resp.Context { 135 | _context[k] = v 136 | } 137 | for k, _ := range _status { 138 | delete(_status, k) 139 | } 140 | for k, v := range _resp.Status { 141 | _status[k] = v 142 | } 143 | 144 | } 145 | _ = length 146 | _ = have 147 | _ = ty 148 | return ret, nil 149 | } 150 | 151 | //SetServant sets servant for the service. 152 | func (_obj *SayHello) SetServant(s m.Servant) { 153 | _obj.s = s 154 | } 155 | 156 | //TarsSetTimeout sets the timeout for the servant which is in ms. 157 | func (_obj *SayHello) TarsSetTimeout(t int) { 158 | _obj.s.TarsSetTimeout(t) 159 | } 160 | 161 | //AddServant adds servant for the service. 162 | func (_obj *SayHello) AddServant(imp _impSayHello, obj string) { 163 | tars.AddServant(_obj, imp, obj) 164 | } 165 | 166 | //AddServant adds servant for the service with context. 167 | func (_obj *SayHello) AddServantWithContext(imp _impSayHelloWithContext, obj string) { 168 | tars.AddServantWithContext(_obj, imp, obj) 169 | } 170 | 171 | type _impSayHello interface { 172 | EchoHello(Name string, Greeting *string) (ret int32, err error) 173 | } 174 | type _impSayHelloWithContext interface { 175 | EchoHello(ctx context.Context, Name string, Greeting *string) (ret int32, err error) 176 | } 177 | 178 | //Dispatch is used to call the server side implemnet for the method defined in the tars file. withContext shows using context or not. 179 | func (_obj *SayHello) Dispatch(ctx context.Context, _val interface{}, req *requestf.RequestPacket, resp *requestf.ResponsePacket, withContext bool) (err error) { 180 | var length int32 181 | var have bool 182 | var ty byte 183 | _is := codec.NewReader(tools.Int8ToByte(req.SBuffer)) 184 | _os := codec.NewBuffer() 185 | switch req.SFuncName { 186 | case "echoHello": 187 | var Name string 188 | err = _is.Read_string(&Name, 1, true) 189 | if err != nil { 190 | return err 191 | } 192 | var Greeting string 193 | if withContext == false { 194 | _imp := _val.(_impSayHello) 195 | ret, err := _imp.EchoHello(Name, &Greeting) 196 | if err != nil { 197 | return err 198 | } 199 | 200 | err = _os.Write_int32(ret, 0) 201 | if err != nil { 202 | return err 203 | } 204 | } else { 205 | _imp := _val.(_impSayHelloWithContext) 206 | ret, err := _imp.EchoHello(ctx, Name, &Greeting) 207 | if err != nil { 208 | return err 209 | } 210 | 211 | err = _os.Write_int32(ret, 0) 212 | if err != nil { 213 | return err 214 | } 215 | } 216 | 217 | err = _os.Write_string(Greeting, 2) 218 | if err != nil { 219 | return err 220 | } 221 | 222 | default: 223 | return fmt.Errorf("func mismatch") 224 | } 225 | var _status map[string]string 226 | s, ok := current.GetResponseStatus(ctx) 227 | if ok && s != nil { 228 | _status = s 229 | } 230 | var _context map[string]string 231 | c, ok := current.GetResponseContext(ctx) 232 | if ok && c != nil { 233 | _context = c 234 | } 235 | *resp = requestf.ResponsePacket{ 236 | IVersion: 1, 237 | CPacketType: 0, 238 | IRequestId: req.IRequestId, 239 | IMessageType: 0, 240 | IRet: 0, 241 | SBuffer: tools.ByteToInt8(_os.ToBytes()), 242 | Status: _status, 243 | SResultDesc: "", 244 | Context: _context, 245 | } 246 | _ = length 247 | _ = have 248 | _ = ty 249 | return nil 250 | } 251 | -------------------------------------------------------------------------------- /tarsgo-client/vendor/TestApp/Hello_IF.go: -------------------------------------------------------------------------------- 1 | //Package TestApp comment 2 | // This file war generated by tars2go 1.1 3 | // Generated from Hello.tars 4 | package TestApp 5 | 6 | import ( 7 | "context" 8 | "fmt" 9 | "github.com/TarsCloud/TarsGo/tars" 10 | m "github.com/TarsCloud/TarsGo/tars/model" 11 | "github.com/TarsCloud/TarsGo/tars/protocol/codec" 12 | "github.com/TarsCloud/TarsGo/tars/protocol/res/requestf" 13 | "github.com/TarsCloud/TarsGo/tars/util/current" 14 | "github.com/TarsCloud/TarsGo/tars/util/tools" 15 | ) 16 | 17 | //Hello struct 18 | type Hello struct { 19 | s m.Servant 20 | } 21 | 22 | //Test is the proxy function for the method defined in the tars file, with the context 23 | func (_obj *Hello) Test(_opt ...map[string]string) (ret int32, err error) { 24 | 25 | var length int32 26 | var have bool 27 | var ty byte 28 | _os := codec.NewBuffer() 29 | 30 | var _status map[string]string 31 | var _context map[string]string 32 | if len(_opt) == 1 { 33 | _context = _opt[0] 34 | } else if len(_opt) == 2 { 35 | _context = _opt[0] 36 | _status = _opt[1] 37 | } 38 | _resp := new(requestf.ResponsePacket) 39 | ctx := context.Background() 40 | err = _obj.s.Tars_invoke(ctx, 0, "test", _os.ToBytes(), _status, _context, _resp) 41 | if err != nil { 42 | return ret, err 43 | } 44 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 45 | err = _is.Read_int32(&ret, 0, true) 46 | if err != nil { 47 | return ret, err 48 | } 49 | 50 | if len(_opt) == 1 { 51 | for k, _ := range _context { 52 | delete(_context, k) 53 | } 54 | for k, v := range _resp.Context { 55 | _context[k] = v 56 | } 57 | } else if len(_opt) == 2 { 58 | for k, _ := range _context { 59 | delete(_context, k) 60 | } 61 | for k, v := range _resp.Context { 62 | _context[k] = v 63 | } 64 | for k, _ := range _status { 65 | delete(_status, k) 66 | } 67 | for k, v := range _resp.Status { 68 | _status[k] = v 69 | } 70 | 71 | } 72 | _ = length 73 | _ = have 74 | _ = ty 75 | return ret, nil 76 | } 77 | 78 | //TestWithContext is the proxy function for the method defined in the tars file, with the context 79 | func (_obj *Hello) TestWithContext(ctx context.Context, _opt ...map[string]string) (ret int32, err error) { 80 | 81 | var length int32 82 | var have bool 83 | var ty byte 84 | _os := codec.NewBuffer() 85 | var _status map[string]string 86 | var _context map[string]string 87 | if len(_opt) == 1 { 88 | _context = _opt[0] 89 | } else if len(_opt) == 2 { 90 | _context = _opt[0] 91 | _status = _opt[1] 92 | } 93 | _resp := new(requestf.ResponsePacket) 94 | err = _obj.s.Tars_invoke(ctx, 0, "test", _os.ToBytes(), _status, _context, _resp) 95 | if err != nil { 96 | return ret, err 97 | } 98 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 99 | err = _is.Read_int32(&ret, 0, true) 100 | if err != nil { 101 | return ret, err 102 | } 103 | 104 | if len(_opt) == 1 { 105 | for k, _ := range _context { 106 | delete(_context, k) 107 | } 108 | for k, v := range _resp.Context { 109 | _context[k] = v 110 | } 111 | } else if len(_opt) == 2 { 112 | for k, _ := range _context { 113 | delete(_context, k) 114 | } 115 | for k, v := range _resp.Context { 116 | _context[k] = v 117 | } 118 | for k, _ := range _status { 119 | delete(_status, k) 120 | } 121 | for k, v := range _resp.Status { 122 | _status[k] = v 123 | } 124 | 125 | } 126 | _ = length 127 | _ = have 128 | _ = ty 129 | return ret, nil 130 | } 131 | 132 | //TestHello is the proxy function for the method defined in the tars file, with the context 133 | func (_obj *Hello) TestHello(SReq string, SRsp *string, _opt ...map[string]string) (ret int32, err error) { 134 | 135 | var length int32 136 | var have bool 137 | var ty byte 138 | _os := codec.NewBuffer() 139 | err = _os.Write_string(SReq, 1) 140 | if err != nil { 141 | return ret, err 142 | } 143 | 144 | var _status map[string]string 145 | var _context map[string]string 146 | if len(_opt) == 1 { 147 | _context = _opt[0] 148 | } else if len(_opt) == 2 { 149 | _context = _opt[0] 150 | _status = _opt[1] 151 | } 152 | _resp := new(requestf.ResponsePacket) 153 | ctx := context.Background() 154 | err = _obj.s.Tars_invoke(ctx, 0, "testHello", _os.ToBytes(), _status, _context, _resp) 155 | if err != nil { 156 | return ret, err 157 | } 158 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 159 | err = _is.Read_int32(&ret, 0, true) 160 | if err != nil { 161 | return ret, err 162 | } 163 | 164 | err = _is.Read_string(&(*SRsp), 2, true) 165 | if err != nil { 166 | return ret, err 167 | } 168 | 169 | if len(_opt) == 1 { 170 | for k, _ := range _context { 171 | delete(_context, k) 172 | } 173 | for k, v := range _resp.Context { 174 | _context[k] = v 175 | } 176 | } else if len(_opt) == 2 { 177 | for k, _ := range _context { 178 | delete(_context, k) 179 | } 180 | for k, v := range _resp.Context { 181 | _context[k] = v 182 | } 183 | for k, _ := range _status { 184 | delete(_status, k) 185 | } 186 | for k, v := range _resp.Status { 187 | _status[k] = v 188 | } 189 | 190 | } 191 | _ = length 192 | _ = have 193 | _ = ty 194 | return ret, nil 195 | } 196 | 197 | //TestHelloWithContext is the proxy function for the method defined in the tars file, with the context 198 | func (_obj *Hello) TestHelloWithContext(ctx context.Context, SReq string, SRsp *string, _opt ...map[string]string) (ret int32, err error) { 199 | 200 | var length int32 201 | var have bool 202 | var ty byte 203 | _os := codec.NewBuffer() 204 | err = _os.Write_string(SReq, 1) 205 | if err != nil { 206 | return ret, err 207 | } 208 | 209 | var _status map[string]string 210 | var _context map[string]string 211 | if len(_opt) == 1 { 212 | _context = _opt[0] 213 | } else if len(_opt) == 2 { 214 | _context = _opt[0] 215 | _status = _opt[1] 216 | } 217 | _resp := new(requestf.ResponsePacket) 218 | err = _obj.s.Tars_invoke(ctx, 0, "testHello", _os.ToBytes(), _status, _context, _resp) 219 | if err != nil { 220 | return ret, err 221 | } 222 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 223 | err = _is.Read_int32(&ret, 0, true) 224 | if err != nil { 225 | return ret, err 226 | } 227 | 228 | err = _is.Read_string(&(*SRsp), 2, true) 229 | if err != nil { 230 | return ret, err 231 | } 232 | 233 | if len(_opt) == 1 { 234 | for k, _ := range _context { 235 | delete(_context, k) 236 | } 237 | for k, v := range _resp.Context { 238 | _context[k] = v 239 | } 240 | } else if len(_opt) == 2 { 241 | for k, _ := range _context { 242 | delete(_context, k) 243 | } 244 | for k, v := range _resp.Context { 245 | _context[k] = v 246 | } 247 | for k, _ := range _status { 248 | delete(_status, k) 249 | } 250 | for k, v := range _resp.Status { 251 | _status[k] = v 252 | } 253 | 254 | } 255 | _ = length 256 | _ = have 257 | _ = ty 258 | return ret, nil 259 | } 260 | 261 | //SetServant sets servant for the service. 262 | func (_obj *Hello) SetServant(s m.Servant) { 263 | _obj.s = s 264 | } 265 | 266 | //TarsSetTimeout sets the timeout for the servant which is in ms. 267 | func (_obj *Hello) TarsSetTimeout(t int) { 268 | _obj.s.TarsSetTimeout(t) 269 | } 270 | 271 | //AddServant adds servant for the service. 272 | func (_obj *Hello) AddServant(imp _impHello, obj string) { 273 | tars.AddServant(_obj, imp, obj) 274 | } 275 | 276 | //AddServant adds servant for the service with context. 277 | func (_obj *Hello) AddServantWithContext(imp _impHelloWithContext, obj string) { 278 | tars.AddServantWithContext(_obj, imp, obj) 279 | } 280 | 281 | type _impHello interface { 282 | Test() (ret int32, err error) 283 | TestHello(SReq string, SRsp *string) (ret int32, err error) 284 | } 285 | type _impHelloWithContext interface { 286 | Test(ctx context.Context) (ret int32, err error) 287 | TestHello(ctx context.Context, SReq string, SRsp *string) (ret int32, err error) 288 | } 289 | 290 | //Dispatch is used to call the server side implemnet for the method defined in the tars file. withContext shows using context or not. 291 | func (_obj *Hello) Dispatch(ctx context.Context, _val interface{}, req *requestf.RequestPacket, resp *requestf.ResponsePacket, withContext bool) (err error) { 292 | var length int32 293 | var have bool 294 | var ty byte 295 | _is := codec.NewReader(tools.Int8ToByte(req.SBuffer)) 296 | _os := codec.NewBuffer() 297 | switch req.SFuncName { 298 | case "test": 299 | if withContext == false { 300 | _imp := _val.(_impHello) 301 | ret, err := _imp.Test() 302 | if err != nil { 303 | return err 304 | } 305 | 306 | err = _os.Write_int32(ret, 0) 307 | if err != nil { 308 | return err 309 | } 310 | } else { 311 | _imp := _val.(_impHelloWithContext) 312 | ret, err := _imp.Test(ctx) 313 | if err != nil { 314 | return err 315 | } 316 | 317 | err = _os.Write_int32(ret, 0) 318 | if err != nil { 319 | return err 320 | } 321 | } 322 | case "testHello": 323 | var SReq string 324 | err = _is.Read_string(&SReq, 1, true) 325 | if err != nil { 326 | return err 327 | } 328 | var SRsp string 329 | if withContext == false { 330 | _imp := _val.(_impHello) 331 | ret, err := _imp.TestHello(SReq, &SRsp) 332 | if err != nil { 333 | return err 334 | } 335 | 336 | err = _os.Write_int32(ret, 0) 337 | if err != nil { 338 | return err 339 | } 340 | } else { 341 | _imp := _val.(_impHelloWithContext) 342 | ret, err := _imp.TestHello(ctx, SReq, &SRsp) 343 | if err != nil { 344 | return err 345 | } 346 | 347 | err = _os.Write_int32(ret, 0) 348 | if err != nil { 349 | return err 350 | } 351 | } 352 | 353 | err = _os.Write_string(SRsp, 2) 354 | if err != nil { 355 | return err 356 | } 357 | 358 | default: 359 | return fmt.Errorf("func mismatch") 360 | } 361 | var _status map[string]string 362 | s, ok := current.GetResponseStatus(ctx) 363 | if ok && s != nil { 364 | _status = s 365 | } 366 | var _context map[string]string 367 | c, ok := current.GetResponseContext(ctx) 368 | if ok && c != nil { 369 | _context = c 370 | } 371 | *resp = requestf.ResponsePacket{ 372 | IVersion: 1, 373 | CPacketType: 0, 374 | IRequestId: req.IRequestId, 375 | IMessageType: 0, 376 | IRet: 0, 377 | SBuffer: tools.ByteToInt8(_os.ToBytes()), 378 | Status: _status, 379 | SResultDesc: "", 380 | Context: _context, 381 | } 382 | _ = length 383 | _ = have 384 | _ = ty 385 | return nil 386 | } 387 | -------------------------------------------------------------------------------- /tarsgo-server/vendor/TestApp/Hello_IF.go: -------------------------------------------------------------------------------- 1 | //Package TestApp comment 2 | // This file war generated by tars2go 1.1 3 | // Generated from Hello.tars 4 | package TestApp 5 | 6 | import ( 7 | "context" 8 | "fmt" 9 | "github.com/TarsCloud/TarsGo/tars" 10 | m "github.com/TarsCloud/TarsGo/tars/model" 11 | "github.com/TarsCloud/TarsGo/tars/protocol/codec" 12 | "github.com/TarsCloud/TarsGo/tars/protocol/res/requestf" 13 | "github.com/TarsCloud/TarsGo/tars/util/current" 14 | "github.com/TarsCloud/TarsGo/tars/util/tools" 15 | ) 16 | 17 | //Hello struct 18 | type Hello struct { 19 | s m.Servant 20 | } 21 | 22 | //Test is the proxy function for the method defined in the tars file, with the context 23 | func (_obj *Hello) Test(_opt ...map[string]string) (ret int32, err error) { 24 | 25 | var length int32 26 | var have bool 27 | var ty byte 28 | _os := codec.NewBuffer() 29 | 30 | var _status map[string]string 31 | var _context map[string]string 32 | if len(_opt) == 1 { 33 | _context = _opt[0] 34 | } else if len(_opt) == 2 { 35 | _context = _opt[0] 36 | _status = _opt[1] 37 | } 38 | _resp := new(requestf.ResponsePacket) 39 | ctx := context.Background() 40 | err = _obj.s.Tars_invoke(ctx, 0, "test", _os.ToBytes(), _status, _context, _resp) 41 | if err != nil { 42 | return ret, err 43 | } 44 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 45 | err = _is.Read_int32(&ret, 0, true) 46 | if err != nil { 47 | return ret, err 48 | } 49 | 50 | if len(_opt) == 1 { 51 | for k, _ := range _context { 52 | delete(_context, k) 53 | } 54 | for k, v := range _resp.Context { 55 | _context[k] = v 56 | } 57 | } else if len(_opt) == 2 { 58 | for k, _ := range _context { 59 | delete(_context, k) 60 | } 61 | for k, v := range _resp.Context { 62 | _context[k] = v 63 | } 64 | for k, _ := range _status { 65 | delete(_status, k) 66 | } 67 | for k, v := range _resp.Status { 68 | _status[k] = v 69 | } 70 | 71 | } 72 | _ = length 73 | _ = have 74 | _ = ty 75 | return ret, nil 76 | } 77 | 78 | //TestWithContext is the proxy function for the method defined in the tars file, with the context 79 | func (_obj *Hello) TestWithContext(ctx context.Context, _opt ...map[string]string) (ret int32, err error) { 80 | 81 | var length int32 82 | var have bool 83 | var ty byte 84 | _os := codec.NewBuffer() 85 | var _status map[string]string 86 | var _context map[string]string 87 | if len(_opt) == 1 { 88 | _context = _opt[0] 89 | } else if len(_opt) == 2 { 90 | _context = _opt[0] 91 | _status = _opt[1] 92 | } 93 | _resp := new(requestf.ResponsePacket) 94 | err = _obj.s.Tars_invoke(ctx, 0, "test", _os.ToBytes(), _status, _context, _resp) 95 | if err != nil { 96 | return ret, err 97 | } 98 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 99 | err = _is.Read_int32(&ret, 0, true) 100 | if err != nil { 101 | return ret, err 102 | } 103 | 104 | if len(_opt) == 1 { 105 | for k, _ := range _context { 106 | delete(_context, k) 107 | } 108 | for k, v := range _resp.Context { 109 | _context[k] = v 110 | } 111 | } else if len(_opt) == 2 { 112 | for k, _ := range _context { 113 | delete(_context, k) 114 | } 115 | for k, v := range _resp.Context { 116 | _context[k] = v 117 | } 118 | for k, _ := range _status { 119 | delete(_status, k) 120 | } 121 | for k, v := range _resp.Status { 122 | _status[k] = v 123 | } 124 | 125 | } 126 | _ = length 127 | _ = have 128 | _ = ty 129 | return ret, nil 130 | } 131 | 132 | //TestHello is the proxy function for the method defined in the tars file, with the context 133 | func (_obj *Hello) TestHello(SReq string, SRsp *string, _opt ...map[string]string) (ret int32, err error) { 134 | 135 | var length int32 136 | var have bool 137 | var ty byte 138 | _os := codec.NewBuffer() 139 | err = _os.Write_string(SReq, 1) 140 | if err != nil { 141 | return ret, err 142 | } 143 | 144 | var _status map[string]string 145 | var _context map[string]string 146 | if len(_opt) == 1 { 147 | _context = _opt[0] 148 | } else if len(_opt) == 2 { 149 | _context = _opt[0] 150 | _status = _opt[1] 151 | } 152 | _resp := new(requestf.ResponsePacket) 153 | ctx := context.Background() 154 | err = _obj.s.Tars_invoke(ctx, 0, "testHello", _os.ToBytes(), _status, _context, _resp) 155 | if err != nil { 156 | return ret, err 157 | } 158 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 159 | err = _is.Read_int32(&ret, 0, true) 160 | if err != nil { 161 | return ret, err 162 | } 163 | 164 | err = _is.Read_string(&(*SRsp), 2, true) 165 | if err != nil { 166 | return ret, err 167 | } 168 | 169 | if len(_opt) == 1 { 170 | for k, _ := range _context { 171 | delete(_context, k) 172 | } 173 | for k, v := range _resp.Context { 174 | _context[k] = v 175 | } 176 | } else if len(_opt) == 2 { 177 | for k, _ := range _context { 178 | delete(_context, k) 179 | } 180 | for k, v := range _resp.Context { 181 | _context[k] = v 182 | } 183 | for k, _ := range _status { 184 | delete(_status, k) 185 | } 186 | for k, v := range _resp.Status { 187 | _status[k] = v 188 | } 189 | 190 | } 191 | _ = length 192 | _ = have 193 | _ = ty 194 | return ret, nil 195 | } 196 | 197 | //TestHelloWithContext is the proxy function for the method defined in the tars file, with the context 198 | func (_obj *Hello) TestHelloWithContext(ctx context.Context, SReq string, SRsp *string, _opt ...map[string]string) (ret int32, err error) { 199 | 200 | var length int32 201 | var have bool 202 | var ty byte 203 | _os := codec.NewBuffer() 204 | err = _os.Write_string(SReq, 1) 205 | if err != nil { 206 | return ret, err 207 | } 208 | 209 | var _status map[string]string 210 | var _context map[string]string 211 | if len(_opt) == 1 { 212 | _context = _opt[0] 213 | } else if len(_opt) == 2 { 214 | _context = _opt[0] 215 | _status = _opt[1] 216 | } 217 | _resp := new(requestf.ResponsePacket) 218 | err = _obj.s.Tars_invoke(ctx, 0, "testHello", _os.ToBytes(), _status, _context, _resp) 219 | if err != nil { 220 | return ret, err 221 | } 222 | _is := codec.NewReader(tools.Int8ToByte(_resp.SBuffer)) 223 | err = _is.Read_int32(&ret, 0, true) 224 | if err != nil { 225 | return ret, err 226 | } 227 | 228 | err = _is.Read_string(&(*SRsp), 2, true) 229 | if err != nil { 230 | return ret, err 231 | } 232 | 233 | if len(_opt) == 1 { 234 | for k, _ := range _context { 235 | delete(_context, k) 236 | } 237 | for k, v := range _resp.Context { 238 | _context[k] = v 239 | } 240 | } else if len(_opt) == 2 { 241 | for k, _ := range _context { 242 | delete(_context, k) 243 | } 244 | for k, v := range _resp.Context { 245 | _context[k] = v 246 | } 247 | for k, _ := range _status { 248 | delete(_status, k) 249 | } 250 | for k, v := range _resp.Status { 251 | _status[k] = v 252 | } 253 | 254 | } 255 | _ = length 256 | _ = have 257 | _ = ty 258 | return ret, nil 259 | } 260 | 261 | //SetServant sets servant for the service. 262 | func (_obj *Hello) SetServant(s m.Servant) { 263 | _obj.s = s 264 | } 265 | 266 | //TarsSetTimeout sets the timeout for the servant which is in ms. 267 | func (_obj *Hello) TarsSetTimeout(t int) { 268 | _obj.s.TarsSetTimeout(t) 269 | } 270 | 271 | //AddServant adds servant for the service. 272 | func (_obj *Hello) AddServant(imp _impHello, obj string) { 273 | tars.AddServant(_obj, imp, obj) 274 | } 275 | 276 | //AddServant adds servant for the service with context. 277 | func (_obj *Hello) AddServantWithContext(imp _impHelloWithContext, obj string) { 278 | tars.AddServantWithContext(_obj, imp, obj) 279 | } 280 | 281 | type _impHello interface { 282 | Test() (ret int32, err error) 283 | TestHello(SReq string, SRsp *string) (ret int32, err error) 284 | } 285 | type _impHelloWithContext interface { 286 | Test(ctx context.Context) (ret int32, err error) 287 | TestHello(ctx context.Context, SReq string, SRsp *string) (ret int32, err error) 288 | } 289 | 290 | //Dispatch is used to call the server side implemnet for the method defined in the tars file. withContext shows using context or not. 291 | func (_obj *Hello) Dispatch(ctx context.Context, _val interface{}, req *requestf.RequestPacket, resp *requestf.ResponsePacket, withContext bool) (err error) { 292 | var length int32 293 | var have bool 294 | var ty byte 295 | _is := codec.NewReader(tools.Int8ToByte(req.SBuffer)) 296 | _os := codec.NewBuffer() 297 | switch req.SFuncName { 298 | case "test": 299 | if withContext == false { 300 | _imp := _val.(_impHello) 301 | ret, err := _imp.Test() 302 | if err != nil { 303 | return err 304 | } 305 | 306 | err = _os.Write_int32(ret, 0) 307 | if err != nil { 308 | return err 309 | } 310 | } else { 311 | _imp := _val.(_impHelloWithContext) 312 | ret, err := _imp.Test(ctx) 313 | if err != nil { 314 | return err 315 | } 316 | 317 | err = _os.Write_int32(ret, 0) 318 | if err != nil { 319 | return err 320 | } 321 | } 322 | case "testHello": 323 | var SReq string 324 | err = _is.Read_string(&SReq, 1, true) 325 | if err != nil { 326 | return err 327 | } 328 | var SRsp string 329 | if withContext == false { 330 | _imp := _val.(_impHello) 331 | ret, err := _imp.TestHello(SReq, &SRsp) 332 | if err != nil { 333 | return err 334 | } 335 | 336 | err = _os.Write_int32(ret, 0) 337 | if err != nil { 338 | return err 339 | } 340 | } else { 341 | _imp := _val.(_impHelloWithContext) 342 | ret, err := _imp.TestHello(ctx, SReq, &SRsp) 343 | if err != nil { 344 | return err 345 | } 346 | 347 | err = _os.Write_int32(ret, 0) 348 | if err != nil { 349 | return err 350 | } 351 | } 352 | 353 | err = _os.Write_string(SRsp, 2) 354 | if err != nil { 355 | return err 356 | } 357 | 358 | default: 359 | return fmt.Errorf("func mismatch") 360 | } 361 | var _status map[string]string 362 | s, ok := current.GetResponseStatus(ctx) 363 | if ok && s != nil { 364 | _status = s 365 | } 366 | var _context map[string]string 367 | c, ok := current.GetResponseContext(ctx) 368 | if ok && c != nil { 369 | _context = c 370 | } 371 | *resp = requestf.ResponsePacket{ 372 | IVersion: 1, 373 | CPacketType: 0, 374 | IRequestId: req.IRequestId, 375 | IMessageType: 0, 376 | IRet: 0, 377 | SBuffer: tools.ByteToInt8(_os.ToBytes()), 378 | Status: _status, 379 | SResultDesc: "", 380 | Context: _context, 381 | } 382 | _ = length 383 | _ = have 384 | _ = ty 385 | return nil 386 | } 387 | --------------------------------------------------------------------------------