diff --git a/Makefile b/Makefile
index 77c2300..a65d210 100644
--- a/Makefile
+++ b/Makefile
@@ -1,34 +1,81 @@
-.PHONY: generate
-generate:
- rm -vf demo/output/*
- go run cmd/gotsrpc/gotsrpc.go demo/config.yml
- tsc --outFile cmd/demo/demo.js demo/demo.ts
-
-.PHONY: demo
-demo: generate
- cd cmd/demo && go run demo.go
-
-.PHONY: install
-install:
- go install cmd/gotsrpc/gotsrpc.go
-
-install.debug:
- go install -gcflags "all=-N -l" cmd/gotsrpc/gotsrpc.go
+.DEFAULT_GOAL:=help
.PHONY: test
+## Run go test
test:
go test -v ./...
+.PHONY: install
+## Run go install
+install:
+ go install cmd/gotsrpc/gotsrpc.go
+
+## Run go install with debug
+install.debug:
+ go install -gcflags "all=-N -l" cmd/gotsrpc/gotsrpc.go
+
.PHONY: outdated
+## Show outdated direct dependencies
outdated:
go list -u -m -json all | go-mod-outdated -update -direct
+## Run goreleaser
build:
goreleaser build --snapshot --rm-dist
+## run go build with debug
build.debug:
rm -f bin/gotsrpc
go build -gcflags "all=-N -l" -o bin/gotsrpc cmd/gotsrpc/gotsrpc.go
-debug.demo: build.debug
- dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec bin/gotsrpc demo/config.yml
\ No newline at end of file
+
+EXAMPLES=basic nullable
+define examples
+.PHONY: example.$(1)
+example.$(1):
+ cd example/${1} && go run ../../cmd/gotsrpc/gotsrpc.go gotsrpc.yml
+
+.PHONY: example.$(1).run
+example.$(1).run: example.${1}
+ cd example/${1}/client && tsc --build
+ cd example/${1} && go run main.go
+
+.PHONY: example.$(1).debug
+example.$(1).debug: build.debug
+ cd example/${1} && dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ../../bin/gotsrpc gotsrpc.yml
+endef
+$(foreach p,$(EXAMPLES),$(eval $(call examples,$(p))))
+
+## === Utils ===
+
+## Show help text
+help:
+ @awk '{ \
+ if ($$0 ~ /^.PHONY: [a-zA-Z\-\_0-9]+$$/) { \
+ helpCommand = substr($$0, index($$0, ":") + 2); \
+ if (helpMessage) { \
+ printf "\033[36m%-23s\033[0m %s\n", \
+ helpCommand, helpMessage; \
+ helpMessage = ""; \
+ } \
+ } else if ($$0 ~ /^[a-zA-Z\-\_0-9.]+:/) { \
+ helpCommand = substr($$0, 0, index($$0, ":")); \
+ if (helpMessage) { \
+ printf "\033[36m%-23s\033[0m %s\n", \
+ helpCommand, helpMessage"\n"; \
+ helpMessage = ""; \
+ } \
+ } else if ($$0 ~ /^##/) { \
+ if (helpMessage) { \
+ helpMessage = helpMessage"\n "substr($$0, 3); \
+ } else { \
+ helpMessage = substr($$0, 3); \
+ } \
+ } else { \
+ if (helpMessage) { \
+ print "\n "helpMessage"\n" \
+ } \
+ helpMessage = ""; \
+ } \
+ }' \
+ $(MAKEFILE_LIST)
diff --git a/README.md b/README.md
index 3c34e77..a845ae3 100644
--- a/README.md
+++ b/README.md
@@ -33,8 +33,6 @@ Will generate client and server side go and TypeScript code. Have fun!
## Configuration Examples
-[demo/config.yml](demo/config-commonjs.yml)
-
```yaml
targets:
demo:
diff --git a/demo/bar.go b/demo/bar.go
deleted file mode 100644
index 4cf44aa..0000000
--- a/demo/bar.go
+++ /dev/null
@@ -1,86 +0,0 @@
-package demo
-
-import (
- "net/http"
-
- "github.com/foomo/gotsrpc/v2/demo/nested"
-)
-
-type (
- CustomTypeInt int
- CustomTypeString string
- CustomTypeFoo string
-)
-
-type (
- AttributeID string
- AttributeMapping map[AttributeID]*AttributeDefinition
- AttributeDefinition struct {
- Key string
- Value string
- }
-)
-
-const (
- CustomTypeIntOne CustomTypeInt = 1
- CustomTypeIntTwo CustomTypeInt = 2
- CustomTypeIntThree CustomTypeInt = 3
-)
-
-const (
- CustomTypeStringOne CustomTypeString = "regular"
- CustomTypeStringTwo CustomTypeString = "camelCase"
- CustomTypeStringThree CustomTypeString = "snake_case"
- CustomTypeStringFour CustomTypeString = "slug-case"
- CustomTypeStringFive CustomTypeString = "CONST_CASE"
- CustomTypeStringSix CustomTypeString = "SLUG-CASE-UPPER"
- CustomTypeStringSeven CustomTypeString = "dot.case"
-)
-
-type (
- Inner struct {
- One string `json:"one"`
- }
- OuterNested struct {
- Inner Inner `json:"inner"`
- Two string `json:"two"`
- }
- OuterInline struct {
- Inner `json:",inline"`
- Two string `json:"two"`
- }
- CustomTypeStruct struct {
- CustomTypeFoo CustomTypeFoo
- CustomTypeInt CustomTypeInt
- CustomTypeString CustomTypeString
- CustomTypeNested nested.CustomTypeNested
- Check Check
- }
-)
-
-type CustomError string
-
-const (
- CustomErrorDemo CustomError = "demo"
-)
-
-var (
- ErrCustomDemo = NewCustomError(CustomErrorDemo)
-)
-
-func NewCustomError(e CustomError) *CustomError {
- return &e
-}
-
-func (e *CustomError) Error() string {
- return string(*e)
-}
-
-type Bar interface {
- Hello(w http.ResponseWriter, r *http.Request, number int64) int
- Repeat(one, two string) (three, four bool)
- Inheritance(inner Inner, nested OuterNested, inline OuterInline) (Inner, OuterNested, OuterInline)
- CustomType(customTypeInt CustomTypeInt, customTypeString CustomTypeString, CustomTypeStruct CustomTypeStruct) (*CustomTypeInt, *CustomTypeString, CustomTypeStruct)
- CustomError(one CustomError, two *CustomError) (three CustomError, four *CustomError)
- AttributeMapping() AttributeMapping
-}
diff --git a/demo/bar_vo.go b/demo/bar_vo.go
deleted file mode 100644
index c2cad77..0000000
--- a/demo/bar_vo.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package demo
-
-type (
- Check struct {
- Foo string
- }
-)
diff --git a/demo/config.yml b/demo/config.yml
deleted file mode 100644
index 4b6d1fa..0000000
--- a/demo/config.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-module:
- name: github.com/foomo/gotsrpc/v2
- path: ../
-
-targets:
- demo:
- services:
- /service/foo: Foo
- /service/bar: Bar
- /service/demo: Demo
- package: github.com/foomo/gotsrpc/v2/demo
- out: demo/output/client.ts
- gorpc:
- - Foo
- - Bar
- - Demo
- tsrpc:
- - Foo
- - Bar
- - Demo
-
-mappings:
- github.com/foomo/gotsrpc/v2/demo:
- out: demo/output/demo.ts
- github.com/foomo/gotsrpc/v2/demo/nested:
- out: demo/output/demo-nested.ts
-...
\ No newline at end of file
diff --git a/demo/demo.go b/demo/demo.go
deleted file mode 100644
index e09d34f..0000000
--- a/demo/demo.go
+++ /dev/null
@@ -1,86 +0,0 @@
-package demo
-
-import "github.com/foomo/gotsrpc/v2/demo/nested"
-
-type Err struct {
- Message string `json:"message"`
-}
-
-type LocalKey string
-
-type MapWithLocalStuff map[LocalKey]int
-
-type MapOfOtherStuff map[nested.JustAnotherStingType]int
-
-func (e *Err) Error() string {
- return e.Message
-}
-
-type ScalarError string
-
-func (se *ScalarError) Error() string {
- return string(*se)
-}
-
-type ScalarInPlace string
-
-type Demo struct {
- Bla bool
-}
-
-func (d *Demo) Hello(name string) (string, *Err) {
- if name == "Peter" {
- return "", &Err{"fuck you Peter I do not like you"}
- }
- return "Hello from the server: " + name, nil
-}
-
-func (d *Demo) HelloInterface(anything interface{}, anythingMap map[string]interface{}, anythingSlice []interface{}) {
-
-}
-
-func (d *Demo) HelloNumberMaps(intMap map[int]string) (floatMap map[float64]string) {
- floatMap = map[float64]string{}
- for i, str := range intMap {
- floatMap[float64(i)] = str
- }
- return
-}
-
-func (d *Demo) HelloScalarError() (err *ScalarError) {
- return
-}
-
-func (d *Demo) HelloMapType() (otherStuff MapOfOtherStuff) {
- return MapOfOtherStuff{
- nested.JustAnotherStingType("foo"): 1,
- }
-}
-
-func (d *Demo) HelloLocalMapType() (localStuff MapWithLocalStuff) {
- return MapWithLocalStuff{
- "foo": 1,
- }
-}
-
-type RemoteScalarsStrings []nested.JustAnotherStingType
-
-type RemoteScalarStruct struct {
- Foo RemoteScalarsStrings
- Bar RemoteScalarsStrings
-}
-
-func (d *Demo) ArrayOfRemoteScalars() (arrayOfRemoteScalars RemoteScalarsStrings) {
- return []nested.JustAnotherStingType{"foo", "bar"}
-}
-
-func (d *Demo) ArrayOfRemoteScalarsInAStruct() (strct RemoteScalarStruct) {
- return RemoteScalarStruct{
- Foo: RemoteScalarsStrings{"Foo"},
- Bar: RemoteScalarsStrings{"Bar"},
- }
-}
-
-func (d *Demo) nothingInNothinOut() {
-
-}
diff --git a/demo/demo.ts b/demo/demo.ts
deleted file mode 100644
index 9548e1c..0000000
--- a/demo/demo.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-
-///
-///
-///
-
-var handleCrap = (err:GoTSRPC.Demo.Err, request:XMLHttpRequest) => {
- if(err) {
- console.log("fuckit logic");
- } else if(request) {
- console.warn("request crap", request);
- } else {
- console.log("no crap", err);
- }
-}
-
-GoTSRPC.Demo.DemoClient.defaultInst.hello(
- "Hansi",
- (reply:string, err:GoTSRPC.Demo.Err) => {
- console.log("server says hello to Hansi", reply, err);
- handleCrap(err, null);
- },
- (request:XMLHttpRequest) => {
- console.log("wtf", request);
- handleCrap(null, request);
- }
-);
-
-
-GoTSRPC.Demo.DemoClient.defaultInst.hello(
- "Peter",
- (reply:string, err:GoTSRPC.Demo.Err) => {
- console.log("server should not like Peter, sorry Peter ;)", reply, err);
- handleCrap(err, null);
- },
- (request:XMLHttpRequest) => {
- console.log("wtf", request);
- handleCrap(null, request);
- }
-);
diff --git a/demo/demo_complex.go b/demo/demo_complex.go
deleted file mode 100644
index 44ccab3..0000000
--- a/demo/demo_complex.go
+++ /dev/null
@@ -1,65 +0,0 @@
-package demo
-
-import nstd "github.com/foomo/gotsrpc/v2/demo/nested"
-
-//go:generate codecgen -o values.generated.go demo_complex.go
-
-type Address struct {
- City string `json:"city,omitempty"`
- Signs []string `json:"signs,omitempty"`
- SecretServerCrap bool `json:"-"`
- PeoplePtr []*Person
- ArrayOfMaps []map[string]bool
- ArrayArrayAddress [][]*Address
- People []Person
- MapCrap map[string]map[int]bool
- NestedPtr *nstd.Nested
- NestedStruct nstd.Nested
-}
-
-type Person struct {
- Name string
- AddressPtr *Address `json:"address"`
- AddressStruct Address
- Addresses map[string]*Address
-
- InlinePtr *struct {
- Foo bool
- }
- InlineStruct struct {
- Bar string
- }
- iAmPrivate string
- DNA []byte
-}
-
-func (d *Demo) ExtractAddress(person *Person) (addr *Address, e *Err) {
- if person == nil {
- return nil, nil
- }
- if person.AddressPtr != nil {
- return person.AddressPtr, nil
- }
- return nil, &Err{"there is no address on that person"}
-}
-
-func (d *Demo) TestScalarInPlace() ScalarInPlace {
- return ScalarInPlace("hier")
-}
-
-func (d *Demo) MapCrap() (crap map[string][]int) {
- return map[string][]int{}
-}
-
-func (d *Demo) Nest() []*nstd.Nested {
- return nil
-}
-
-func (d *Demo) Any(any nstd.Any, anyList []nstd.Any, anyMap map[string]nstd.Any) (nstd.Any, []nstd.Any, map[string]nstd.Any) {
- return nil, nil, nil
-}
-
-func (d *Demo) GiveMeAScalar() (amount nstd.Amount, wahr nstd.True, hier ScalarInPlace) {
- //func (s *Service) giveMeAScalar() (amount nstd.Amount, wahr nstd.True, hier ScalarInPlace) {
- return nstd.Amount(10), nstd.ItIsTrue, ScalarInPlace("hier")
-}
diff --git a/demo/foo.go b/demo/foo.go
deleted file mode 100644
index 4ba1665..0000000
--- a/demo/foo.go
+++ /dev/null
@@ -1,8 +0,0 @@
-package demo
-
-type Foo struct {
-}
-
-func (f *Foo) Hello(number int64) int {
- return 0
-}
diff --git a/demo/gorpc_gen.go b/demo/gorpc_gen.go
deleted file mode 100644
index 6bf03a2..0000000
--- a/demo/gorpc_gen.go
+++ /dev/null
@@ -1,485 +0,0 @@
-// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
-
-package demo
-
-import (
- tls "crypto/tls"
- gob "encoding/gob"
- fmt "fmt"
- reflect "reflect"
- strings "strings"
- time "time"
-
- gotsrpc "github.com/foomo/gotsrpc/v2"
- github_com_foomo_gotsrpc_v2_demo_nested "github.com/foomo/gotsrpc/v2/demo/nested"
- gorpc "github.com/valyala/gorpc"
-)
-
-type (
- FooGoRPCProxy struct {
- server *gorpc.Server
- service *Foo
- callStatsHandler gotsrpc.GoRPCCallStatsHandlerFun
- }
-
- FooHelloRequest struct {
- Number int64
- }
- FooHelloResponse struct {
- RetHello_0 int
- }
-)
-
-func init() {
- gob.Register(FooHelloRequest{})
- gob.Register(FooHelloResponse{})
-}
-
-func NewFooGoRPCProxy(addr string, service *Foo, tlsConfig *tls.Config) *FooGoRPCProxy {
- proxy := &FooGoRPCProxy{
- service: service,
- }
-
- if tlsConfig != nil {
- proxy.server = gorpc.NewTLSServer(addr, proxy.handler, tlsConfig)
- } else {
- proxy.server = gorpc.NewTCPServer(addr, proxy.handler)
- }
-
- return proxy
-}
-
-func (p *FooGoRPCProxy) Start() error {
- return p.server.Start()
-}
-
-func (p *FooGoRPCProxy) Serve() error {
- return p.server.Serve()
-}
-
-func (p *FooGoRPCProxy) Stop() {
- p.server.Stop()
-}
-
-func (p *FooGoRPCProxy) SetCallStatsHandler(handler gotsrpc.GoRPCCallStatsHandlerFun) {
- p.callStatsHandler = handler
-}
-
-func (p *FooGoRPCProxy) handler(clientAddr string, request interface{}) (response interface{}) {
- start := time.Now()
-
- reqType := reflect.TypeOf(request).String()
- funcNameParts := strings.Split(reqType, ".")
- funcName := funcNameParts[len(funcNameParts)-1]
-
- switch funcName {
- case "FooHelloRequest":
- req := request.(FooHelloRequest)
- retHello_0 := p.service.Hello(req.Number)
- response = FooHelloResponse{RetHello_0: retHello_0}
- default:
- fmt.Println("Unkown request type", reflect.TypeOf(request).String())
- }
-
- if p.callStatsHandler != nil {
- p.callStatsHandler(&gotsrpc.CallStats{
- Func: funcName,
- Package: "github.com/foomo/gotsrpc/v2/demo",
- Service: "Foo",
- Execution: time.Since(start),
- })
- }
-
- return
-}
-
-type (
- DemoGoRPCProxy struct {
- server *gorpc.Server
- service *Demo
- callStatsHandler gotsrpc.GoRPCCallStatsHandlerFun
- }
-
- DemoAnyRequest struct {
- Any github_com_foomo_gotsrpc_v2_demo_nested.Any
- AnyList []github_com_foomo_gotsrpc_v2_demo_nested.Any
- AnyMap map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any
- }
- DemoAnyResponse struct {
- RetAny_0 github_com_foomo_gotsrpc_v2_demo_nested.Any
- RetAny_1 []github_com_foomo_gotsrpc_v2_demo_nested.Any
- RetAny_2 map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any
- }
-
- DemoArrayOfRemoteScalarsRequest struct {
- }
- DemoArrayOfRemoteScalarsResponse struct {
- ArrayOfRemoteScalars RemoteScalarsStrings
- }
-
- DemoArrayOfRemoteScalarsInAStructRequest struct {
- }
- DemoArrayOfRemoteScalarsInAStructResponse struct {
- Strct RemoteScalarStruct
- }
-
- DemoExtractAddressRequest struct {
- Person *Person
- }
- DemoExtractAddressResponse struct {
- Addr *Address
- E *Err
- }
-
- DemoGiveMeAScalarRequest struct {
- }
- DemoGiveMeAScalarResponse struct {
- Amount github_com_foomo_gotsrpc_v2_demo_nested.Amount
- Wahr github_com_foomo_gotsrpc_v2_demo_nested.True
- Hier ScalarInPlace
- }
-
- DemoHelloRequest struct {
- Name string
- }
- DemoHelloResponse struct {
- RetHello_0 string
- RetHello_1 *Err
- }
-
- DemoHelloInterfaceRequest struct {
- Anything interface{}
- AnythingMap map[string]interface{}
- AnythingSlice []interface{}
- }
- DemoHelloInterfaceResponse struct {
- }
-
- DemoHelloLocalMapTypeRequest struct {
- }
- DemoHelloLocalMapTypeResponse struct {
- LocalStuff MapWithLocalStuff
- }
-
- DemoHelloMapTypeRequest struct {
- }
- DemoHelloMapTypeResponse struct {
- OtherStuff MapOfOtherStuff
- }
-
- DemoHelloNumberMapsRequest struct {
- IntMap map[int]string
- }
- DemoHelloNumberMapsResponse struct {
- FloatMap map[float64]string
- }
-
- DemoHelloScalarErrorRequest struct {
- }
- DemoHelloScalarErrorResponse struct {
- Err *ScalarError
- }
-
- DemoMapCrapRequest struct {
- }
- DemoMapCrapResponse struct {
- Crap map[string][]int
- }
-
- DemoNestRequest struct {
- }
- DemoNestResponse struct {
- RetNest_0 []*github_com_foomo_gotsrpc_v2_demo_nested.Nested
- }
-
- DemoTestScalarInPlaceRequest struct {
- }
- DemoTestScalarInPlaceResponse struct {
- RetTestScalarInPlace_0 ScalarInPlace
- }
-)
-
-func init() {
- gob.Register(DemoAnyRequest{})
- gob.Register(DemoAnyResponse{})
- gob.Register(DemoArrayOfRemoteScalarsRequest{})
- gob.Register(DemoArrayOfRemoteScalarsResponse{})
- gob.Register(DemoArrayOfRemoteScalarsInAStructRequest{})
- gob.Register(DemoArrayOfRemoteScalarsInAStructResponse{})
- gob.Register(DemoExtractAddressRequest{})
- gob.Register(DemoExtractAddressResponse{})
- gob.Register(DemoGiveMeAScalarRequest{})
- gob.Register(DemoGiveMeAScalarResponse{})
- gob.Register(DemoHelloRequest{})
- gob.Register(DemoHelloResponse{})
- gob.Register(DemoHelloInterfaceRequest{})
- gob.Register(DemoHelloInterfaceResponse{})
- gob.Register(DemoHelloLocalMapTypeRequest{})
- gob.Register(DemoHelloLocalMapTypeResponse{})
- gob.Register(DemoHelloMapTypeRequest{})
- gob.Register(DemoHelloMapTypeResponse{})
- gob.Register(DemoHelloNumberMapsRequest{})
- gob.Register(DemoHelloNumberMapsResponse{})
- gob.Register(DemoHelloScalarErrorRequest{})
- gob.Register(DemoHelloScalarErrorResponse{})
- gob.Register(DemoMapCrapRequest{})
- gob.Register(DemoMapCrapResponse{})
- gob.Register(DemoNestRequest{})
- gob.Register(DemoNestResponse{})
- gob.Register(DemoTestScalarInPlaceRequest{})
- gob.Register(DemoTestScalarInPlaceResponse{})
-}
-
-func NewDemoGoRPCProxy(addr string, service *Demo, tlsConfig *tls.Config) *DemoGoRPCProxy {
- proxy := &DemoGoRPCProxy{
- service: service,
- }
-
- if tlsConfig != nil {
- proxy.server = gorpc.NewTLSServer(addr, proxy.handler, tlsConfig)
- } else {
- proxy.server = gorpc.NewTCPServer(addr, proxy.handler)
- }
-
- return proxy
-}
-
-func (p *DemoGoRPCProxy) Start() error {
- return p.server.Start()
-}
-
-func (p *DemoGoRPCProxy) Serve() error {
- return p.server.Serve()
-}
-
-func (p *DemoGoRPCProxy) Stop() {
- p.server.Stop()
-}
-
-func (p *DemoGoRPCProxy) SetCallStatsHandler(handler gotsrpc.GoRPCCallStatsHandlerFun) {
- p.callStatsHandler = handler
-}
-
-func (p *DemoGoRPCProxy) handler(clientAddr string, request interface{}) (response interface{}) {
- start := time.Now()
-
- reqType := reflect.TypeOf(request).String()
- funcNameParts := strings.Split(reqType, ".")
- funcName := funcNameParts[len(funcNameParts)-1]
-
- switch funcName {
- case "DemoAnyRequest":
- req := request.(DemoAnyRequest)
- retAny_0, retAny_1, retAny_2 := p.service.Any(req.Any, req.AnyList, req.AnyMap)
- response = DemoAnyResponse{RetAny_0: retAny_0, RetAny_1: retAny_1, RetAny_2: retAny_2}
- case "DemoArrayOfRemoteScalarsRequest":
- arrayOfRemoteScalars := p.service.ArrayOfRemoteScalars()
- response = DemoArrayOfRemoteScalarsResponse{ArrayOfRemoteScalars: arrayOfRemoteScalars}
- case "DemoArrayOfRemoteScalarsInAStructRequest":
- strct := p.service.ArrayOfRemoteScalarsInAStruct()
- response = DemoArrayOfRemoteScalarsInAStructResponse{Strct: strct}
- case "DemoExtractAddressRequest":
- req := request.(DemoExtractAddressRequest)
- addr, e := p.service.ExtractAddress(req.Person)
- response = DemoExtractAddressResponse{Addr: addr, E: e}
- case "DemoGiveMeAScalarRequest":
- amount, wahr, hier := p.service.GiveMeAScalar()
- response = DemoGiveMeAScalarResponse{Amount: amount, Wahr: wahr, Hier: hier}
- case "DemoHelloRequest":
- req := request.(DemoHelloRequest)
- retHello_0, retHello_1 := p.service.Hello(req.Name)
- response = DemoHelloResponse{RetHello_0: retHello_0, RetHello_1: retHello_1}
- case "DemoHelloInterfaceRequest":
- req := request.(DemoHelloInterfaceRequest)
- p.service.HelloInterface(req.Anything, req.AnythingMap, req.AnythingSlice)
- response = DemoHelloInterfaceResponse{}
- case "DemoHelloLocalMapTypeRequest":
- localStuff := p.service.HelloLocalMapType()
- response = DemoHelloLocalMapTypeResponse{LocalStuff: localStuff}
- case "DemoHelloMapTypeRequest":
- otherStuff := p.service.HelloMapType()
- response = DemoHelloMapTypeResponse{OtherStuff: otherStuff}
- case "DemoHelloNumberMapsRequest":
- req := request.(DemoHelloNumberMapsRequest)
- floatMap := p.service.HelloNumberMaps(req.IntMap)
- response = DemoHelloNumberMapsResponse{FloatMap: floatMap}
- case "DemoHelloScalarErrorRequest":
- err := p.service.HelloScalarError()
- response = DemoHelloScalarErrorResponse{Err: err}
- case "DemoMapCrapRequest":
- crap := p.service.MapCrap()
- response = DemoMapCrapResponse{Crap: crap}
- case "DemoNestRequest":
- retNest_0 := p.service.Nest()
- response = DemoNestResponse{RetNest_0: retNest_0}
- case "DemoTestScalarInPlaceRequest":
- retTestScalarInPlace_0 := p.service.TestScalarInPlace()
- response = DemoTestScalarInPlaceResponse{RetTestScalarInPlace_0: retTestScalarInPlace_0}
- default:
- fmt.Println("Unkown request type", reflect.TypeOf(request).String())
- }
-
- if p.callStatsHandler != nil {
- p.callStatsHandler(&gotsrpc.CallStats{
- Func: funcName,
- Package: "github.com/foomo/gotsrpc/v2/demo",
- Service: "Demo",
- Execution: time.Since(start),
- })
- }
-
- return
-}
-
-type (
- BarGoRPCProxy struct {
- server *gorpc.Server
- service Bar
- callStatsHandler gotsrpc.GoRPCCallStatsHandlerFun
- }
-
- BarAttributeMappingRequest struct {
- }
- BarAttributeMappingResponse struct {
- RetAttributeMapping_0 AttributeMapping
- }
-
- BarCustomErrorRequest struct {
- One CustomError
- Two *CustomError
- }
- BarCustomErrorResponse struct {
- Three CustomError
- Four *CustomError
- }
-
- BarCustomTypeRequest struct {
- CustomTypeInt CustomTypeInt
- CustomTypeString CustomTypeString
- CustomTypeStruct CustomTypeStruct
- }
- BarCustomTypeResponse struct {
- RetCustomType_0 *CustomTypeInt
- RetCustomType_1 *CustomTypeString
- RetCustomType_2 CustomTypeStruct
- }
-
- BarHelloRequest struct {
- Number int64
- }
- BarHelloResponse struct {
- RetHello_0 int
- }
-
- BarInheritanceRequest struct {
- Inner Inner
- Nested OuterNested
- Inline OuterInline
- }
- BarInheritanceResponse struct {
- RetInheritance_0 Inner
- RetInheritance_1 OuterNested
- RetInheritance_2 OuterInline
- }
-
- BarRepeatRequest struct {
- One string
- Two string
- }
- BarRepeatResponse struct {
- Three bool
- Four bool
- }
-)
-
-func init() {
- gob.Register(BarAttributeMappingRequest{})
- gob.Register(BarAttributeMappingResponse{})
- gob.Register(BarCustomErrorRequest{})
- gob.Register(BarCustomErrorResponse{})
- gob.Register(BarCustomTypeRequest{})
- gob.Register(BarCustomTypeResponse{})
- gob.Register(BarHelloRequest{})
- gob.Register(BarHelloResponse{})
- gob.Register(BarInheritanceRequest{})
- gob.Register(BarInheritanceResponse{})
- gob.Register(BarRepeatRequest{})
- gob.Register(BarRepeatResponse{})
-}
-
-func NewBarGoRPCProxy(addr string, service Bar, tlsConfig *tls.Config) *BarGoRPCProxy {
- proxy := &BarGoRPCProxy{
- service: service,
- }
-
- if tlsConfig != nil {
- proxy.server = gorpc.NewTLSServer(addr, proxy.handler, tlsConfig)
- } else {
- proxy.server = gorpc.NewTCPServer(addr, proxy.handler)
- }
-
- return proxy
-}
-
-func (p *BarGoRPCProxy) Start() error {
- return p.server.Start()
-}
-
-func (p *BarGoRPCProxy) Serve() error {
- return p.server.Serve()
-}
-
-func (p *BarGoRPCProxy) Stop() {
- p.server.Stop()
-}
-
-func (p *BarGoRPCProxy) SetCallStatsHandler(handler gotsrpc.GoRPCCallStatsHandlerFun) {
- p.callStatsHandler = handler
-}
-
-func (p *BarGoRPCProxy) handler(clientAddr string, request interface{}) (response interface{}) {
- start := time.Now()
-
- reqType := reflect.TypeOf(request).String()
- funcNameParts := strings.Split(reqType, ".")
- funcName := funcNameParts[len(funcNameParts)-1]
-
- switch funcName {
- case "BarAttributeMappingRequest":
- retAttributeMapping_0 := p.service.AttributeMapping()
- response = BarAttributeMappingResponse{RetAttributeMapping_0: retAttributeMapping_0}
- case "BarCustomErrorRequest":
- req := request.(BarCustomErrorRequest)
- three, four := p.service.CustomError(req.One, req.Two)
- response = BarCustomErrorResponse{Three: three, Four: four}
- case "BarCustomTypeRequest":
- req := request.(BarCustomTypeRequest)
- retCustomType_0, retCustomType_1, retCustomType_2 := p.service.CustomType(req.CustomTypeInt, req.CustomTypeString, req.CustomTypeStruct)
- response = BarCustomTypeResponse{RetCustomType_0: retCustomType_0, RetCustomType_1: retCustomType_1, RetCustomType_2: retCustomType_2}
- case "BarHelloRequest":
- req := request.(BarHelloRequest)
- retHello_0 := p.service.Hello(nil, nil, req.Number)
- response = BarHelloResponse{RetHello_0: retHello_0}
- case "BarInheritanceRequest":
- req := request.(BarInheritanceRequest)
- retInheritance_0, retInheritance_1, retInheritance_2 := p.service.Inheritance(req.Inner, req.Nested, req.Inline)
- response = BarInheritanceResponse{RetInheritance_0: retInheritance_0, RetInheritance_1: retInheritance_1, RetInheritance_2: retInheritance_2}
- case "BarRepeatRequest":
- req := request.(BarRepeatRequest)
- three, four := p.service.Repeat(req.One, req.Two)
- response = BarRepeatResponse{Three: three, Four: four}
- default:
- fmt.Println("Unkown request type", reflect.TypeOf(request).String())
- }
-
- if p.callStatsHandler != nil {
- p.callStatsHandler(&gotsrpc.CallStats{
- Func: funcName,
- Package: "github.com/foomo/gotsrpc/v2/demo",
- Service: "Bar",
- Execution: time.Since(start),
- })
- }
-
- return
-}
diff --git a/demo/gorpcclient_gen.go b/demo/gorpcclient_gen.go
deleted file mode 100644
index 6f46ac9..0000000
--- a/demo/gorpcclient_gen.go
+++ /dev/null
@@ -1,306 +0,0 @@
-// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
-
-package demo
-
-import (
- tls "crypto/tls"
-
- github_com_foomo_gotsrpc_v2_demo_nested "github.com/foomo/gotsrpc/v2/demo/nested"
- gorpc "github.com/valyala/gorpc"
-)
-
-type FooGoRPCClient struct {
- Client *gorpc.Client
-}
-
-func NewFooGoRPCClient(addr string, tlsConfig *tls.Config) *FooGoRPCClient {
- client := &FooGoRPCClient{}
- if tlsConfig == nil {
- client.Client = gorpc.NewTCPClient(addr)
- } else {
- client.Client = gorpc.NewTLSClient(addr, tlsConfig)
- }
- return client
-}
-
-func (tsc *FooGoRPCClient) Start() {
- tsc.Client.Start()
-}
-
-func (tsc *FooGoRPCClient) Stop() {
- tsc.Client.Stop()
-}
-
-func (tsc *FooGoRPCClient) Hello(number int64) (retHello_0 int, clientErr error) {
- req := FooHelloRequest{Number: number}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(FooHelloResponse)
- return response.RetHello_0, nil
-}
-
-type DemoGoRPCClient struct {
- Client *gorpc.Client
-}
-
-func NewDemoGoRPCClient(addr string, tlsConfig *tls.Config) *DemoGoRPCClient {
- client := &DemoGoRPCClient{}
- if tlsConfig == nil {
- client.Client = gorpc.NewTCPClient(addr)
- } else {
- client.Client = gorpc.NewTLSClient(addr, tlsConfig)
- }
- return client
-}
-
-func (tsc *DemoGoRPCClient) Start() {
- tsc.Client.Start()
-}
-
-func (tsc *DemoGoRPCClient) Stop() {
- tsc.Client.Stop()
-}
-
-func (tsc *DemoGoRPCClient) Any(any github_com_foomo_gotsrpc_v2_demo_nested.Any, anyList []github_com_foomo_gotsrpc_v2_demo_nested.Any, anyMap map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any) (retAny_0 github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_1 []github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_2 map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any, clientErr error) {
- req := DemoAnyRequest{Any: any, AnyList: anyList, AnyMap: anyMap}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoAnyResponse)
- return response.RetAny_0, response.RetAny_1, response.RetAny_2, nil
-}
-
-func (tsc *DemoGoRPCClient) ArrayOfRemoteScalars() (arrayOfRemoteScalars RemoteScalarsStrings, clientErr error) {
- req := DemoArrayOfRemoteScalarsRequest{}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoArrayOfRemoteScalarsResponse)
- return response.ArrayOfRemoteScalars, nil
-}
-
-func (tsc *DemoGoRPCClient) ArrayOfRemoteScalarsInAStruct() (strct RemoteScalarStruct, clientErr error) {
- req := DemoArrayOfRemoteScalarsInAStructRequest{}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoArrayOfRemoteScalarsInAStructResponse)
- return response.Strct, nil
-}
-
-func (tsc *DemoGoRPCClient) ExtractAddress(person *Person) (addr *Address, e *Err, clientErr error) {
- req := DemoExtractAddressRequest{Person: person}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoExtractAddressResponse)
- return response.Addr, response.E, nil
-}
-
-func (tsc *DemoGoRPCClient) GiveMeAScalar() (amount github_com_foomo_gotsrpc_v2_demo_nested.Amount, wahr github_com_foomo_gotsrpc_v2_demo_nested.True, hier ScalarInPlace, clientErr error) {
- req := DemoGiveMeAScalarRequest{}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoGiveMeAScalarResponse)
- return response.Amount, response.Wahr, response.Hier, nil
-}
-
-func (tsc *DemoGoRPCClient) Hello(name string) (retHello_0 string, retHello_1 *Err, clientErr error) {
- req := DemoHelloRequest{Name: name}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoHelloResponse)
- return response.RetHello_0, response.RetHello_1, nil
-}
-
-func (tsc *DemoGoRPCClient) HelloInterface(anything interface{}, anythingMap map[string]interface{}, anythingSlice []interface{}) (clientErr error) {
- req := DemoHelloInterfaceRequest{Anything: anything, AnythingMap: anythingMap, AnythingSlice: anythingSlice}
- _, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- return nil
-}
-
-func (tsc *DemoGoRPCClient) HelloLocalMapType() (localStuff MapWithLocalStuff, clientErr error) {
- req := DemoHelloLocalMapTypeRequest{}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoHelloLocalMapTypeResponse)
- return response.LocalStuff, nil
-}
-
-func (tsc *DemoGoRPCClient) HelloMapType() (otherStuff MapOfOtherStuff, clientErr error) {
- req := DemoHelloMapTypeRequest{}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoHelloMapTypeResponse)
- return response.OtherStuff, nil
-}
-
-func (tsc *DemoGoRPCClient) HelloNumberMaps(intMap map[int]string) (floatMap map[float64]string, clientErr error) {
- req := DemoHelloNumberMapsRequest{IntMap: intMap}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoHelloNumberMapsResponse)
- return response.FloatMap, nil
-}
-
-func (tsc *DemoGoRPCClient) HelloScalarError() (err *ScalarError, clientErr error) {
- req := DemoHelloScalarErrorRequest{}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoHelloScalarErrorResponse)
- return response.Err, nil
-}
-
-func (tsc *DemoGoRPCClient) MapCrap() (crap map[string][]int, clientErr error) {
- req := DemoMapCrapRequest{}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoMapCrapResponse)
- return response.Crap, nil
-}
-
-func (tsc *DemoGoRPCClient) Nest() (retNest_0 []*github_com_foomo_gotsrpc_v2_demo_nested.Nested, clientErr error) {
- req := DemoNestRequest{}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoNestResponse)
- return response.RetNest_0, nil
-}
-
-func (tsc *DemoGoRPCClient) TestScalarInPlace() (retTestScalarInPlace_0 ScalarInPlace, clientErr error) {
- req := DemoTestScalarInPlaceRequest{}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(DemoTestScalarInPlaceResponse)
- return response.RetTestScalarInPlace_0, nil
-}
-
-type BarGoRPCClient struct {
- Client *gorpc.Client
-}
-
-func NewBarGoRPCClient(addr string, tlsConfig *tls.Config) *BarGoRPCClient {
- client := &BarGoRPCClient{}
- if tlsConfig == nil {
- client.Client = gorpc.NewTCPClient(addr)
- } else {
- client.Client = gorpc.NewTLSClient(addr, tlsConfig)
- }
- return client
-}
-
-func (tsc *BarGoRPCClient) Start() {
- tsc.Client.Start()
-}
-
-func (tsc *BarGoRPCClient) Stop() {
- tsc.Client.Stop()
-}
-
-func (tsc *BarGoRPCClient) AttributeMapping() (retAttributeMapping_0 AttributeMapping, clientErr error) {
- req := BarAttributeMappingRequest{}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(BarAttributeMappingResponse)
- return response.RetAttributeMapping_0, nil
-}
-
-func (tsc *BarGoRPCClient) CustomError(one CustomError, two *CustomError) (three CustomError, four *CustomError, clientErr error) {
- req := BarCustomErrorRequest{One: one, Two: two}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(BarCustomErrorResponse)
- return response.Three, response.Four, nil
-}
-
-func (tsc *BarGoRPCClient) CustomType(customTypeInt CustomTypeInt, customTypeString CustomTypeString, CustomTypeStruct CustomTypeStruct) (retCustomType_0 *CustomTypeInt, retCustomType_1 *CustomTypeString, retCustomType_2 CustomTypeStruct, clientErr error) {
- req := BarCustomTypeRequest{CustomTypeInt: customTypeInt, CustomTypeString: customTypeString, CustomTypeStruct: CustomTypeStruct}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(BarCustomTypeResponse)
- return response.RetCustomType_0, response.RetCustomType_1, response.RetCustomType_2, nil
-}
-
-func (tsc *BarGoRPCClient) Hello(number int64) (retHello_0 int, clientErr error) {
- req := BarHelloRequest{Number: number}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(BarHelloResponse)
- return response.RetHello_0, nil
-}
-
-func (tsc *BarGoRPCClient) Inheritance(inner Inner, nested OuterNested, inline OuterInline) (retInheritance_0 Inner, retInheritance_1 OuterNested, retInheritance_2 OuterInline, clientErr error) {
- req := BarInheritanceRequest{Inner: inner, Nested: nested, Inline: inline}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(BarInheritanceResponse)
- return response.RetInheritance_0, response.RetInheritance_1, response.RetInheritance_2, nil
-}
-
-func (tsc *BarGoRPCClient) Repeat(one string, two string) (three bool, four bool, clientErr error) {
- req := BarRepeatRequest{One: one, Two: two}
- rpcCallRes, rpcCallErr := tsc.Client.Call(req)
- if rpcCallErr != nil {
- clientErr = rpcCallErr
- return
- }
- response := rpcCallRes.(BarRepeatResponse)
- return response.Three, response.Four, nil
-}
diff --git a/demo/gotsrpc_gen.go b/demo/gotsrpc_gen.go
deleted file mode 100644
index 3bb4cc7..0000000
--- a/demo/gotsrpc_gen.go
+++ /dev/null
@@ -1,455 +0,0 @@
-// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
-
-package demo
-
-import (
- io "io"
- ioutil "io/ioutil"
- http "net/http"
- time "time"
-
- gotsrpc "github.com/foomo/gotsrpc/v2"
- github_com_foomo_gotsrpc_v2_demo_nested "github.com/foomo/gotsrpc/v2/demo/nested"
-)
-
-const (
- FooGoTSRPCProxyHello = "Hello"
-)
-
-type FooGoTSRPCProxy struct {
- EndPoint string
- service *Foo
-}
-
-func NewDefaultFooGoTSRPCProxy(service *Foo) *FooGoTSRPCProxy {
- return &FooGoTSRPCProxy{
- EndPoint: "/service/foo",
- service: service,
- }
-}
-
-func NewFooGoTSRPCProxy(service *Foo, endpoint string) *FooGoTSRPCProxy {
- return &FooGoTSRPCProxy{
- EndPoint: endpoint,
- service: service,
- }
-}
-
-// ServeHTTP exposes your service
-func (p *FooGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- if r.Method != http.MethodPost {
- if r.Method == http.MethodOptions {
- return
- }
- gotsrpc.ErrorMethodNotAllowed(w)
- return
- }
- defer io.Copy(ioutil.Discard, r.Body) // Drain Request Body
-
- funcName := gotsrpc.GetCalledFunc(r, p.EndPoint)
- callStats := gotsrpc.GetStatsForRequest(r)
- if callStats != nil {
- callStats.Func = funcName
- callStats.Package = "github.com/foomo/gotsrpc/v2/demo"
- callStats.Service = "Foo"
- }
- switch funcName {
- case FooGoTSRPCProxyHello:
- var (
- arg_number int64
- )
- args := []interface{}{&arg_number}
- err := gotsrpc.LoadArgs(&args, callStats, r)
- if err != nil {
- gotsrpc.ErrorCouldNotLoadArgs(w)
- return
- }
- executionStart := time.Now()
- helloRet := p.service.Hello(arg_number)
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{helloRet}, callStats, r, w)
- return
- default:
- gotsrpc.ClearStats(r)
- http.Error(w, "404 - not found "+r.URL.Path, http.StatusNotFound)
- }
-}
-
-const (
- DemoGoTSRPCProxyAny = "Any"
- DemoGoTSRPCProxyArrayOfRemoteScalars = "ArrayOfRemoteScalars"
- DemoGoTSRPCProxyArrayOfRemoteScalarsInAStruct = "ArrayOfRemoteScalarsInAStruct"
- DemoGoTSRPCProxyExtractAddress = "ExtractAddress"
- DemoGoTSRPCProxyGiveMeAScalar = "GiveMeAScalar"
- DemoGoTSRPCProxyHello = "Hello"
- DemoGoTSRPCProxyHelloInterface = "HelloInterface"
- DemoGoTSRPCProxyHelloLocalMapType = "HelloLocalMapType"
- DemoGoTSRPCProxyHelloMapType = "HelloMapType"
- DemoGoTSRPCProxyHelloNumberMaps = "HelloNumberMaps"
- DemoGoTSRPCProxyHelloScalarError = "HelloScalarError"
- DemoGoTSRPCProxyMapCrap = "MapCrap"
- DemoGoTSRPCProxyNest = "Nest"
- DemoGoTSRPCProxyTestScalarInPlace = "TestScalarInPlace"
-)
-
-type DemoGoTSRPCProxy struct {
- EndPoint string
- service *Demo
-}
-
-func NewDefaultDemoGoTSRPCProxy(service *Demo) *DemoGoTSRPCProxy {
- return &DemoGoTSRPCProxy{
- EndPoint: "/service/demo",
- service: service,
- }
-}
-
-func NewDemoGoTSRPCProxy(service *Demo, endpoint string) *DemoGoTSRPCProxy {
- return &DemoGoTSRPCProxy{
- EndPoint: endpoint,
- service: service,
- }
-}
-
-// ServeHTTP exposes your service
-func (p *DemoGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- if r.Method != http.MethodPost {
- if r.Method == http.MethodOptions {
- return
- }
- gotsrpc.ErrorMethodNotAllowed(w)
- return
- }
- defer io.Copy(ioutil.Discard, r.Body) // Drain Request Body
-
- funcName := gotsrpc.GetCalledFunc(r, p.EndPoint)
- callStats := gotsrpc.GetStatsForRequest(r)
- if callStats != nil {
- callStats.Func = funcName
- callStats.Package = "github.com/foomo/gotsrpc/v2/demo"
- callStats.Service = "Demo"
- }
- switch funcName {
- case DemoGoTSRPCProxyAny:
- var (
- arg_any github_com_foomo_gotsrpc_v2_demo_nested.Any
- arg_anyList []github_com_foomo_gotsrpc_v2_demo_nested.Any
- arg_anyMap map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any
- )
- args := []interface{}{&arg_any, &arg_anyList, &arg_anyMap}
- err := gotsrpc.LoadArgs(&args, callStats, r)
- if err != nil {
- gotsrpc.ErrorCouldNotLoadArgs(w)
- return
- }
- executionStart := time.Now()
- anyRet, anyRet_1, anyRet_2 := p.service.Any(arg_any, arg_anyList, arg_anyMap)
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{anyRet, anyRet_1, anyRet_2}, callStats, r, w)
- return
- case DemoGoTSRPCProxyArrayOfRemoteScalars:
- executionStart := time.Now()
- arrayOfRemoteScalarsArrayOfRemoteScalars := p.service.ArrayOfRemoteScalars()
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{arrayOfRemoteScalarsArrayOfRemoteScalars}, callStats, r, w)
- return
- case DemoGoTSRPCProxyArrayOfRemoteScalarsInAStruct:
- executionStart := time.Now()
- arrayOfRemoteScalarsInAStructStrct := p.service.ArrayOfRemoteScalarsInAStruct()
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{arrayOfRemoteScalarsInAStructStrct}, callStats, r, w)
- return
- case DemoGoTSRPCProxyExtractAddress:
- var (
- arg_person *Person
- )
- args := []interface{}{&arg_person}
- err := gotsrpc.LoadArgs(&args, callStats, r)
- if err != nil {
- gotsrpc.ErrorCouldNotLoadArgs(w)
- return
- }
- executionStart := time.Now()
- extractAddressAddr, extractAddressE := p.service.ExtractAddress(arg_person)
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{extractAddressAddr, extractAddressE}, callStats, r, w)
- return
- case DemoGoTSRPCProxyGiveMeAScalar:
- executionStart := time.Now()
- giveMeAScalarAmount, giveMeAScalarWahr, giveMeAScalarHier := p.service.GiveMeAScalar()
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{giveMeAScalarAmount, giveMeAScalarWahr, giveMeAScalarHier}, callStats, r, w)
- return
- case DemoGoTSRPCProxyHello:
- var (
- arg_name string
- )
- args := []interface{}{&arg_name}
- err := gotsrpc.LoadArgs(&args, callStats, r)
- if err != nil {
- gotsrpc.ErrorCouldNotLoadArgs(w)
- return
- }
- executionStart := time.Now()
- helloRet, helloRet_1 := p.service.Hello(arg_name)
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{helloRet, helloRet_1}, callStats, r, w)
- return
- case DemoGoTSRPCProxyHelloInterface:
- var (
- arg_anything interface{}
- arg_anythingMap map[string]interface{}
- arg_anythingSlice []interface{}
- )
- args := []interface{}{&arg_anything, &arg_anythingMap, &arg_anythingSlice}
- err := gotsrpc.LoadArgs(&args, callStats, r)
- if err != nil {
- gotsrpc.ErrorCouldNotLoadArgs(w)
- return
- }
- executionStart := time.Now()
- p.service.HelloInterface(arg_anything, arg_anythingMap, arg_anythingSlice)
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{}, callStats, r, w)
- return
- case DemoGoTSRPCProxyHelloLocalMapType:
- executionStart := time.Now()
- helloLocalMapTypeLocalStuff := p.service.HelloLocalMapType()
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{helloLocalMapTypeLocalStuff}, callStats, r, w)
- return
- case DemoGoTSRPCProxyHelloMapType:
- executionStart := time.Now()
- helloMapTypeOtherStuff := p.service.HelloMapType()
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{helloMapTypeOtherStuff}, callStats, r, w)
- return
- case DemoGoTSRPCProxyHelloNumberMaps:
- var (
- arg_intMap map[int]string
- )
- args := []interface{}{&arg_intMap}
- err := gotsrpc.LoadArgs(&args, callStats, r)
- if err != nil {
- gotsrpc.ErrorCouldNotLoadArgs(w)
- return
- }
- executionStart := time.Now()
- helloNumberMapsFloatMap := p.service.HelloNumberMaps(arg_intMap)
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{helloNumberMapsFloatMap}, callStats, r, w)
- return
- case DemoGoTSRPCProxyHelloScalarError:
- executionStart := time.Now()
- helloScalarErrorErr := p.service.HelloScalarError()
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{helloScalarErrorErr}, callStats, r, w)
- return
- case DemoGoTSRPCProxyMapCrap:
- executionStart := time.Now()
- mapCrapCrap := p.service.MapCrap()
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{mapCrapCrap}, callStats, r, w)
- return
- case DemoGoTSRPCProxyNest:
- executionStart := time.Now()
- nestRet := p.service.Nest()
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{nestRet}, callStats, r, w)
- return
- case DemoGoTSRPCProxyTestScalarInPlace:
- executionStart := time.Now()
- testScalarInPlaceRet := p.service.TestScalarInPlace()
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{testScalarInPlaceRet}, callStats, r, w)
- return
- default:
- gotsrpc.ClearStats(r)
- http.Error(w, "404 - not found "+r.URL.Path, http.StatusNotFound)
- }
-}
-
-const (
- BarGoTSRPCProxyAttributeMapping = "AttributeMapping"
- BarGoTSRPCProxyCustomError = "CustomError"
- BarGoTSRPCProxyCustomType = "CustomType"
- BarGoTSRPCProxyHello = "Hello"
- BarGoTSRPCProxyInheritance = "Inheritance"
- BarGoTSRPCProxyRepeat = "Repeat"
-)
-
-type BarGoTSRPCProxy struct {
- EndPoint string
- service Bar
-}
-
-func NewDefaultBarGoTSRPCProxy(service Bar) *BarGoTSRPCProxy {
- return &BarGoTSRPCProxy{
- EndPoint: "/service/bar",
- service: service,
- }
-}
-
-func NewBarGoTSRPCProxy(service Bar, endpoint string) *BarGoTSRPCProxy {
- return &BarGoTSRPCProxy{
- EndPoint: endpoint,
- service: service,
- }
-}
-
-// ServeHTTP exposes your service
-func (p *BarGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- if r.Method != http.MethodPost {
- if r.Method == http.MethodOptions {
- return
- }
- gotsrpc.ErrorMethodNotAllowed(w)
- return
- }
- defer io.Copy(ioutil.Discard, r.Body) // Drain Request Body
-
- funcName := gotsrpc.GetCalledFunc(r, p.EndPoint)
- callStats := gotsrpc.GetStatsForRequest(r)
- if callStats != nil {
- callStats.Func = funcName
- callStats.Package = "github.com/foomo/gotsrpc/v2/demo"
- callStats.Service = "Bar"
- }
- switch funcName {
- case BarGoTSRPCProxyAttributeMapping:
- executionStart := time.Now()
- attributeMappingRet := p.service.AttributeMapping()
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{attributeMappingRet}, callStats, r, w)
- return
- case BarGoTSRPCProxyCustomError:
- var (
- arg_one CustomError
- arg_two *CustomError
- )
- args := []interface{}{&arg_one, &arg_two}
- err := gotsrpc.LoadArgs(&args, callStats, r)
- if err != nil {
- gotsrpc.ErrorCouldNotLoadArgs(w)
- return
- }
- executionStart := time.Now()
- customErrorThree, customErrorFour := p.service.CustomError(arg_one, arg_two)
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{customErrorThree, customErrorFour}, callStats, r, w)
- return
- case BarGoTSRPCProxyCustomType:
- var (
- arg_customTypeInt CustomTypeInt
- arg_customTypeString CustomTypeString
- arg_CustomTypeStruct CustomTypeStruct
- )
- args := []interface{}{&arg_customTypeInt, &arg_customTypeString, &arg_CustomTypeStruct}
- err := gotsrpc.LoadArgs(&args, callStats, r)
- if err != nil {
- gotsrpc.ErrorCouldNotLoadArgs(w)
- return
- }
- executionStart := time.Now()
- customTypeRet, customTypeRet_1, customTypeRet_2 := p.service.CustomType(arg_customTypeInt, arg_customTypeString, arg_CustomTypeStruct)
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{customTypeRet, customTypeRet_1, customTypeRet_2}, callStats, r, w)
- return
- case BarGoTSRPCProxyHello:
- var (
- arg_number int64
- )
- args := []interface{}{&arg_number}
- err := gotsrpc.LoadArgs(&args, callStats, r)
- if err != nil {
- gotsrpc.ErrorCouldNotLoadArgs(w)
- return
- }
- executionStart := time.Now()
- rw := gotsrpc.ResponseWriter{ResponseWriter: w}
- helloRet := p.service.Hello(&rw, r, arg_number)
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- if rw.Status() == http.StatusOK {
- gotsrpc.Reply([]interface{}{helloRet}, callStats, r, w)
- }
- return
- case BarGoTSRPCProxyInheritance:
- var (
- arg_inner Inner
- arg_nested OuterNested
- arg_inline OuterInline
- )
- args := []interface{}{&arg_inner, &arg_nested, &arg_inline}
- err := gotsrpc.LoadArgs(&args, callStats, r)
- if err != nil {
- gotsrpc.ErrorCouldNotLoadArgs(w)
- return
- }
- executionStart := time.Now()
- inheritanceRet, inheritanceRet_1, inheritanceRet_2 := p.service.Inheritance(arg_inner, arg_nested, arg_inline)
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{inheritanceRet, inheritanceRet_1, inheritanceRet_2}, callStats, r, w)
- return
- case BarGoTSRPCProxyRepeat:
- var (
- arg_one string
- arg_two string
- )
- args := []interface{}{&arg_one, &arg_two}
- err := gotsrpc.LoadArgs(&args, callStats, r)
- if err != nil {
- gotsrpc.ErrorCouldNotLoadArgs(w)
- return
- }
- executionStart := time.Now()
- repeatThree, repeatFour := p.service.Repeat(arg_one, arg_two)
- if callStats != nil {
- callStats.Execution = time.Now().Sub(executionStart)
- }
- gotsrpc.Reply([]interface{}{repeatThree, repeatFour}, callStats, r, w)
- return
- default:
- gotsrpc.ClearStats(r)
- http.Error(w, "404 - not found "+r.URL.Path, http.StatusNotFound)
- }
-}
diff --git a/demo/gotsrpcclient_gen.go b/demo/gotsrpcclient_gen.go
deleted file mode 100644
index 2a8fad3..0000000
--- a/demo/gotsrpcclient_gen.go
+++ /dev/null
@@ -1,315 +0,0 @@
-// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
-
-package demo
-
-import (
- go_context "context"
- go_net_http "net/http"
-
- gotsrpc "github.com/foomo/gotsrpc/v2"
- github_com_foomo_gotsrpc_v2_demo_nested "github.com/foomo/gotsrpc/v2/demo/nested"
- pkg_errors "github.com/pkg/errors"
-)
-
-type FooGoTSRPCClient interface {
- Hello(ctx go_context.Context, number int64) (retHello_0 int, clientErr error)
-}
-
-type HTTPFooGoTSRPCClient struct {
- URL string
- EndPoint string
- Client gotsrpc.Client
-}
-
-func NewDefaultFooGoTSRPCClient(url string) *HTTPFooGoTSRPCClient {
- return NewFooGoTSRPCClient(url, "/service/foo")
-}
-
-func NewFooGoTSRPCClient(url string, endpoint string) *HTTPFooGoTSRPCClient {
- return NewFooGoTSRPCClientWithClient(url, endpoint, nil)
-}
-
-func NewFooGoTSRPCClientWithClient(url string, endpoint string, client *go_net_http.Client) *HTTPFooGoTSRPCClient {
- return &HTTPFooGoTSRPCClient{
- URL: url,
- EndPoint: endpoint,
- Client: gotsrpc.NewClientWithHttpClient(client),
- }
-}
-func (tsc *HTTPFooGoTSRPCClient) Hello(ctx go_context.Context, number int64) (retHello_0 int, clientErr error) {
- args := []interface{}{number}
- reply := []interface{}{&retHello_0}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Hello", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.FooGoTSRPCProxy Hello")
- }
- return
-}
-
-type DemoGoTSRPCClient interface {
- Any(ctx go_context.Context, any github_com_foomo_gotsrpc_v2_demo_nested.Any, anyList []github_com_foomo_gotsrpc_v2_demo_nested.Any, anyMap map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any) (retAny_0 github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_1 []github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_2 map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any, clientErr error)
- ArrayOfRemoteScalars(ctx go_context.Context) (arrayOfRemoteScalars RemoteScalarsStrings, clientErr error)
- ArrayOfRemoteScalarsInAStruct(ctx go_context.Context) (strct RemoteScalarStruct, clientErr error)
- ExtractAddress(ctx go_context.Context, person *Person) (addr *Address, e *Err, clientErr error)
- GiveMeAScalar(ctx go_context.Context) (amount github_com_foomo_gotsrpc_v2_demo_nested.Amount, wahr github_com_foomo_gotsrpc_v2_demo_nested.True, hier ScalarInPlace, clientErr error)
- Hello(ctx go_context.Context, name string) (retHello_0 string, retHello_1 *Err, clientErr error)
- HelloInterface(ctx go_context.Context, anything interface{}, anythingMap map[string]interface{}, anythingSlice []interface{}) (clientErr error)
- HelloLocalMapType(ctx go_context.Context) (localStuff MapWithLocalStuff, clientErr error)
- HelloMapType(ctx go_context.Context) (otherStuff MapOfOtherStuff, clientErr error)
- HelloNumberMaps(ctx go_context.Context, intMap map[int]string) (floatMap map[float64]string, clientErr error)
- HelloScalarError(ctx go_context.Context) (err *ScalarError, clientErr error)
- MapCrap(ctx go_context.Context) (crap map[string][]int, clientErr error)
- Nest(ctx go_context.Context) (retNest_0 []*github_com_foomo_gotsrpc_v2_demo_nested.Nested, clientErr error)
- TestScalarInPlace(ctx go_context.Context) (retTestScalarInPlace_0 ScalarInPlace, clientErr error)
-}
-
-type HTTPDemoGoTSRPCClient struct {
- URL string
- EndPoint string
- Client gotsrpc.Client
-}
-
-func NewDefaultDemoGoTSRPCClient(url string) *HTTPDemoGoTSRPCClient {
- return NewDemoGoTSRPCClient(url, "/service/demo")
-}
-
-func NewDemoGoTSRPCClient(url string, endpoint string) *HTTPDemoGoTSRPCClient {
- return NewDemoGoTSRPCClientWithClient(url, endpoint, nil)
-}
-
-func NewDemoGoTSRPCClientWithClient(url string, endpoint string, client *go_net_http.Client) *HTTPDemoGoTSRPCClient {
- return &HTTPDemoGoTSRPCClient{
- URL: url,
- EndPoint: endpoint,
- Client: gotsrpc.NewClientWithHttpClient(client),
- }
-}
-func (tsc *HTTPDemoGoTSRPCClient) Any(ctx go_context.Context, any github_com_foomo_gotsrpc_v2_demo_nested.Any, anyList []github_com_foomo_gotsrpc_v2_demo_nested.Any, anyMap map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any) (retAny_0 github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_1 []github_com_foomo_gotsrpc_v2_demo_nested.Any, retAny_2 map[string]github_com_foomo_gotsrpc_v2_demo_nested.Any, clientErr error) {
- args := []interface{}{any, anyList, anyMap}
- reply := []interface{}{&retAny_0, &retAny_1, &retAny_2}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Any", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy Any")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) ArrayOfRemoteScalars(ctx go_context.Context) (arrayOfRemoteScalars RemoteScalarsStrings, clientErr error) {
- args := []interface{}{}
- reply := []interface{}{&arrayOfRemoteScalars}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "ArrayOfRemoteScalars", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy ArrayOfRemoteScalars")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) ArrayOfRemoteScalarsInAStruct(ctx go_context.Context) (strct RemoteScalarStruct, clientErr error) {
- args := []interface{}{}
- reply := []interface{}{&strct}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "ArrayOfRemoteScalarsInAStruct", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy ArrayOfRemoteScalarsInAStruct")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) ExtractAddress(ctx go_context.Context, person *Person) (addr *Address, e *Err, clientErr error) {
- args := []interface{}{person}
- reply := []interface{}{&addr, &e}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "ExtractAddress", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy ExtractAddress")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) GiveMeAScalar(ctx go_context.Context) (amount github_com_foomo_gotsrpc_v2_demo_nested.Amount, wahr github_com_foomo_gotsrpc_v2_demo_nested.True, hier ScalarInPlace, clientErr error) {
- args := []interface{}{}
- reply := []interface{}{&amount, &wahr, &hier}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "GiveMeAScalar", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy GiveMeAScalar")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) Hello(ctx go_context.Context, name string) (retHello_0 string, retHello_1 *Err, clientErr error) {
- args := []interface{}{name}
- reply := []interface{}{&retHello_0, &retHello_1}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Hello", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy Hello")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) HelloInterface(ctx go_context.Context, anything interface{}, anythingMap map[string]interface{}, anythingSlice []interface{}) (clientErr error) {
- args := []interface{}{anything, anythingMap, anythingSlice}
- reply := []interface{}{}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "HelloInterface", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy HelloInterface")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) HelloLocalMapType(ctx go_context.Context) (localStuff MapWithLocalStuff, clientErr error) {
- args := []interface{}{}
- reply := []interface{}{&localStuff}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "HelloLocalMapType", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy HelloLocalMapType")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) HelloMapType(ctx go_context.Context) (otherStuff MapOfOtherStuff, clientErr error) {
- args := []interface{}{}
- reply := []interface{}{&otherStuff}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "HelloMapType", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy HelloMapType")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) HelloNumberMaps(ctx go_context.Context, intMap map[int]string) (floatMap map[float64]string, clientErr error) {
- args := []interface{}{intMap}
- reply := []interface{}{&floatMap}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "HelloNumberMaps", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy HelloNumberMaps")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) HelloScalarError(ctx go_context.Context) (err *ScalarError, clientErr error) {
- args := []interface{}{}
- reply := []interface{}{&err}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "HelloScalarError", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy HelloScalarError")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) MapCrap(ctx go_context.Context) (crap map[string][]int, clientErr error) {
- args := []interface{}{}
- reply := []interface{}{&crap}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "MapCrap", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy MapCrap")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) Nest(ctx go_context.Context) (retNest_0 []*github_com_foomo_gotsrpc_v2_demo_nested.Nested, clientErr error) {
- args := []interface{}{}
- reply := []interface{}{&retNest_0}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Nest", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy Nest")
- }
- return
-}
-
-func (tsc *HTTPDemoGoTSRPCClient) TestScalarInPlace(ctx go_context.Context) (retTestScalarInPlace_0 ScalarInPlace, clientErr error) {
- args := []interface{}{}
- reply := []interface{}{&retTestScalarInPlace_0}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "TestScalarInPlace", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.DemoGoTSRPCProxy TestScalarInPlace")
- }
- return
-}
-
-type BarGoTSRPCClient interface {
- AttributeMapping(ctx go_context.Context) (retAttributeMapping_0 AttributeMapping, clientErr error)
- CustomError(ctx go_context.Context, one CustomError, two *CustomError) (three CustomError, four *CustomError, clientErr error)
- CustomType(ctx go_context.Context, customTypeInt CustomTypeInt, customTypeString CustomTypeString, CustomTypeStruct CustomTypeStruct) (retCustomType_0 *CustomTypeInt, retCustomType_1 *CustomTypeString, retCustomType_2 CustomTypeStruct, clientErr error)
- Hello(ctx go_context.Context, number int64) (retHello_0 int, clientErr error)
- Inheritance(ctx go_context.Context, inner Inner, nested OuterNested, inline OuterInline) (retInheritance_0 Inner, retInheritance_1 OuterNested, retInheritance_2 OuterInline, clientErr error)
- Repeat(ctx go_context.Context, one string, two string) (three bool, four bool, clientErr error)
-}
-
-type HTTPBarGoTSRPCClient struct {
- URL string
- EndPoint string
- Client gotsrpc.Client
-}
-
-func NewDefaultBarGoTSRPCClient(url string) *HTTPBarGoTSRPCClient {
- return NewBarGoTSRPCClient(url, "/service/bar")
-}
-
-func NewBarGoTSRPCClient(url string, endpoint string) *HTTPBarGoTSRPCClient {
- return NewBarGoTSRPCClientWithClient(url, endpoint, nil)
-}
-
-func NewBarGoTSRPCClientWithClient(url string, endpoint string, client *go_net_http.Client) *HTTPBarGoTSRPCClient {
- return &HTTPBarGoTSRPCClient{
- URL: url,
- EndPoint: endpoint,
- Client: gotsrpc.NewClientWithHttpClient(client),
- }
-}
-func (tsc *HTTPBarGoTSRPCClient) AttributeMapping(ctx go_context.Context) (retAttributeMapping_0 AttributeMapping, clientErr error) {
- args := []interface{}{}
- reply := []interface{}{&retAttributeMapping_0}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "AttributeMapping", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy AttributeMapping")
- }
- return
-}
-
-func (tsc *HTTPBarGoTSRPCClient) CustomError(ctx go_context.Context, one CustomError, two *CustomError) (three CustomError, four *CustomError, clientErr error) {
- args := []interface{}{one, two}
- reply := []interface{}{&three, &four}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "CustomError", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy CustomError")
- }
- return
-}
-
-func (tsc *HTTPBarGoTSRPCClient) CustomType(ctx go_context.Context, customTypeInt CustomTypeInt, customTypeString CustomTypeString, CustomTypeStruct CustomTypeStruct) (retCustomType_0 *CustomTypeInt, retCustomType_1 *CustomTypeString, retCustomType_2 CustomTypeStruct, clientErr error) {
- args := []interface{}{customTypeInt, customTypeString, CustomTypeStruct}
- reply := []interface{}{&retCustomType_0, &retCustomType_1, &retCustomType_2}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "CustomType", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy CustomType")
- }
- return
-}
-
-func (tsc *HTTPBarGoTSRPCClient) Hello(ctx go_context.Context, number int64) (retHello_0 int, clientErr error) {
- args := []interface{}{number}
- reply := []interface{}{&retHello_0}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Hello", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy Hello")
- }
- return
-}
-
-func (tsc *HTTPBarGoTSRPCClient) Inheritance(ctx go_context.Context, inner Inner, nested OuterNested, inline OuterInline) (retInheritance_0 Inner, retInheritance_1 OuterNested, retInheritance_2 OuterInline, clientErr error) {
- args := []interface{}{inner, nested, inline}
- reply := []interface{}{&retInheritance_0, &retInheritance_1, &retInheritance_2}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Inheritance", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy Inheritance")
- }
- return
-}
-
-func (tsc *HTTPBarGoTSRPCClient) Repeat(ctx go_context.Context, one string, two string) (three bool, four bool, clientErr error) {
- args := []interface{}{one, two}
- reply := []interface{}{&three, &four}
- clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Repeat", args, reply)
- if clientErr != nil {
- clientErr = pkg_errors.WithMessage(clientErr, "failed to call demo.BarGoTSRPCProxy Repeat")
- }
- return
-}
diff --git a/demo/gotsrpcclient_test.go b/demo/gotsrpcclient_test.go
deleted file mode 100644
index b9ec114..0000000
--- a/demo/gotsrpcclient_test.go
+++ /dev/null
@@ -1,148 +0,0 @@
-package demo
-
-import (
- "context"
- "fmt"
- "math/rand"
- "net/http/httptest"
- "net/url"
- "strconv"
- "testing"
- "time"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/foomo/gotsrpc/v2/demo/nested"
-)
-
-func init() {
- rand.Seed(time.Now().UnixNano())
-}
-
-var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
-
-func RandStringRunes(n int) string {
- b := make([]rune, n)
- for i := range b {
- b[i] = letterRunes[rand.Intn(len(letterRunes))]
- }
- return string(b)
-}
-
-var (
- client DemoGoTSRPCClient
- server *httptest.Server
-)
-
-func setup() {
- server = httptest.NewServer(NewDefaultDemoGoTSRPCProxy(&Demo{}))
- serverUrl, _ := url.Parse(server.URL)
- client = NewDefaultDemoGoTSRPCClient(serverUrl.String())
-}
-
-func teardown() {
- server.Close()
-}
-
-func TestDefault(t *testing.T) {
- setup()
- defer teardown()
- ctx := context.Background()
-
- resp, errServer, errClient := client.Hello(ctx, "stefan")
- assert.NoError(t, errClient)
- assert.Nil(t, errServer)
- fmt.Println(resp)
-}
-
-func TestHelloNumberMaps(t *testing.T) {
- setup()
- defer teardown()
- ctx := context.Background()
-
- intMap := map[int]string{1: "one", 2: "two", 3: "three"}
- floatMap, errClient := client.HelloNumberMaps(ctx, intMap)
- assert.NoError(t, errClient)
- for f, fstr := range floatMap {
- i := int(f)
- assert.Equal(t, fstr, intMap[i])
- }
-}
-
-func benchmarkRequests(b *testing.B, count int) {
- setup()
- defer teardown()
- ctx := context.Background()
-
- person := GeneratePerson(count)
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- client.ExtractAddress(ctx, person)
- }
-}
-
-func BenchmarkRequest1(b *testing.B) { benchmarkRequests(b, 1) }
-func BenchmarkRequest10(b *testing.B) { benchmarkRequests(b, 10) }
-func BenchmarkRequest100(b *testing.B) { benchmarkRequests(b, 100) }
-func BenchmarkRequest1000(b *testing.B) { benchmarkRequests(b, 1000) }
-func BenchmarkRequest10000(b *testing.B) { benchmarkRequests(b, 10000) }
-func BenchmarkRequest100000(b *testing.B) { benchmarkRequests(b, 100000) }
-
-func GeneratePerson(count int) *Person {
- person := &Person{}
- person.AddressPtr = GenerateAddress()
- person.Addresses = map[string]*Address{}
- for i := 0; i < count; i++ {
- person.Addresses[strconv.Itoa(i)] = GenerateAddress()
- }
- return person
-}
-
-func GenerateAddress() *Address {
- gen := func() string {
- return RandStringRunes(32)
- }
- genarr := func(count int) (ret []string) {
- ret = make([]string, count)
- for i := 0; i < count; i++ {
- ret[i] = gen()
- }
- return
- }
- return &Address{
- City: gen(),
- Signs: genarr(100),
- SecretServerCrap: false,
- PeoplePtr: nil,
- ArrayOfMaps: nil,
- ArrayArrayAddress: nil,
- People: nil,
- MapCrap: nil,
- NestedPtr: &nested.Nested{
- Name: gen(),
- SuperNestedString: struct {
- Ha int64
- }{
- Ha: 011,
- },
- SuperNestedPtr: &struct {
- Bla string
- }{
- Bla: gen(),
- },
- },
- NestedStruct: nested.Nested{
- Name: gen(),
- SuperNestedString: struct {
- Ha int64
- }{
- Ha: 0,
- },
- SuperNestedPtr: &struct {
- Bla string
- }{
- Bla: gen(),
- },
- },
- }
-}
diff --git a/demo/nested/nested.go b/demo/nested/nested.go
deleted file mode 100644
index c0bb819..0000000
--- a/demo/nested/nested.go
+++ /dev/null
@@ -1,30 +0,0 @@
-package nested
-
-type CustomTypeNested string
-
-const (
- CustomTypeNestedOne CustomTypeNested = "one"
- CustomTypeNestedTwo CustomTypeNested = "two"
- CustomTypeNestedThree CustomTypeNested = "three"
-)
-
-type Nested struct {
- Name string
- Any Any
- AnyMap map[string]Any
- AnyList []Any
- SuperNestedString struct {
- Ha int64
- }
- SuperNestedPtr *struct {
- Bla string
- }
-}
-
-type Any interface{}
-type Amount int
-type True bool
-
-const ItIsTrue True = true
-
-type JustAnotherStingType string
diff --git a/demo/output/client.ts b/demo/output/client.ts
deleted file mode 100644
index a85c09c..0000000
--- a/demo/output/client.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-/* eslint:disable */
-// hello commonjs - we need some imports - sorted in alphabetical order, by go package
-import * as github_com_foomo_gotsrpc_v2_demo from './demo'; // demo/output/client.ts to demo/output/demo.ts
-import * as github_com_foomo_gotsrpc_v2_demo_nested from './demo-nested'; // demo/output/client.ts to demo/output/demo-nested.ts
-
-export class FooClient {
- public static defaultEndpoint = "/service/foo";
- constructor(
- public transport:(method: string, data?: any[]) => Promise
- ) {}
- async hello(number:number):Promise {
- return (await this.transport<{0:number}>("Hello", [number]))[0]
- }
-}
-export class DemoClient {
- public static defaultEndpoint = "/service/demo";
- constructor(
- public transport:(method: string, data?: any[]) => Promise
- ) {}
- async any(any:github_com_foomo_gotsrpc_v2_demo_nested.Any, anyList:Array|null, anyMap:Record|null):Promise<{ret:github_com_foomo_gotsrpc_v2_demo_nested.Any; ret_1:Array|null; ret_2:Record|null}> {
- let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo_nested.Any; 1:Array|null; 2:Record|null}>("Any", [any, anyList, anyMap])
- let responseObject = {ret : response[0], ret_1 : response[1], ret_2 : response[2]};
- return responseObject;
- }
- async arrayOfRemoteScalars():Promise {
- return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.RemoteScalarsStrings|null}>("ArrayOfRemoteScalars", []))[0]
- }
- async arrayOfRemoteScalarsInAStruct():Promise {
- return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.RemoteScalarStruct}>("ArrayOfRemoteScalarsInAStruct", []))[0]
- }
- async extractAddress(person:github_com_foomo_gotsrpc_v2_demo.Person|null):Promise {
- let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.Address|null; 1:github_com_foomo_gotsrpc_v2_demo.Err|null}>("ExtractAddress", [person])
- let err = response[1];
- if(err) { throw err }
- return response[0]
- }
- async giveMeAScalar():Promise<{amount:github_com_foomo_gotsrpc_v2_demo_nested.Amount; wahr:github_com_foomo_gotsrpc_v2_demo_nested.True; hier:github_com_foomo_gotsrpc_v2_demo.ScalarInPlace}> {
- let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo_nested.Amount; 1:github_com_foomo_gotsrpc_v2_demo_nested.True; 2:github_com_foomo_gotsrpc_v2_demo.ScalarInPlace}>("GiveMeAScalar", [])
- let responseObject = {amount : response[0], wahr : response[1], hier : response[2]};
- return responseObject;
- }
- async hello(name:string):Promise {
- let response = await this.transport<{0:string; 1:github_com_foomo_gotsrpc_v2_demo.Err|null}>("Hello", [name])
- let err = response[1];
- if(err) { throw err }
- return response[0]
- }
- async helloInterface(anything:any, anythingMap:Record|null, anythingSlice:Array|null):Promise {
- await this.transport("HelloInterface", [anything, anythingMap, anythingSlice])
- }
- async helloLocalMapType():Promise {
- return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.MapWithLocalStuff|null}>("HelloLocalMapType", []))[0]
- }
- async helloMapType():Promise {
- return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.MapOfOtherStuff|null}>("HelloMapType", []))[0]
- }
- async helloNumberMaps(intMap:Record|null):Promise|null> {
- return (await this.transport<{0:Record|null}>("HelloNumberMaps", [intMap]))[0]
- }
- async helloScalarError():Promise {
- return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.ScalarError|null}>("HelloScalarError", []))[0]
- }
- async mapCrap():Promise|null>|null> {
- return (await this.transport<{0:Record|null>|null}>("MapCrap", []))[0]
- }
- async nest():Promise|null> {
- return (await this.transport<{0:Array|null}>("Nest", []))[0]
- }
- async testScalarInPlace():Promise {
- return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.ScalarInPlace}>("TestScalarInPlace", []))[0]
- }
-}
-export class BarClient {
- public static defaultEndpoint = "/service/bar";
- constructor(
- public transport:(method: string, data?: any[]) => Promise
- ) {}
- async attributeMapping():Promise {
- return (await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.AttributeMapping|null}>("AttributeMapping", []))[0]
- }
- async customError(one:github_com_foomo_gotsrpc_v2_demo.CustomError, two:github_com_foomo_gotsrpc_v2_demo.CustomError|null):Promise<{three:github_com_foomo_gotsrpc_v2_demo.CustomError; four:github_com_foomo_gotsrpc_v2_demo.CustomError|null}> {
- let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.CustomError; 1:github_com_foomo_gotsrpc_v2_demo.CustomError|null}>("CustomError", [one, two])
- let responseObject = {three : response[0], four : response[1]};
- return responseObject;
- }
- async customType(customTypeInt:github_com_foomo_gotsrpc_v2_demo.CustomTypeInt, customTypeString:github_com_foomo_gotsrpc_v2_demo.CustomTypeString, CustomTypeStruct:github_com_foomo_gotsrpc_v2_demo.CustomTypeStruct):Promise<{ret:github_com_foomo_gotsrpc_v2_demo.CustomTypeInt|null; ret_1:github_com_foomo_gotsrpc_v2_demo.CustomTypeString|null; ret_2:github_com_foomo_gotsrpc_v2_demo.CustomTypeStruct}> {
- let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.CustomTypeInt|null; 1:github_com_foomo_gotsrpc_v2_demo.CustomTypeString|null; 2:github_com_foomo_gotsrpc_v2_demo.CustomTypeStruct}>("CustomType", [customTypeInt, customTypeString, CustomTypeStruct])
- let responseObject = {ret : response[0], ret_1 : response[1], ret_2 : response[2]};
- return responseObject;
- }
- async hello(number:number):Promise {
- return (await this.transport<{0:number}>("Hello", [number]))[0]
- }
- async inheritance(inner:github_com_foomo_gotsrpc_v2_demo.Inner, nested:github_com_foomo_gotsrpc_v2_demo.OuterNested, inline:github_com_foomo_gotsrpc_v2_demo.OuterInline):Promise<{ret:github_com_foomo_gotsrpc_v2_demo.Inner; ret_1:github_com_foomo_gotsrpc_v2_demo.OuterNested; ret_2:github_com_foomo_gotsrpc_v2_demo.OuterInline}> {
- let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_demo.Inner; 1:github_com_foomo_gotsrpc_v2_demo.OuterNested; 2:github_com_foomo_gotsrpc_v2_demo.OuterInline}>("Inheritance", [inner, nested, inline])
- let responseObject = {ret : response[0], ret_1 : response[1], ret_2 : response[2]};
- return responseObject;
- }
- async repeat(one:string, two:string):Promise<{three:boolean; four:boolean}> {
- let response = await this.transport<{0:boolean; 1:boolean}>("Repeat", [one, two])
- let responseObject = {three : response[0], four : response[1]};
- return responseObject;
- }
-}
\ No newline at end of file
diff --git a/demo/output/demo-nested.ts b/demo/output/demo-nested.ts
deleted file mode 100644
index 02cfd2b..0000000
--- a/demo/output/demo-nested.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/* eslint:disable */
-// hello commonjs - we need some imports - sorted in alphabetical order, by go package
-import * as github_com_foomo_gotsrpc_v2_demo from './demo'; // demo/output/demo-nested.ts to demo/output/demo.ts
-import * as github_com_foomo_gotsrpc_v2_demo_nested from './demo-nested'; // demo/output/demo-nested.ts to demo/output/demo-nested.ts
-// github.com/foomo/gotsrpc/v2/demo/nested.Amount
-export type Amount = number
-// github.com/foomo/gotsrpc/v2/demo/nested.Any
-export type Any = any
-// github.com/foomo/gotsrpc/v2/demo/nested.CustomTypeNested
-export enum CustomTypeNested {
- One = "one",
- Three = "three",
- Two = "two",
-}
-// github.com/foomo/gotsrpc/v2/demo/nested.JustAnotherStingType
-export type JustAnotherStingType = string
-// github.com/foomo/gotsrpc/v2/demo/nested.Nested
-export interface Nested {
- Name:string;
- Any:github_com_foomo_gotsrpc_v2_demo_nested.Any;
- AnyMap:Record|null;
- AnyList:Array|null;
- SuperNestedString:{
- Ha:number;
- };
- SuperNestedPtr:{
- Bla:string;
- }|null;
-}
-// github.com/foomo/gotsrpc/v2/demo/nested.True
-export type True = boolean
-// end of common js
\ No newline at end of file
diff --git a/demo/output/demo.ts b/demo/output/demo.ts
deleted file mode 100644
index 48ec3be..0000000
--- a/demo/output/demo.ts
+++ /dev/null
@@ -1,109 +0,0 @@
-/* eslint:disable */
-// hello commonjs - we need some imports - sorted in alphabetical order, by go package
-import * as github_com_foomo_gotsrpc_v2_demo from './demo'; // demo/output/demo.ts to demo/output/demo.ts
-import * as github_com_foomo_gotsrpc_v2_demo_nested from './demo-nested'; // demo/output/demo.ts to demo/output/demo-nested.ts
-// github.com/foomo/gotsrpc/v2/demo.Address
-export interface Address {
- city?:string;
- signs?:Array|null;
- PeoplePtr:Array|null;
- ArrayOfMaps:Array|null>|null;
- ArrayArrayAddress:Array|null>|null;
- People:Array|null;
- MapCrap:Record|null>|null;
- NestedPtr:github_com_foomo_gotsrpc_v2_demo_nested.Nested|null;
- NestedStruct:github_com_foomo_gotsrpc_v2_demo_nested.Nested;
-}
-// github.com/foomo/gotsrpc/v2/demo.AttributeDefinition
-export interface AttributeDefinition {
- Key:string;
- Value:string;
-}
-// github.com/foomo/gotsrpc/v2/demo.AttributeID
-export type AttributeID = string
-// github.com/foomo/gotsrpc/v2/demo.AttributeMapping
-export type AttributeMapping = Record
-// github.com/foomo/gotsrpc/v2/demo.Check
-export interface Check {
- Foo:string;
-}
-// github.com/foomo/gotsrpc/v2/demo.CustomError
-export enum CustomError {
- Demo = "demo",
-}
-// github.com/foomo/gotsrpc/v2/demo.CustomTypeFoo
-export type CustomTypeFoo = string
-// github.com/foomo/gotsrpc/v2/demo.CustomTypeInt
-export enum CustomTypeInt {
- One = 1,
- Three = 3,
- Two = 2,
-}
-// github.com/foomo/gotsrpc/v2/demo.CustomTypeString
-export enum CustomTypeString {
- Five = "CONST_CASE",
- Four = "slug-case",
- One = "regular",
- Seven = "dot.case",
- Six = "SLUG-CASE-UPPER",
- Three = "snake_case",
- Two = "camelCase",
-}
-// github.com/foomo/gotsrpc/v2/demo.CustomTypeStruct
-export interface CustomTypeStruct {
- CustomTypeFoo:github_com_foomo_gotsrpc_v2_demo.CustomTypeFoo;
- CustomTypeInt:github_com_foomo_gotsrpc_v2_demo.CustomTypeInt;
- CustomTypeString:github_com_foomo_gotsrpc_v2_demo.CustomTypeString;
- CustomTypeNested:github_com_foomo_gotsrpc_v2_demo_nested.CustomTypeNested;
- Check:github_com_foomo_gotsrpc_v2_demo.Check;
-}
-// github.com/foomo/gotsrpc/v2/demo.Err
-export interface Err {
- message:string;
-}
-// github.com/foomo/gotsrpc/v2/demo.Inner
-export interface Inner {
- one:string;
-}
-// github.com/foomo/gotsrpc/v2/demo.LocalKey
-export type LocalKey = string
-// github.com/foomo/gotsrpc/v2/demo.MapOfOtherStuff
-export type MapOfOtherStuff = Record
-// github.com/foomo/gotsrpc/v2/demo.MapWithLocalStuff
-export type MapWithLocalStuff = Record
-// github.com/foomo/gotsrpc/v2/demo.OuterInline
-export interface OuterInline {
- one:string;
- two:string;
-}
-// github.com/foomo/gotsrpc/v2/demo.OuterNested
-export interface OuterNested {
- inner:github_com_foomo_gotsrpc_v2_demo.Inner;
- two:string;
-}
-// github.com/foomo/gotsrpc/v2/demo.Person
-export interface Person {
- Name:string;
- address:github_com_foomo_gotsrpc_v2_demo.Address|null;
- AddressStruct:github_com_foomo_gotsrpc_v2_demo.Address;
- Addresses:Record|null;
- InlinePtr:{
- Foo:boolean;
- }|null;
- InlineStruct:{
- Bar:string;
- };
- DNA:string|null;
-}
-// github.com/foomo/gotsrpc/v2/demo.RemoteScalarStruct
-export interface RemoteScalarStruct {
- Foo:github_com_foomo_gotsrpc_v2_demo.RemoteScalarsStrings|null;
- Bar:github_com_foomo_gotsrpc_v2_demo.RemoteScalarsStrings|null;
-}
-// github.com/foomo/gotsrpc/v2/demo.RemoteScalarsStrings
-export type RemoteScalarsStrings = Array
-// github.com/foomo/gotsrpc/v2/demo.ScalarError
-export type ScalarError = string
-// github.com/foomo/gotsrpc/v2/demo.ScalarInPlace
-export type ScalarInPlace = string
-// end of common js
\ No newline at end of file
diff --git a/demo/tests/bar.go b/demo/tests/bar.go
deleted file mode 100644
index df534b1..0000000
--- a/demo/tests/bar.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package tests
-
-import (
- "net/http"
-
- "github.com/foomo/gotsrpc/v2/demo"
-)
-
-type Bar struct{}
-
-func (b Bar) Hello(w http.ResponseWriter, r *http.Request, number int64) int {
- return int(number)
-}
-
-func (b Bar) Repeat(one, two string) (three, four bool) {
- return true, true
-}
-
-func (b Bar) Inheritance(inner demo.Inner, nested demo.OuterNested, inline demo.OuterInline) (demo.Inner, demo.OuterNested, demo.OuterInline) {
- return inner, nested, inline
-}
-
-func (b Bar) CustomType(customTypeInt demo.CustomTypeInt, customTypeString demo.CustomTypeString, customTypeStruct demo.CustomTypeStruct) (*demo.CustomTypeInt, *demo.CustomTypeString, demo.CustomTypeStruct) {
- a := demo.CustomTypeIntOne
- c := demo.CustomTypeStringOne
- return &a, &c, customTypeStruct
-}
-
-func (b Bar) CustomError(one demo.CustomError, two *demo.CustomError) (three demo.CustomError, four *demo.CustomError) {
- return one, two
-}
-
-func (b Bar) AttributeMapping() (ret demo.AttributeMapping) {
- return ret
-}
diff --git a/demo/tests/bar_test.go b/demo/tests/bar_test.go
deleted file mode 100644
index 7a02c92..0000000
--- a/demo/tests/bar_test.go
+++ /dev/null
@@ -1,46 +0,0 @@
-package tests
-
-import (
- "context"
- "net/http/httptest"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/foomo/gotsrpc/v2/demo"
-)
-
-func TestHello(t *testing.T) {
- proxy := demo.NewDefaultBarGoTSRPCProxy(&Bar{})
- server := httptest.NewServer(proxy)
- defer server.Close()
- ctx := context.Background()
-
- client := demo.NewDefaultBarGoTSRPCClient(server.URL)
-
- if res, clientErr := client.Hello(ctx, 10); assert.NoError(t, clientErr) {
- assert.Equal(t, 10, res)
- }
-}
-
-func TestCustomError(t *testing.T) {
- proxy := demo.NewDefaultBarGoTSRPCProxy(&Bar{})
- server := httptest.NewServer(proxy)
- defer server.Close()
- ctx := context.Background()
-
- client := demo.NewDefaultBarGoTSRPCClient(server.URL)
-
- if three, four, clientErr := client.CustomError(ctx, "", nil); assert.NoError(t, clientErr) {
- assert.Equal(t, demo.CustomError(""), three)
- assert.Nil(t, four)
- }
-
- one := demo.CustomErrorDemo
- two := demo.ErrCustomDemo
- if three, four, clientErr := client.CustomError(ctx, one, two); assert.NoError(t, clientErr) {
- assert.NotNil(t, three)
- assert.NotNil(t, four)
- assert.ErrorIs(t, demo.ErrCustomDemo, two)
- }
-}
diff --git a/example/basic/client/index.html b/example/basic/client/index.html
new file mode 100644
index 0000000..aa0d62c
--- /dev/null
+++ b/example/basic/client/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+ Basic
+
+
+
+A service test
+
+ open the console!
+
+
+
\ No newline at end of file
diff --git a/example/basic/client/src/app.ts b/example/basic/client/src/app.ts
new file mode 100644
index 0000000..95f0634
--- /dev/null
+++ b/example/basic/client/src/app.ts
@@ -0,0 +1,11 @@
+import {ServiceClient} from "./service-client.js";
+import transport from "./transport.js";
+
+
+export const init = () => {
+ const client = new ServiceClient(transport("/service"));
+
+ client.string("hello world").then((res) => {
+ console.log(res);
+ });
+};
diff --git a/example/basic/client/src/service-client.ts b/example/basic/client/src/service-client.ts
new file mode 100644
index 0000000..3f0b318
--- /dev/null
+++ b/example/basic/client/src/service-client.ts
@@ -0,0 +1,187 @@
+/* eslint:disable */
+// hello commonjs - we need some imports - sorted in alphabetical order, by go package
+import * as github_com_foomo_gotsrpc_v2_example_basic_service from './service-vo'; // ./client/src/service-client.ts to ./client/src/service-vo.ts
+
+export class ServiceClient {
+ public static defaultEndpoint = "/service";
+ constructor(
+ public transport:(method: string, data?: any[]) => Promise
+ ) {}
+ async bool(v:boolean):Promise {
+ return (await this.transport<{0:boolean}>("Bool", [v]))[0]
+ }
+ async boolSlice(v:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("BoolSlice", [v]))[0]
+ }
+ async float32(v:number):Promise {
+ return (await this.transport<{0:number}>("Float32", [v]))[0]
+ }
+ async float32Map(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("Float32Map", [v]))[0]
+ }
+ async float32Slice(v:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("Float32Slice", [v]))[0]
+ }
+ async float32Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.Float32Type):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Float32Type}>("Float32Type", [v]))[0]
+ }
+ async float32TypeMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("Float32TypeMap", [v]))[0]
+ }
+ async float32TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.Float32TypeMapTyped|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Float32TypeMapTyped|null}>("Float32TypeMapTyped", [v]))[0]
+ }
+ async float64(v:number):Promise {
+ return (await this.transport<{0:number}>("Float64", [v]))[0]
+ }
+ async float64Map(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("Float64Map", [v]))[0]
+ }
+ async float64Slice(v:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("Float64Slice", [v]))[0]
+ }
+ async float64Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.Float64Type):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Float64Type}>("Float64Type", [v]))[0]
+ }
+ async float64TypeMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("Float64TypeMap", [v]))[0]
+ }
+ async float64TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.Float64TypeMapTyped|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Float64TypeMapTyped|null}>("Float64TypeMapTyped", [v]))[0]
+ }
+ async int(v:number):Promise {
+ return (await this.transport<{0:number}>("Int", [v]))[0]
+ }
+ async int32(v:number):Promise {
+ return (await this.transport<{0:number}>("Int32", [v]))[0]
+ }
+ async int32Map(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("Int32Map", [v]))[0]
+ }
+ async int32Slice(v:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("Int32Slice", [v]))[0]
+ }
+ async int32Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.Int32Type):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Int32Type}>("Int32Type", [v]))[0]
+ }
+ async int32TypeMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("Int32TypeMap", [v]))[0]
+ }
+ async int32TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.Int32TypeMapTyped|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Int32TypeMapTyped|null}>("Int32TypeMapTyped", [v]))[0]
+ }
+ async int64(v:number):Promise {
+ return (await this.transport<{0:number}>("Int64", [v]))[0]
+ }
+ async int64Map(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("Int64Map", [v]))[0]
+ }
+ async int64Slice(v:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("Int64Slice", [v]))[0]
+ }
+ async int64Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.Int64Type):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Int64Type}>("Int64Type", [v]))[0]
+ }
+ async int64TypeMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("Int64TypeMap", [v]))[0]
+ }
+ async int64TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.Int64TypeMapTyped|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Int64TypeMapTyped|null}>("Int64TypeMapTyped", [v]))[0]
+ }
+ async intMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("IntMap", [v]))[0]
+ }
+ async intSlice(v:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("IntSlice", [v]))[0]
+ }
+ async intType(v:github_com_foomo_gotsrpc_v2_example_basic_service.IntType):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.IntType}>("IntType", [v]))[0]
+ }
+ async intTypeMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("IntTypeMap", [v]))[0]
+ }
+ async intTypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.IntTypeMapTyped|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.IntTypeMapTyped|null}>("IntTypeMapTyped", [v]))[0]
+ }
+ async interface(v:any):Promise {
+ return (await this.transport<{0:any}>("Interface", [v]))[0]
+ }
+ async interfaceSlice(v:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("InterfaceSlice", [v]))[0]
+ }
+ async string(v:string):Promise {
+ return (await this.transport<{0:string}>("String", [v]))[0]
+ }
+ async stringMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("StringMap", [v]))[0]
+ }
+ async stringSlice(v:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("StringSlice", [v]))[0]
+ }
+ async stringType(v:github_com_foomo_gotsrpc_v2_example_basic_service.StringType):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.StringType}>("StringType", [v]))[0]
+ }
+ async stringTypeMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("StringTypeMap", [v]))[0]
+ }
+ async stringTypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.StringTypeMapTyped|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.StringTypeMapTyped|null}>("StringTypeMapTyped", [v]))[0]
+ }
+ async struct(v:github_com_foomo_gotsrpc_v2_example_basic_service.Struct):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.Struct}>("Struct", [v]))[0]
+ }
+ async uInt(v:number):Promise {
+ return (await this.transport<{0:number}>("UInt", [v]))[0]
+ }
+ async uInt32(v:number):Promise {
+ return (await this.transport<{0:number}>("UInt32", [v]))[0]
+ }
+ async uInt32Map(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("UInt32Map", [v]))[0]
+ }
+ async uInt32Slice(v:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("UInt32Slice", [v]))[0]
+ }
+ async uInt32Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.UInt32Type):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UInt32Type}>("UInt32Type", [v]))[0]
+ }
+ async uInt32TypeMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("UInt32TypeMap", [v]))[0]
+ }
+ async uInt32TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.UInt32TypeMapTyped|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UInt32TypeMapTyped|null}>("UInt32TypeMapTyped", [v]))[0]
+ }
+ async uInt64(v:number):Promise {
+ return (await this.transport<{0:number}>("UInt64", [v]))[0]
+ }
+ async uInt64Map(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("UInt64Map", [v]))[0]
+ }
+ async uInt64Slice(v:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("UInt64Slice", [v]))[0]
+ }
+ async uInt64Type(v:github_com_foomo_gotsrpc_v2_example_basic_service.UInt64Type):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UInt64Type}>("UInt64Type", [v]))[0]
+ }
+ async uInt64TypeMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("UInt64TypeMap", [v]))[0]
+ }
+ async uInt64TypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.UInt64TypeMapTyped|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UInt64TypeMapTyped|null}>("UInt64TypeMapTyped", [v]))[0]
+ }
+ async uIntMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("UIntMap", [v]))[0]
+ }
+ async uIntSlice(v:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("UIntSlice", [v]))[0]
+ }
+ async uIntType(v:github_com_foomo_gotsrpc_v2_example_basic_service.UIntType):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UIntType}>("UIntType", [v]))[0]
+ }
+ async uIntTypeMap(v:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("UIntTypeMap", [v]))[0]
+ }
+ async uIntTypeMapTyped(v:github_com_foomo_gotsrpc_v2_example_basic_service.UIntTypeMapTyped|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_basic_service.UIntTypeMapTyped|null}>("UIntTypeMapTyped", [v]))[0]
+ }
+}
\ No newline at end of file
diff --git a/example/basic/client/src/service-vo.ts b/example/basic/client/src/service-vo.ts
new file mode 100644
index 0000000..0cbe634
--- /dev/null
+++ b/example/basic/client/src/service-vo.ts
@@ -0,0 +1,179 @@
+/* eslint:disable */
+// hello commonjs - we need some imports - sorted in alphabetical order, by go package
+import * as github_com_foomo_gotsrpc_v2_example_basic_service from './service-vo'; // ./client/src/service-vo.ts to ./client/src/service-vo.ts
+// github.com/foomo/gotsrpc/v2/example/basic/service.Float32Type
+export enum Float32Type {
+ Float32AType = 1,
+ Float32BType = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Float32TypeMapKey
+export enum Float32TypeMapKey {
+ Float32ATypeMapKey = 1,
+ Float32BTypeMapKey = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Float32TypeMapTyped
+export type Float32TypeMapTyped = Record
+// github.com/foomo/gotsrpc/v2/example/basic/service.Float32TypeMapValue
+export enum Float32TypeMapValue {
+ Float32ATypeMapValue = 1,
+ Float32BTypeMapValue = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Float64Type
+export enum Float64Type {
+ Float64AType = 1,
+ Float64BType = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Float64TypeMapKey
+export enum Float64TypeMapKey {
+ Float64ATypeMapKey = 1,
+ Float64BTypeMapKey = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Float64TypeMapTyped
+export type Float64TypeMapTyped = Record
+// github.com/foomo/gotsrpc/v2/example/basic/service.Float64TypeMapValue
+export enum Float64TypeMapValue {
+ Float64ATypeMapValue = 1,
+ Float64BTypeMapValue = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Int32Type
+export enum Int32Type {
+ Int32AType = 1,
+ Int32BType = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Int32TypeMapKey
+export enum Int32TypeMapKey {
+ Int32ATypeMapKey = 1,
+ Int32BTypeMapKey = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Int32TypeMapTyped
+export type Int32TypeMapTyped = Record
+// github.com/foomo/gotsrpc/v2/example/basic/service.Int32TypeMapValue
+export enum Int32TypeMapValue {
+ Int32ATypeMapValue = 1,
+ Int32BTypeMapValue = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Int64Type
+export enum Int64Type {
+ Int64AType = 1,
+ Int64BType = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Int64TypeMapKey
+export enum Int64TypeMapKey {
+ Int64ATypeMapKey = 1,
+ Int64BTypeMapKey = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Int64TypeMapTyped
+export type Int64TypeMapTyped = Record
+// github.com/foomo/gotsrpc/v2/example/basic/service.Int64TypeMapValue
+export enum Int64TypeMapValue {
+ Int64ATypeMapValue = 1,
+ Int64BTypeMapValue = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.IntType
+export enum IntType {
+ IntAType = 1,
+ IntBType = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.IntTypeMapKey
+export enum IntTypeMapKey {
+ IntATypeMapKey = 1,
+ IntBTypeMapKey = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.IntTypeMapTyped
+export type IntTypeMapTyped = Record
+// github.com/foomo/gotsrpc/v2/example/basic/service.IntTypeMapValue
+export enum IntTypeMapValue {
+ IntATypeMapValue = 1,
+ IntBTypeMapValue = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.StringType
+export enum StringType {
+ StringAType = "A",
+ StringBType = "B",
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.StringTypeMapKey
+export enum StringTypeMapKey {
+ StringATypeMapKey = "A",
+ StringBTypeMapKey = "B",
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.StringTypeMapTyped
+export type StringTypeMapTyped = Record
+// github.com/foomo/gotsrpc/v2/example/basic/service.StringTypeMapValue
+export enum StringTypeMapValue {
+ StringATypeMapValue = "A",
+ StringBTypeMapValue = "B",
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.Struct
+export interface Struct {
+ Int:number;
+ Int32:number;
+ Int64:number;
+ UInt:number;
+ UInt32:number;
+ UInt64:number;
+ Float32:number;
+ Float64:number;
+ String:string;
+ Interface:any;
+ IntTypeMapTyped:Record|null;
+ Int32TypeMapTyped:Record|null;
+ Int64TypeMapTyped:Record|null;
+ UIntTypeMapTyped:Record|null;
+ UInt32TypeMapTyped:Record|null;
+ UInt64TypeMapTyped:Record|null;
+ Float32TypeMapTyped:Record|null;
+ Float64TypeMapTyped:Record|null;
+ StringTypeMapTyped:Record|null;
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.UInt32Type
+export enum UInt32Type {
+ UInt32AType = 1,
+ UInt32BType = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.UInt32TypeMapKey
+export enum UInt32TypeMapKey {
+ UInt32ATypeMapKey = 1,
+ UInt32BTypeMapKey = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.UInt32TypeMapTyped
+export type UInt32TypeMapTyped = Record
+// github.com/foomo/gotsrpc/v2/example/basic/service.UInt32TypeMapValue
+export enum UInt32TypeMapValue {
+ UInt32ATypeMapValue = 1,
+ UInt32BTypeMapValue = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.UInt64Type
+export enum UInt64Type {
+ UInt64AType = 1,
+ UInt64BType = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.UInt64TypeMapKey
+export enum UInt64TypeMapKey {
+ UInt64ATypeMapKey = 1,
+ UInt64BTypeMapKey = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.UInt64TypeMapTyped
+export type UInt64TypeMapTyped = Record
+// github.com/foomo/gotsrpc/v2/example/basic/service.UInt64TypeMapValue
+export enum UInt64TypeMapValue {
+ UInt64ATypeMapValue = 1,
+ UInt64BTypeMapValue = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.UIntType
+export enum UIntType {
+ UIntAType = 1,
+ UIntBType = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.UIntTypeMapKey
+export enum UIntTypeMapKey {
+ UIntATypeMapKey = 1,
+ UIntBTypeMapKey = 2,
+}
+// github.com/foomo/gotsrpc/v2/example/basic/service.UIntTypeMapTyped
+export type UIntTypeMapTyped = Record
+// github.com/foomo/gotsrpc/v2/example/basic/service.UIntTypeMapValue
+export enum UIntTypeMapValue {
+ UIntATypeMapValue = 1,
+ UIntBTypeMapValue = 2,
+}
+// end of common js
\ No newline at end of file
diff --git a/example/basic/client/src/transport.ts b/example/basic/client/src/transport.ts
new file mode 100644
index 0000000..79683ce
--- /dev/null
+++ b/example/basic/client/src/transport.ts
@@ -0,0 +1,18 @@
+const transport = endpoint => async (method: string, args: any = []) => {
+ return new Promise(async (resolve, reject) => {
+ fetch(
+ `${endpoint}/${encodeURIComponent(method)}`,
+ {
+ method: 'POST',
+ body: JSON.stringify(args),
+ }
+ )
+ .then((response) => {
+ return response.json() as Promise;
+ })
+ .then((val) => resolve(val))
+ .catch((err) => reject(err))
+ })
+};
+
+export default transport
diff --git a/example/basic/client/tsconfig.json b/example/basic/client/tsconfig.json
new file mode 100644
index 0000000..82acc28
--- /dev/null
+++ b/example/basic/client/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./dist",
+ "rootDir": "./src"
+ }
+}
\ No newline at end of file
diff --git a/example/basic/go.mod b/example/basic/go.mod
new file mode 100644
index 0000000..0248631
--- /dev/null
+++ b/example/basic/go.mod
@@ -0,0 +1,13 @@
+module github.com/foomo/gotsrpc/v2/example/basic
+
+go 1.16
+
+require (
+ github.com/davecgh/go-spew v1.1.1
+ github.com/foomo/gotsrpc/v2 v2.0.10
+ github.com/pkg/errors v0.9.1
+ github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774
+ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
+)
+
+replace github.com/foomo/gotsrpc/v2 => ../../
diff --git a/example/basic/go.sum b/example/basic/go.sum
new file mode 100644
index 0000000..ac4944b
--- /dev/null
+++ b/example/basic/go.sum
@@ -0,0 +1,487 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
+cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
+cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
+cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
+cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
+cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
+cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
+cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
+cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
+cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
+cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
+cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
+cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
+cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
+cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
+cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
+cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
+cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
+cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
+cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
+cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
+cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
+cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
+cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
+cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
+cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
+cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
+cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
+cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
+cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
+dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
+github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
+github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
+github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
+github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
+github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
+github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
+github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
+github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
+github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
+github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
+github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
+github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
+github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
+github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
+github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
+github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
+github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0=
+github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
+github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
+github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
+github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
+github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
+github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
+github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
+github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
+github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
+github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
+github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
+github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
+github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
+github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
+github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
+github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
+github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
+github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
+github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
+github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
+github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
+github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
+github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
+github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
+github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.2.6 h1:tGiWC9HENWE2tqYycIqFTNorMmFRVhNwCpDOpWqnk8E=
+github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0=
+github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ=
+github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw=
+github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774 h1:SUHFQHAaySqF0YHCmmm0EIFooFZpDPpi5KTom7YJ07c=
+github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774/go.mod h1:8uNqM1i7pr0jO7gdvbNCgsSa8Ki2vMh7JCQxO9BlF90=
+github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
+go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
+go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
+golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
+golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
+golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
+golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
+golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
+golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
+golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
+golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
+golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
+golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=
+golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
+golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0=
+golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
+golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8=
+golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
+google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
+google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
+google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
+google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
+google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
+google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
+google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
+google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
+google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
+google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
+honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
+rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
+rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
diff --git a/example/basic/gotsrpc.yml b/example/basic/gotsrpc.yml
new file mode 100644
index 0000000..e64a9e5
--- /dev/null
+++ b/example/basic/gotsrpc.yml
@@ -0,0 +1,18 @@
+module:
+ name: github.com/foomo/gotsrpc/v2/example/basic
+ path: ./
+
+targets:
+ basic:
+ services:
+ /service: Service
+ package: github.com/foomo/gotsrpc/v2/example/basic/service
+ out: ./client/src/service-client.ts
+ gorpc:
+ - Service
+ tsrpc:
+ - Service
+
+mappings:
+ github.com/foomo/gotsrpc/v2/example/basic/service:
+ out: ./client/src/service-vo.ts
diff --git a/example/basic/main.go b/example/basic/main.go
new file mode 100644
index 0000000..6569fe6
--- /dev/null
+++ b/example/basic/main.go
@@ -0,0 +1,32 @@
+package main
+
+import (
+ "net/http"
+ "os/exec"
+ "strings"
+ "time"
+
+ "github.com/foomo/gotsrpc/v2/example/basic/service"
+)
+
+func main() {
+ fs := http.FileServer(http.Dir("./client"))
+ ws := service.NewDefaultServiceGoTSRPCProxy(&service.Handler{})
+
+ mux := http.NewServeMux()
+ mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ switch {
+ case strings.HasPrefix(r.URL.Path, "/service/"):
+ ws.ServeHTTP(w, r)
+ default:
+ fs.ServeHTTP(w, r)
+ }
+ })
+
+ go func() {
+ time.Sleep(time.Second)
+ _ = exec.Command("open", "http://127.0.0.1:3000").Run()
+ }()
+
+ _ = http.ListenAndServe("localhost:3000", mux)
+}
diff --git a/example/basic/service/gorpc_gen.go b/example/basic/service/gorpc_gen.go
new file mode 100644
index 0000000..a398030
--- /dev/null
+++ b/example/basic/service/gorpc_gen.go
@@ -0,0 +1,847 @@
+// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
+
+package service
+
+import (
+ tls "crypto/tls"
+ gob "encoding/gob"
+ fmt "fmt"
+ reflect "reflect"
+ strings "strings"
+ time "time"
+
+ gotsrpc "github.com/foomo/gotsrpc/v2"
+ gorpc "github.com/valyala/gorpc"
+)
+
+type (
+ ServiceGoRPCProxy struct {
+ server *gorpc.Server
+ service Service
+ callStatsHandler gotsrpc.GoRPCCallStatsHandlerFun
+ }
+
+ ServiceBoolRequest struct {
+ V bool
+ }
+ ServiceBoolResponse struct {
+ RetBool_0 bool
+ }
+
+ ServiceBoolSliceRequest struct {
+ V []bool
+ }
+ ServiceBoolSliceResponse struct {
+ RetBoolSlice_0 []bool
+ }
+
+ ServiceFloat32Request struct {
+ V float32
+ }
+ ServiceFloat32Response struct {
+ RetFloat32_0 float32
+ }
+
+ ServiceFloat32MapRequest struct {
+ V map[float32]interface{}
+ }
+ ServiceFloat32MapResponse struct {
+ RetFloat32Map_0 map[float32]interface{}
+ }
+
+ ServiceFloat32SliceRequest struct {
+ V []float32
+ }
+ ServiceFloat32SliceResponse struct {
+ RetFloat32Slice_0 []float32
+ }
+
+ ServiceFloat32TypeRequest struct {
+ V Float32Type
+ }
+ ServiceFloat32TypeResponse struct {
+ RetFloat32Type_0 Float32Type
+ }
+
+ ServiceFloat32TypeMapRequest struct {
+ V map[Float32TypeMapKey]Float32TypeMapValue
+ }
+ ServiceFloat32TypeMapResponse struct {
+ RetFloat32TypeMap_0 map[Float32TypeMapKey]Float32TypeMapValue
+ }
+
+ ServiceFloat32TypeMapTypedRequest struct {
+ V Float32TypeMapTyped
+ }
+ ServiceFloat32TypeMapTypedResponse struct {
+ RetFloat32TypeMapTyped_0 Float32TypeMapTyped
+ }
+
+ ServiceFloat64Request struct {
+ V float64
+ }
+ ServiceFloat64Response struct {
+ RetFloat64_0 float64
+ }
+
+ ServiceFloat64MapRequest struct {
+ V map[float64]interface{}
+ }
+ ServiceFloat64MapResponse struct {
+ RetFloat64Map_0 map[float64]interface{}
+ }
+
+ ServiceFloat64SliceRequest struct {
+ V []float64
+ }
+ ServiceFloat64SliceResponse struct {
+ RetFloat64Slice_0 []float64
+ }
+
+ ServiceFloat64TypeRequest struct {
+ V Float64Type
+ }
+ ServiceFloat64TypeResponse struct {
+ RetFloat64Type_0 Float64Type
+ }
+
+ ServiceFloat64TypeMapRequest struct {
+ V map[Float64TypeMapKey]Float64TypeMapValue
+ }
+ ServiceFloat64TypeMapResponse struct {
+ RetFloat64TypeMap_0 map[Float64TypeMapKey]Float64TypeMapValue
+ }
+
+ ServiceFloat64TypeMapTypedRequest struct {
+ V Float64TypeMapTyped
+ }
+ ServiceFloat64TypeMapTypedResponse struct {
+ RetFloat64TypeMapTyped_0 Float64TypeMapTyped
+ }
+
+ ServiceIntRequest struct {
+ V int
+ }
+ ServiceIntResponse struct {
+ RetInt_0 int
+ }
+
+ ServiceInt32Request struct {
+ V int32
+ }
+ ServiceInt32Response struct {
+ RetInt32_0 int32
+ }
+
+ ServiceInt32MapRequest struct {
+ V map[int32]interface{}
+ }
+ ServiceInt32MapResponse struct {
+ RetInt32Map_0 map[int32]interface{}
+ }
+
+ ServiceInt32SliceRequest struct {
+ V []int32
+ }
+ ServiceInt32SliceResponse struct {
+ RetInt32Slice_0 []int32
+ }
+
+ ServiceInt32TypeRequest struct {
+ V Int32Type
+ }
+ ServiceInt32TypeResponse struct {
+ RetInt32Type_0 Int32Type
+ }
+
+ ServiceInt32TypeMapRequest struct {
+ V map[Int32TypeMapKey]Int32TypeMapValue
+ }
+ ServiceInt32TypeMapResponse struct {
+ RetInt32TypeMap_0 map[Int32TypeMapKey]Int32TypeMapValue
+ }
+
+ ServiceInt32TypeMapTypedRequest struct {
+ V Int32TypeMapTyped
+ }
+ ServiceInt32TypeMapTypedResponse struct {
+ RetInt32TypeMapTyped_0 Int32TypeMapTyped
+ }
+
+ ServiceInt64Request struct {
+ V int64
+ }
+ ServiceInt64Response struct {
+ RetInt64_0 int64
+ }
+
+ ServiceInt64MapRequest struct {
+ V map[int64]interface{}
+ }
+ ServiceInt64MapResponse struct {
+ RetInt64Map_0 map[int64]interface{}
+ }
+
+ ServiceInt64SliceRequest struct {
+ V []int64
+ }
+ ServiceInt64SliceResponse struct {
+ RetInt64Slice_0 []int64
+ }
+
+ ServiceInt64TypeRequest struct {
+ V Int64Type
+ }
+ ServiceInt64TypeResponse struct {
+ RetInt64Type_0 Int64Type
+ }
+
+ ServiceInt64TypeMapRequest struct {
+ V map[Int64TypeMapKey]Int64TypeMapValue
+ }
+ ServiceInt64TypeMapResponse struct {
+ RetInt64TypeMap_0 map[Int64TypeMapKey]Int64TypeMapValue
+ }
+
+ ServiceInt64TypeMapTypedRequest struct {
+ V Int64TypeMapTyped
+ }
+ ServiceInt64TypeMapTypedResponse struct {
+ RetInt64TypeMapTyped_0 Int64TypeMapTyped
+ }
+
+ ServiceIntMapRequest struct {
+ V map[int]interface{}
+ }
+ ServiceIntMapResponse struct {
+ RetIntMap_0 map[int]interface{}
+ }
+
+ ServiceIntSliceRequest struct {
+ V []int
+ }
+ ServiceIntSliceResponse struct {
+ RetIntSlice_0 []int
+ }
+
+ ServiceIntTypeRequest struct {
+ V IntType
+ }
+ ServiceIntTypeResponse struct {
+ RetIntType_0 IntType
+ }
+
+ ServiceIntTypeMapRequest struct {
+ V map[IntTypeMapKey]IntTypeMapValue
+ }
+ ServiceIntTypeMapResponse struct {
+ RetIntTypeMap_0 map[IntTypeMapKey]IntTypeMapValue
+ }
+
+ ServiceIntTypeMapTypedRequest struct {
+ V IntTypeMapTyped
+ }
+ ServiceIntTypeMapTypedResponse struct {
+ RetIntTypeMapTyped_0 IntTypeMapTyped
+ }
+
+ ServiceInterfaceRequest struct {
+ V interface{}
+ }
+ ServiceInterfaceResponse struct {
+ RetInterface_0 interface{}
+ }
+
+ ServiceInterfaceSliceRequest struct {
+ V []interface{}
+ }
+ ServiceInterfaceSliceResponse struct {
+ RetInterfaceSlice_0 []interface{}
+ }
+
+ ServiceStringRequest struct {
+ V string
+ }
+ ServiceStringResponse struct {
+ RetString_0 string
+ }
+
+ ServiceStringMapRequest struct {
+ V map[string]interface{}
+ }
+ ServiceStringMapResponse struct {
+ RetStringMap_0 map[string]interface{}
+ }
+
+ ServiceStringSliceRequest struct {
+ V []string
+ }
+ ServiceStringSliceResponse struct {
+ RetStringSlice_0 []string
+ }
+
+ ServiceStringTypeRequest struct {
+ V StringType
+ }
+ ServiceStringTypeResponse struct {
+ RetStringType_0 StringType
+ }
+
+ ServiceStringTypeMapRequest struct {
+ V map[StringTypeMapKey]StringTypeMapValue
+ }
+ ServiceStringTypeMapResponse struct {
+ RetStringTypeMap_0 map[StringTypeMapKey]StringTypeMapValue
+ }
+
+ ServiceStringTypeMapTypedRequest struct {
+ V StringTypeMapTyped
+ }
+ ServiceStringTypeMapTypedResponse struct {
+ RetStringTypeMapTyped_0 StringTypeMapTyped
+ }
+
+ ServiceStructRequest struct {
+ V Struct
+ }
+ ServiceStructResponse struct {
+ RetStruct_0 Struct
+ }
+
+ ServiceUIntRequest struct {
+ V uint
+ }
+ ServiceUIntResponse struct {
+ RetUInt_0 uint
+ }
+
+ ServiceUInt32Request struct {
+ V uint32
+ }
+ ServiceUInt32Response struct {
+ RetUInt32_0 uint32
+ }
+
+ ServiceUInt32MapRequest struct {
+ V map[uint32]interface{}
+ }
+ ServiceUInt32MapResponse struct {
+ RetUInt32Map_0 map[uint32]interface{}
+ }
+
+ ServiceUInt32SliceRequest struct {
+ V []uint32
+ }
+ ServiceUInt32SliceResponse struct {
+ RetUInt32Slice_0 []uint32
+ }
+
+ ServiceUInt32TypeRequest struct {
+ V UInt32Type
+ }
+ ServiceUInt32TypeResponse struct {
+ RetUInt32Type_0 UInt32Type
+ }
+
+ ServiceUInt32TypeMapRequest struct {
+ V map[UInt32TypeMapKey]UInt32TypeMapValue
+ }
+ ServiceUInt32TypeMapResponse struct {
+ RetUInt32TypeMap_0 map[UInt32TypeMapKey]UInt32TypeMapValue
+ }
+
+ ServiceUInt32TypeMapTypedRequest struct {
+ V UInt32TypeMapTyped
+ }
+ ServiceUInt32TypeMapTypedResponse struct {
+ RetUInt32TypeMapTyped_0 UInt32TypeMapTyped
+ }
+
+ ServiceUInt64Request struct {
+ V uint64
+ }
+ ServiceUInt64Response struct {
+ RetUInt64_0 uint64
+ }
+
+ ServiceUInt64MapRequest struct {
+ V map[uint64]interface{}
+ }
+ ServiceUInt64MapResponse struct {
+ RetUInt64Map_0 map[uint64]interface{}
+ }
+
+ ServiceUInt64SliceRequest struct {
+ V []uint64
+ }
+ ServiceUInt64SliceResponse struct {
+ RetUInt64Slice_0 []uint64
+ }
+
+ ServiceUInt64TypeRequest struct {
+ V UInt64Type
+ }
+ ServiceUInt64TypeResponse struct {
+ RetUInt64Type_0 UInt64Type
+ }
+
+ ServiceUInt64TypeMapRequest struct {
+ V map[UInt64TypeMapKey]UInt64TypeMapValue
+ }
+ ServiceUInt64TypeMapResponse struct {
+ RetUInt64TypeMap_0 map[UInt64TypeMapKey]UInt64TypeMapValue
+ }
+
+ ServiceUInt64TypeMapTypedRequest struct {
+ V UInt64TypeMapTyped
+ }
+ ServiceUInt64TypeMapTypedResponse struct {
+ RetUInt64TypeMapTyped_0 UInt64TypeMapTyped
+ }
+
+ ServiceUIntMapRequest struct {
+ V map[uint]interface{}
+ }
+ ServiceUIntMapResponse struct {
+ RetUIntMap_0 map[uint]interface{}
+ }
+
+ ServiceUIntSliceRequest struct {
+ V []uint
+ }
+ ServiceUIntSliceResponse struct {
+ RetUIntSlice_0 []uint
+ }
+
+ ServiceUIntTypeRequest struct {
+ V UIntType
+ }
+ ServiceUIntTypeResponse struct {
+ RetUIntType_0 UIntType
+ }
+
+ ServiceUIntTypeMapRequest struct {
+ V map[UIntTypeMapKey]UIntTypeMapValue
+ }
+ ServiceUIntTypeMapResponse struct {
+ RetUIntTypeMap_0 map[UIntTypeMapKey]UIntTypeMapValue
+ }
+
+ ServiceUIntTypeMapTypedRequest struct {
+ V UIntTypeMapTyped
+ }
+ ServiceUIntTypeMapTypedResponse struct {
+ RetUIntTypeMapTyped_0 UIntTypeMapTyped
+ }
+)
+
+func init() {
+ gob.Register(ServiceBoolRequest{})
+ gob.Register(ServiceBoolResponse{})
+ gob.Register(ServiceBoolSliceRequest{})
+ gob.Register(ServiceBoolSliceResponse{})
+ gob.Register(ServiceFloat32Request{})
+ gob.Register(ServiceFloat32Response{})
+ gob.Register(ServiceFloat32MapRequest{})
+ gob.Register(ServiceFloat32MapResponse{})
+ gob.Register(ServiceFloat32SliceRequest{})
+ gob.Register(ServiceFloat32SliceResponse{})
+ gob.Register(ServiceFloat32TypeRequest{})
+ gob.Register(ServiceFloat32TypeResponse{})
+ gob.Register(ServiceFloat32TypeMapRequest{})
+ gob.Register(ServiceFloat32TypeMapResponse{})
+ gob.Register(ServiceFloat32TypeMapTypedRequest{})
+ gob.Register(ServiceFloat32TypeMapTypedResponse{})
+ gob.Register(ServiceFloat64Request{})
+ gob.Register(ServiceFloat64Response{})
+ gob.Register(ServiceFloat64MapRequest{})
+ gob.Register(ServiceFloat64MapResponse{})
+ gob.Register(ServiceFloat64SliceRequest{})
+ gob.Register(ServiceFloat64SliceResponse{})
+ gob.Register(ServiceFloat64TypeRequest{})
+ gob.Register(ServiceFloat64TypeResponse{})
+ gob.Register(ServiceFloat64TypeMapRequest{})
+ gob.Register(ServiceFloat64TypeMapResponse{})
+ gob.Register(ServiceFloat64TypeMapTypedRequest{})
+ gob.Register(ServiceFloat64TypeMapTypedResponse{})
+ gob.Register(ServiceIntRequest{})
+ gob.Register(ServiceIntResponse{})
+ gob.Register(ServiceInt32Request{})
+ gob.Register(ServiceInt32Response{})
+ gob.Register(ServiceInt32MapRequest{})
+ gob.Register(ServiceInt32MapResponse{})
+ gob.Register(ServiceInt32SliceRequest{})
+ gob.Register(ServiceInt32SliceResponse{})
+ gob.Register(ServiceInt32TypeRequest{})
+ gob.Register(ServiceInt32TypeResponse{})
+ gob.Register(ServiceInt32TypeMapRequest{})
+ gob.Register(ServiceInt32TypeMapResponse{})
+ gob.Register(ServiceInt32TypeMapTypedRequest{})
+ gob.Register(ServiceInt32TypeMapTypedResponse{})
+ gob.Register(ServiceInt64Request{})
+ gob.Register(ServiceInt64Response{})
+ gob.Register(ServiceInt64MapRequest{})
+ gob.Register(ServiceInt64MapResponse{})
+ gob.Register(ServiceInt64SliceRequest{})
+ gob.Register(ServiceInt64SliceResponse{})
+ gob.Register(ServiceInt64TypeRequest{})
+ gob.Register(ServiceInt64TypeResponse{})
+ gob.Register(ServiceInt64TypeMapRequest{})
+ gob.Register(ServiceInt64TypeMapResponse{})
+ gob.Register(ServiceInt64TypeMapTypedRequest{})
+ gob.Register(ServiceInt64TypeMapTypedResponse{})
+ gob.Register(ServiceIntMapRequest{})
+ gob.Register(ServiceIntMapResponse{})
+ gob.Register(ServiceIntSliceRequest{})
+ gob.Register(ServiceIntSliceResponse{})
+ gob.Register(ServiceIntTypeRequest{})
+ gob.Register(ServiceIntTypeResponse{})
+ gob.Register(ServiceIntTypeMapRequest{})
+ gob.Register(ServiceIntTypeMapResponse{})
+ gob.Register(ServiceIntTypeMapTypedRequest{})
+ gob.Register(ServiceIntTypeMapTypedResponse{})
+ gob.Register(ServiceInterfaceRequest{})
+ gob.Register(ServiceInterfaceResponse{})
+ gob.Register(ServiceInterfaceSliceRequest{})
+ gob.Register(ServiceInterfaceSliceResponse{})
+ gob.Register(ServiceStringRequest{})
+ gob.Register(ServiceStringResponse{})
+ gob.Register(ServiceStringMapRequest{})
+ gob.Register(ServiceStringMapResponse{})
+ gob.Register(ServiceStringSliceRequest{})
+ gob.Register(ServiceStringSliceResponse{})
+ gob.Register(ServiceStringTypeRequest{})
+ gob.Register(ServiceStringTypeResponse{})
+ gob.Register(ServiceStringTypeMapRequest{})
+ gob.Register(ServiceStringTypeMapResponse{})
+ gob.Register(ServiceStringTypeMapTypedRequest{})
+ gob.Register(ServiceStringTypeMapTypedResponse{})
+ gob.Register(ServiceStructRequest{})
+ gob.Register(ServiceStructResponse{})
+ gob.Register(ServiceUIntRequest{})
+ gob.Register(ServiceUIntResponse{})
+ gob.Register(ServiceUInt32Request{})
+ gob.Register(ServiceUInt32Response{})
+ gob.Register(ServiceUInt32MapRequest{})
+ gob.Register(ServiceUInt32MapResponse{})
+ gob.Register(ServiceUInt32SliceRequest{})
+ gob.Register(ServiceUInt32SliceResponse{})
+ gob.Register(ServiceUInt32TypeRequest{})
+ gob.Register(ServiceUInt32TypeResponse{})
+ gob.Register(ServiceUInt32TypeMapRequest{})
+ gob.Register(ServiceUInt32TypeMapResponse{})
+ gob.Register(ServiceUInt32TypeMapTypedRequest{})
+ gob.Register(ServiceUInt32TypeMapTypedResponse{})
+ gob.Register(ServiceUInt64Request{})
+ gob.Register(ServiceUInt64Response{})
+ gob.Register(ServiceUInt64MapRequest{})
+ gob.Register(ServiceUInt64MapResponse{})
+ gob.Register(ServiceUInt64SliceRequest{})
+ gob.Register(ServiceUInt64SliceResponse{})
+ gob.Register(ServiceUInt64TypeRequest{})
+ gob.Register(ServiceUInt64TypeResponse{})
+ gob.Register(ServiceUInt64TypeMapRequest{})
+ gob.Register(ServiceUInt64TypeMapResponse{})
+ gob.Register(ServiceUInt64TypeMapTypedRequest{})
+ gob.Register(ServiceUInt64TypeMapTypedResponse{})
+ gob.Register(ServiceUIntMapRequest{})
+ gob.Register(ServiceUIntMapResponse{})
+ gob.Register(ServiceUIntSliceRequest{})
+ gob.Register(ServiceUIntSliceResponse{})
+ gob.Register(ServiceUIntTypeRequest{})
+ gob.Register(ServiceUIntTypeResponse{})
+ gob.Register(ServiceUIntTypeMapRequest{})
+ gob.Register(ServiceUIntTypeMapResponse{})
+ gob.Register(ServiceUIntTypeMapTypedRequest{})
+ gob.Register(ServiceUIntTypeMapTypedResponse{})
+}
+
+func NewServiceGoRPCProxy(addr string, service Service, tlsConfig *tls.Config) *ServiceGoRPCProxy {
+ proxy := &ServiceGoRPCProxy{
+ service: service,
+ }
+
+ if tlsConfig != nil {
+ proxy.server = gorpc.NewTLSServer(addr, proxy.handler, tlsConfig)
+ } else {
+ proxy.server = gorpc.NewTCPServer(addr, proxy.handler)
+ }
+
+ return proxy
+}
+
+func (p *ServiceGoRPCProxy) Start() error {
+ return p.server.Start()
+}
+
+func (p *ServiceGoRPCProxy) Serve() error {
+ return p.server.Serve()
+}
+
+func (p *ServiceGoRPCProxy) Stop() {
+ p.server.Stop()
+}
+
+func (p *ServiceGoRPCProxy) SetCallStatsHandler(handler gotsrpc.GoRPCCallStatsHandlerFun) {
+ p.callStatsHandler = handler
+}
+
+func (p *ServiceGoRPCProxy) handler(clientAddr string, request interface{}) (response interface{}) {
+ start := time.Now()
+
+ reqType := reflect.TypeOf(request).String()
+ funcNameParts := strings.Split(reqType, ".")
+ funcName := funcNameParts[len(funcNameParts)-1]
+
+ switch funcName {
+ case "ServiceBoolRequest":
+ req := request.(ServiceBoolRequest)
+ retBool_0 := p.service.Bool(req.V)
+ response = ServiceBoolResponse{RetBool_0: retBool_0}
+ case "ServiceBoolSliceRequest":
+ req := request.(ServiceBoolSliceRequest)
+ retBoolSlice_0 := p.service.BoolSlice(req.V)
+ response = ServiceBoolSliceResponse{RetBoolSlice_0: retBoolSlice_0}
+ case "ServiceFloat32Request":
+ req := request.(ServiceFloat32Request)
+ retFloat32_0 := p.service.Float32(req.V)
+ response = ServiceFloat32Response{RetFloat32_0: retFloat32_0}
+ case "ServiceFloat32MapRequest":
+ req := request.(ServiceFloat32MapRequest)
+ retFloat32Map_0 := p.service.Float32Map(req.V)
+ response = ServiceFloat32MapResponse{RetFloat32Map_0: retFloat32Map_0}
+ case "ServiceFloat32SliceRequest":
+ req := request.(ServiceFloat32SliceRequest)
+ retFloat32Slice_0 := p.service.Float32Slice(req.V)
+ response = ServiceFloat32SliceResponse{RetFloat32Slice_0: retFloat32Slice_0}
+ case "ServiceFloat32TypeRequest":
+ req := request.(ServiceFloat32TypeRequest)
+ retFloat32Type_0 := p.service.Float32Type(req.V)
+ response = ServiceFloat32TypeResponse{RetFloat32Type_0: retFloat32Type_0}
+ case "ServiceFloat32TypeMapRequest":
+ req := request.(ServiceFloat32TypeMapRequest)
+ retFloat32TypeMap_0 := p.service.Float32TypeMap(req.V)
+ response = ServiceFloat32TypeMapResponse{RetFloat32TypeMap_0: retFloat32TypeMap_0}
+ case "ServiceFloat32TypeMapTypedRequest":
+ req := request.(ServiceFloat32TypeMapTypedRequest)
+ retFloat32TypeMapTyped_0 := p.service.Float32TypeMapTyped(req.V)
+ response = ServiceFloat32TypeMapTypedResponse{RetFloat32TypeMapTyped_0: retFloat32TypeMapTyped_0}
+ case "ServiceFloat64Request":
+ req := request.(ServiceFloat64Request)
+ retFloat64_0 := p.service.Float64(req.V)
+ response = ServiceFloat64Response{RetFloat64_0: retFloat64_0}
+ case "ServiceFloat64MapRequest":
+ req := request.(ServiceFloat64MapRequest)
+ retFloat64Map_0 := p.service.Float64Map(req.V)
+ response = ServiceFloat64MapResponse{RetFloat64Map_0: retFloat64Map_0}
+ case "ServiceFloat64SliceRequest":
+ req := request.(ServiceFloat64SliceRequest)
+ retFloat64Slice_0 := p.service.Float64Slice(req.V)
+ response = ServiceFloat64SliceResponse{RetFloat64Slice_0: retFloat64Slice_0}
+ case "ServiceFloat64TypeRequest":
+ req := request.(ServiceFloat64TypeRequest)
+ retFloat64Type_0 := p.service.Float64Type(req.V)
+ response = ServiceFloat64TypeResponse{RetFloat64Type_0: retFloat64Type_0}
+ case "ServiceFloat64TypeMapRequest":
+ req := request.(ServiceFloat64TypeMapRequest)
+ retFloat64TypeMap_0 := p.service.Float64TypeMap(req.V)
+ response = ServiceFloat64TypeMapResponse{RetFloat64TypeMap_0: retFloat64TypeMap_0}
+ case "ServiceFloat64TypeMapTypedRequest":
+ req := request.(ServiceFloat64TypeMapTypedRequest)
+ retFloat64TypeMapTyped_0 := p.service.Float64TypeMapTyped(req.V)
+ response = ServiceFloat64TypeMapTypedResponse{RetFloat64TypeMapTyped_0: retFloat64TypeMapTyped_0}
+ case "ServiceIntRequest":
+ req := request.(ServiceIntRequest)
+ retInt_0 := p.service.Int(req.V)
+ response = ServiceIntResponse{RetInt_0: retInt_0}
+ case "ServiceInt32Request":
+ req := request.(ServiceInt32Request)
+ retInt32_0 := p.service.Int32(req.V)
+ response = ServiceInt32Response{RetInt32_0: retInt32_0}
+ case "ServiceInt32MapRequest":
+ req := request.(ServiceInt32MapRequest)
+ retInt32Map_0 := p.service.Int32Map(req.V)
+ response = ServiceInt32MapResponse{RetInt32Map_0: retInt32Map_0}
+ case "ServiceInt32SliceRequest":
+ req := request.(ServiceInt32SliceRequest)
+ retInt32Slice_0 := p.service.Int32Slice(req.V)
+ response = ServiceInt32SliceResponse{RetInt32Slice_0: retInt32Slice_0}
+ case "ServiceInt32TypeRequest":
+ req := request.(ServiceInt32TypeRequest)
+ retInt32Type_0 := p.service.Int32Type(req.V)
+ response = ServiceInt32TypeResponse{RetInt32Type_0: retInt32Type_0}
+ case "ServiceInt32TypeMapRequest":
+ req := request.(ServiceInt32TypeMapRequest)
+ retInt32TypeMap_0 := p.service.Int32TypeMap(req.V)
+ response = ServiceInt32TypeMapResponse{RetInt32TypeMap_0: retInt32TypeMap_0}
+ case "ServiceInt32TypeMapTypedRequest":
+ req := request.(ServiceInt32TypeMapTypedRequest)
+ retInt32TypeMapTyped_0 := p.service.Int32TypeMapTyped(req.V)
+ response = ServiceInt32TypeMapTypedResponse{RetInt32TypeMapTyped_0: retInt32TypeMapTyped_0}
+ case "ServiceInt64Request":
+ req := request.(ServiceInt64Request)
+ retInt64_0 := p.service.Int64(req.V)
+ response = ServiceInt64Response{RetInt64_0: retInt64_0}
+ case "ServiceInt64MapRequest":
+ req := request.(ServiceInt64MapRequest)
+ retInt64Map_0 := p.service.Int64Map(req.V)
+ response = ServiceInt64MapResponse{RetInt64Map_0: retInt64Map_0}
+ case "ServiceInt64SliceRequest":
+ req := request.(ServiceInt64SliceRequest)
+ retInt64Slice_0 := p.service.Int64Slice(req.V)
+ response = ServiceInt64SliceResponse{RetInt64Slice_0: retInt64Slice_0}
+ case "ServiceInt64TypeRequest":
+ req := request.(ServiceInt64TypeRequest)
+ retInt64Type_0 := p.service.Int64Type(req.V)
+ response = ServiceInt64TypeResponse{RetInt64Type_0: retInt64Type_0}
+ case "ServiceInt64TypeMapRequest":
+ req := request.(ServiceInt64TypeMapRequest)
+ retInt64TypeMap_0 := p.service.Int64TypeMap(req.V)
+ response = ServiceInt64TypeMapResponse{RetInt64TypeMap_0: retInt64TypeMap_0}
+ case "ServiceInt64TypeMapTypedRequest":
+ req := request.(ServiceInt64TypeMapTypedRequest)
+ retInt64TypeMapTyped_0 := p.service.Int64TypeMapTyped(req.V)
+ response = ServiceInt64TypeMapTypedResponse{RetInt64TypeMapTyped_0: retInt64TypeMapTyped_0}
+ case "ServiceIntMapRequest":
+ req := request.(ServiceIntMapRequest)
+ retIntMap_0 := p.service.IntMap(req.V)
+ response = ServiceIntMapResponse{RetIntMap_0: retIntMap_0}
+ case "ServiceIntSliceRequest":
+ req := request.(ServiceIntSliceRequest)
+ retIntSlice_0 := p.service.IntSlice(req.V)
+ response = ServiceIntSliceResponse{RetIntSlice_0: retIntSlice_0}
+ case "ServiceIntTypeRequest":
+ req := request.(ServiceIntTypeRequest)
+ retIntType_0 := p.service.IntType(req.V)
+ response = ServiceIntTypeResponse{RetIntType_0: retIntType_0}
+ case "ServiceIntTypeMapRequest":
+ req := request.(ServiceIntTypeMapRequest)
+ retIntTypeMap_0 := p.service.IntTypeMap(req.V)
+ response = ServiceIntTypeMapResponse{RetIntTypeMap_0: retIntTypeMap_0}
+ case "ServiceIntTypeMapTypedRequest":
+ req := request.(ServiceIntTypeMapTypedRequest)
+ retIntTypeMapTyped_0 := p.service.IntTypeMapTyped(req.V)
+ response = ServiceIntTypeMapTypedResponse{RetIntTypeMapTyped_0: retIntTypeMapTyped_0}
+ case "ServiceInterfaceRequest":
+ req := request.(ServiceInterfaceRequest)
+ retInterface_0 := p.service.Interface(req.V)
+ response = ServiceInterfaceResponse{RetInterface_0: retInterface_0}
+ case "ServiceInterfaceSliceRequest":
+ req := request.(ServiceInterfaceSliceRequest)
+ retInterfaceSlice_0 := p.service.InterfaceSlice(req.V)
+ response = ServiceInterfaceSliceResponse{RetInterfaceSlice_0: retInterfaceSlice_0}
+ case "ServiceStringRequest":
+ req := request.(ServiceStringRequest)
+ retString_0 := p.service.String(req.V)
+ response = ServiceStringResponse{RetString_0: retString_0}
+ case "ServiceStringMapRequest":
+ req := request.(ServiceStringMapRequest)
+ retStringMap_0 := p.service.StringMap(req.V)
+ response = ServiceStringMapResponse{RetStringMap_0: retStringMap_0}
+ case "ServiceStringSliceRequest":
+ req := request.(ServiceStringSliceRequest)
+ retStringSlice_0 := p.service.StringSlice(req.V)
+ response = ServiceStringSliceResponse{RetStringSlice_0: retStringSlice_0}
+ case "ServiceStringTypeRequest":
+ req := request.(ServiceStringTypeRequest)
+ retStringType_0 := p.service.StringType(req.V)
+ response = ServiceStringTypeResponse{RetStringType_0: retStringType_0}
+ case "ServiceStringTypeMapRequest":
+ req := request.(ServiceStringTypeMapRequest)
+ retStringTypeMap_0 := p.service.StringTypeMap(req.V)
+ response = ServiceStringTypeMapResponse{RetStringTypeMap_0: retStringTypeMap_0}
+ case "ServiceStringTypeMapTypedRequest":
+ req := request.(ServiceStringTypeMapTypedRequest)
+ retStringTypeMapTyped_0 := p.service.StringTypeMapTyped(req.V)
+ response = ServiceStringTypeMapTypedResponse{RetStringTypeMapTyped_0: retStringTypeMapTyped_0}
+ case "ServiceStructRequest":
+ req := request.(ServiceStructRequest)
+ retStruct_0 := p.service.Struct(req.V)
+ response = ServiceStructResponse{RetStruct_0: retStruct_0}
+ case "ServiceUIntRequest":
+ req := request.(ServiceUIntRequest)
+ retUInt_0 := p.service.UInt(req.V)
+ response = ServiceUIntResponse{RetUInt_0: retUInt_0}
+ case "ServiceUInt32Request":
+ req := request.(ServiceUInt32Request)
+ retUInt32_0 := p.service.UInt32(req.V)
+ response = ServiceUInt32Response{RetUInt32_0: retUInt32_0}
+ case "ServiceUInt32MapRequest":
+ req := request.(ServiceUInt32MapRequest)
+ retUInt32Map_0 := p.service.UInt32Map(req.V)
+ response = ServiceUInt32MapResponse{RetUInt32Map_0: retUInt32Map_0}
+ case "ServiceUInt32SliceRequest":
+ req := request.(ServiceUInt32SliceRequest)
+ retUInt32Slice_0 := p.service.UInt32Slice(req.V)
+ response = ServiceUInt32SliceResponse{RetUInt32Slice_0: retUInt32Slice_0}
+ case "ServiceUInt32TypeRequest":
+ req := request.(ServiceUInt32TypeRequest)
+ retUInt32Type_0 := p.service.UInt32Type(req.V)
+ response = ServiceUInt32TypeResponse{RetUInt32Type_0: retUInt32Type_0}
+ case "ServiceUInt32TypeMapRequest":
+ req := request.(ServiceUInt32TypeMapRequest)
+ retUInt32TypeMap_0 := p.service.UInt32TypeMap(req.V)
+ response = ServiceUInt32TypeMapResponse{RetUInt32TypeMap_0: retUInt32TypeMap_0}
+ case "ServiceUInt32TypeMapTypedRequest":
+ req := request.(ServiceUInt32TypeMapTypedRequest)
+ retUInt32TypeMapTyped_0 := p.service.UInt32TypeMapTyped(req.V)
+ response = ServiceUInt32TypeMapTypedResponse{RetUInt32TypeMapTyped_0: retUInt32TypeMapTyped_0}
+ case "ServiceUInt64Request":
+ req := request.(ServiceUInt64Request)
+ retUInt64_0 := p.service.UInt64(req.V)
+ response = ServiceUInt64Response{RetUInt64_0: retUInt64_0}
+ case "ServiceUInt64MapRequest":
+ req := request.(ServiceUInt64MapRequest)
+ retUInt64Map_0 := p.service.UInt64Map(req.V)
+ response = ServiceUInt64MapResponse{RetUInt64Map_0: retUInt64Map_0}
+ case "ServiceUInt64SliceRequest":
+ req := request.(ServiceUInt64SliceRequest)
+ retUInt64Slice_0 := p.service.UInt64Slice(req.V)
+ response = ServiceUInt64SliceResponse{RetUInt64Slice_0: retUInt64Slice_0}
+ case "ServiceUInt64TypeRequest":
+ req := request.(ServiceUInt64TypeRequest)
+ retUInt64Type_0 := p.service.UInt64Type(req.V)
+ response = ServiceUInt64TypeResponse{RetUInt64Type_0: retUInt64Type_0}
+ case "ServiceUInt64TypeMapRequest":
+ req := request.(ServiceUInt64TypeMapRequest)
+ retUInt64TypeMap_0 := p.service.UInt64TypeMap(req.V)
+ response = ServiceUInt64TypeMapResponse{RetUInt64TypeMap_0: retUInt64TypeMap_0}
+ case "ServiceUInt64TypeMapTypedRequest":
+ req := request.(ServiceUInt64TypeMapTypedRequest)
+ retUInt64TypeMapTyped_0 := p.service.UInt64TypeMapTyped(req.V)
+ response = ServiceUInt64TypeMapTypedResponse{RetUInt64TypeMapTyped_0: retUInt64TypeMapTyped_0}
+ case "ServiceUIntMapRequest":
+ req := request.(ServiceUIntMapRequest)
+ retUIntMap_0 := p.service.UIntMap(req.V)
+ response = ServiceUIntMapResponse{RetUIntMap_0: retUIntMap_0}
+ case "ServiceUIntSliceRequest":
+ req := request.(ServiceUIntSliceRequest)
+ retUIntSlice_0 := p.service.UIntSlice(req.V)
+ response = ServiceUIntSliceResponse{RetUIntSlice_0: retUIntSlice_0}
+ case "ServiceUIntTypeRequest":
+ req := request.(ServiceUIntTypeRequest)
+ retUIntType_0 := p.service.UIntType(req.V)
+ response = ServiceUIntTypeResponse{RetUIntType_0: retUIntType_0}
+ case "ServiceUIntTypeMapRequest":
+ req := request.(ServiceUIntTypeMapRequest)
+ retUIntTypeMap_0 := p.service.UIntTypeMap(req.V)
+ response = ServiceUIntTypeMapResponse{RetUIntTypeMap_0: retUIntTypeMap_0}
+ case "ServiceUIntTypeMapTypedRequest":
+ req := request.(ServiceUIntTypeMapTypedRequest)
+ retUIntTypeMapTyped_0 := p.service.UIntTypeMapTyped(req.V)
+ response = ServiceUIntTypeMapTypedResponse{RetUIntTypeMapTyped_0: retUIntTypeMapTyped_0}
+ default:
+ fmt.Println("Unkown request type", reflect.TypeOf(request).String())
+ }
+
+ if p.callStatsHandler != nil {
+ p.callStatsHandler(&gotsrpc.CallStats{
+ Func: funcName,
+ Package: "github.com/foomo/gotsrpc/v2/example/basic/service",
+ Service: "Service",
+ Execution: time.Since(start),
+ })
+ }
+
+ return
+}
diff --git a/example/basic/service/gorpcclient_gen.go b/example/basic/service/gorpcclient_gen.go
new file mode 100644
index 0000000..5189d6f
--- /dev/null
+++ b/example/basic/service/gorpcclient_gen.go
@@ -0,0 +1,680 @@
+// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
+
+package service
+
+import (
+ tls "crypto/tls"
+
+ gorpc "github.com/valyala/gorpc"
+)
+
+type ServiceGoRPCClient struct {
+ Client *gorpc.Client
+}
+
+func NewServiceGoRPCClient(addr string, tlsConfig *tls.Config) *ServiceGoRPCClient {
+ client := &ServiceGoRPCClient{}
+ if tlsConfig == nil {
+ client.Client = gorpc.NewTCPClient(addr)
+ } else {
+ client.Client = gorpc.NewTLSClient(addr, tlsConfig)
+ }
+ return client
+}
+
+func (tsc *ServiceGoRPCClient) Start() {
+ tsc.Client.Start()
+}
+
+func (tsc *ServiceGoRPCClient) Stop() {
+ tsc.Client.Stop()
+}
+
+func (tsc *ServiceGoRPCClient) Bool(v bool) (retBool_0 bool, clientErr error) {
+ req := ServiceBoolRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceBoolResponse)
+ return response.RetBool_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) BoolSlice(v []bool) (retBoolSlice_0 []bool, clientErr error) {
+ req := ServiceBoolSliceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceBoolSliceResponse)
+ return response.RetBoolSlice_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float32(v float32) (retFloat32_0 float32, clientErr error) {
+ req := ServiceFloat32Request{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat32Response)
+ return response.RetFloat32_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float32Map(v map[float32]interface{}) (retFloat32Map_0 map[float32]interface{}, clientErr error) {
+ req := ServiceFloat32MapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat32MapResponse)
+ return response.RetFloat32Map_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float32Slice(v []float32) (retFloat32Slice_0 []float32, clientErr error) {
+ req := ServiceFloat32SliceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat32SliceResponse)
+ return response.RetFloat32Slice_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float32Type(v Float32Type) (retFloat32Type_0 Float32Type, clientErr error) {
+ req := ServiceFloat32TypeRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat32TypeResponse)
+ return response.RetFloat32Type_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float32TypeMap(v map[Float32TypeMapKey]Float32TypeMapValue) (retFloat32TypeMap_0 map[Float32TypeMapKey]Float32TypeMapValue, clientErr error) {
+ req := ServiceFloat32TypeMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat32TypeMapResponse)
+ return response.RetFloat32TypeMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float32TypeMapTyped(v Float32TypeMapTyped) (retFloat32TypeMapTyped_0 Float32TypeMapTyped, clientErr error) {
+ req := ServiceFloat32TypeMapTypedRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat32TypeMapTypedResponse)
+ return response.RetFloat32TypeMapTyped_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float64(v float64) (retFloat64_0 float64, clientErr error) {
+ req := ServiceFloat64Request{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat64Response)
+ return response.RetFloat64_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float64Map(v map[float64]interface{}) (retFloat64Map_0 map[float64]interface{}, clientErr error) {
+ req := ServiceFloat64MapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat64MapResponse)
+ return response.RetFloat64Map_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float64Slice(v []float64) (retFloat64Slice_0 []float64, clientErr error) {
+ req := ServiceFloat64SliceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat64SliceResponse)
+ return response.RetFloat64Slice_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float64Type(v Float64Type) (retFloat64Type_0 Float64Type, clientErr error) {
+ req := ServiceFloat64TypeRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat64TypeResponse)
+ return response.RetFloat64Type_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float64TypeMap(v map[Float64TypeMapKey]Float64TypeMapValue) (retFloat64TypeMap_0 map[Float64TypeMapKey]Float64TypeMapValue, clientErr error) {
+ req := ServiceFloat64TypeMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat64TypeMapResponse)
+ return response.RetFloat64TypeMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Float64TypeMapTyped(v Float64TypeMapTyped) (retFloat64TypeMapTyped_0 Float64TypeMapTyped, clientErr error) {
+ req := ServiceFloat64TypeMapTypedRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceFloat64TypeMapTypedResponse)
+ return response.RetFloat64TypeMapTyped_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int(v int) (retInt_0 int, clientErr error) {
+ req := ServiceIntRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceIntResponse)
+ return response.RetInt_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int32(v int32) (retInt32_0 int32, clientErr error) {
+ req := ServiceInt32Request{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt32Response)
+ return response.RetInt32_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int32Map(v map[int32]interface{}) (retInt32Map_0 map[int32]interface{}, clientErr error) {
+ req := ServiceInt32MapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt32MapResponse)
+ return response.RetInt32Map_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int32Slice(v []int32) (retInt32Slice_0 []int32, clientErr error) {
+ req := ServiceInt32SliceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt32SliceResponse)
+ return response.RetInt32Slice_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int32Type(v Int32Type) (retInt32Type_0 Int32Type, clientErr error) {
+ req := ServiceInt32TypeRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt32TypeResponse)
+ return response.RetInt32Type_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int32TypeMap(v map[Int32TypeMapKey]Int32TypeMapValue) (retInt32TypeMap_0 map[Int32TypeMapKey]Int32TypeMapValue, clientErr error) {
+ req := ServiceInt32TypeMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt32TypeMapResponse)
+ return response.RetInt32TypeMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int32TypeMapTyped(v Int32TypeMapTyped) (retInt32TypeMapTyped_0 Int32TypeMapTyped, clientErr error) {
+ req := ServiceInt32TypeMapTypedRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt32TypeMapTypedResponse)
+ return response.RetInt32TypeMapTyped_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int64(v int64) (retInt64_0 int64, clientErr error) {
+ req := ServiceInt64Request{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt64Response)
+ return response.RetInt64_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int64Map(v map[int64]interface{}) (retInt64Map_0 map[int64]interface{}, clientErr error) {
+ req := ServiceInt64MapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt64MapResponse)
+ return response.RetInt64Map_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int64Slice(v []int64) (retInt64Slice_0 []int64, clientErr error) {
+ req := ServiceInt64SliceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt64SliceResponse)
+ return response.RetInt64Slice_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int64Type(v Int64Type) (retInt64Type_0 Int64Type, clientErr error) {
+ req := ServiceInt64TypeRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt64TypeResponse)
+ return response.RetInt64Type_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int64TypeMap(v map[Int64TypeMapKey]Int64TypeMapValue) (retInt64TypeMap_0 map[Int64TypeMapKey]Int64TypeMapValue, clientErr error) {
+ req := ServiceInt64TypeMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt64TypeMapResponse)
+ return response.RetInt64TypeMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Int64TypeMapTyped(v Int64TypeMapTyped) (retInt64TypeMapTyped_0 Int64TypeMapTyped, clientErr error) {
+ req := ServiceInt64TypeMapTypedRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInt64TypeMapTypedResponse)
+ return response.RetInt64TypeMapTyped_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) IntMap(v map[int]interface{}) (retIntMap_0 map[int]interface{}, clientErr error) {
+ req := ServiceIntMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceIntMapResponse)
+ return response.RetIntMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) IntSlice(v []int) (retIntSlice_0 []int, clientErr error) {
+ req := ServiceIntSliceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceIntSliceResponse)
+ return response.RetIntSlice_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) IntType(v IntType) (retIntType_0 IntType, clientErr error) {
+ req := ServiceIntTypeRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceIntTypeResponse)
+ return response.RetIntType_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) IntTypeMap(v map[IntTypeMapKey]IntTypeMapValue) (retIntTypeMap_0 map[IntTypeMapKey]IntTypeMapValue, clientErr error) {
+ req := ServiceIntTypeMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceIntTypeMapResponse)
+ return response.RetIntTypeMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) IntTypeMapTyped(v IntTypeMapTyped) (retIntTypeMapTyped_0 IntTypeMapTyped, clientErr error) {
+ req := ServiceIntTypeMapTypedRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceIntTypeMapTypedResponse)
+ return response.RetIntTypeMapTyped_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Interface(v interface{}) (retInterface_0 interface{}, clientErr error) {
+ req := ServiceInterfaceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInterfaceResponse)
+ return response.RetInterface_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) InterfaceSlice(v []interface{}) (retInterfaceSlice_0 []interface{}, clientErr error) {
+ req := ServiceInterfaceSliceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceInterfaceSliceResponse)
+ return response.RetInterfaceSlice_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) String(v string) (retString_0 string, clientErr error) {
+ req := ServiceStringRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceStringResponse)
+ return response.RetString_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) StringMap(v map[string]interface{}) (retStringMap_0 map[string]interface{}, clientErr error) {
+ req := ServiceStringMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceStringMapResponse)
+ return response.RetStringMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) StringSlice(v []string) (retStringSlice_0 []string, clientErr error) {
+ req := ServiceStringSliceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceStringSliceResponse)
+ return response.RetStringSlice_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) StringType(v StringType) (retStringType_0 StringType, clientErr error) {
+ req := ServiceStringTypeRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceStringTypeResponse)
+ return response.RetStringType_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) StringTypeMap(v map[StringTypeMapKey]StringTypeMapValue) (retStringTypeMap_0 map[StringTypeMapKey]StringTypeMapValue, clientErr error) {
+ req := ServiceStringTypeMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceStringTypeMapResponse)
+ return response.RetStringTypeMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) StringTypeMapTyped(v StringTypeMapTyped) (retStringTypeMapTyped_0 StringTypeMapTyped, clientErr error) {
+ req := ServiceStringTypeMapTypedRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceStringTypeMapTypedResponse)
+ return response.RetStringTypeMapTyped_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) Struct(v Struct) (retStruct_0 Struct, clientErr error) {
+ req := ServiceStructRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceStructResponse)
+ return response.RetStruct_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt(v uint) (retUInt_0 uint, clientErr error) {
+ req := ServiceUIntRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUIntResponse)
+ return response.RetUInt_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt32(v uint32) (retUInt32_0 uint32, clientErr error) {
+ req := ServiceUInt32Request{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt32Response)
+ return response.RetUInt32_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt32Map(v map[uint32]interface{}) (retUInt32Map_0 map[uint32]interface{}, clientErr error) {
+ req := ServiceUInt32MapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt32MapResponse)
+ return response.RetUInt32Map_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt32Slice(v []uint32) (retUInt32Slice_0 []uint32, clientErr error) {
+ req := ServiceUInt32SliceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt32SliceResponse)
+ return response.RetUInt32Slice_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt32Type(v UInt32Type) (retUInt32Type_0 UInt32Type, clientErr error) {
+ req := ServiceUInt32TypeRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt32TypeResponse)
+ return response.RetUInt32Type_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt32TypeMap(v map[UInt32TypeMapKey]UInt32TypeMapValue) (retUInt32TypeMap_0 map[UInt32TypeMapKey]UInt32TypeMapValue, clientErr error) {
+ req := ServiceUInt32TypeMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt32TypeMapResponse)
+ return response.RetUInt32TypeMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt32TypeMapTyped(v UInt32TypeMapTyped) (retUInt32TypeMapTyped_0 UInt32TypeMapTyped, clientErr error) {
+ req := ServiceUInt32TypeMapTypedRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt32TypeMapTypedResponse)
+ return response.RetUInt32TypeMapTyped_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt64(v uint64) (retUInt64_0 uint64, clientErr error) {
+ req := ServiceUInt64Request{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt64Response)
+ return response.RetUInt64_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt64Map(v map[uint64]interface{}) (retUInt64Map_0 map[uint64]interface{}, clientErr error) {
+ req := ServiceUInt64MapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt64MapResponse)
+ return response.RetUInt64Map_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt64Slice(v []uint64) (retUInt64Slice_0 []uint64, clientErr error) {
+ req := ServiceUInt64SliceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt64SliceResponse)
+ return response.RetUInt64Slice_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt64Type(v UInt64Type) (retUInt64Type_0 UInt64Type, clientErr error) {
+ req := ServiceUInt64TypeRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt64TypeResponse)
+ return response.RetUInt64Type_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt64TypeMap(v map[UInt64TypeMapKey]UInt64TypeMapValue) (retUInt64TypeMap_0 map[UInt64TypeMapKey]UInt64TypeMapValue, clientErr error) {
+ req := ServiceUInt64TypeMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt64TypeMapResponse)
+ return response.RetUInt64TypeMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UInt64TypeMapTyped(v UInt64TypeMapTyped) (retUInt64TypeMapTyped_0 UInt64TypeMapTyped, clientErr error) {
+ req := ServiceUInt64TypeMapTypedRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUInt64TypeMapTypedResponse)
+ return response.RetUInt64TypeMapTyped_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UIntMap(v map[uint]interface{}) (retUIntMap_0 map[uint]interface{}, clientErr error) {
+ req := ServiceUIntMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUIntMapResponse)
+ return response.RetUIntMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UIntSlice(v []uint) (retUIntSlice_0 []uint, clientErr error) {
+ req := ServiceUIntSliceRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUIntSliceResponse)
+ return response.RetUIntSlice_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UIntType(v UIntType) (retUIntType_0 UIntType, clientErr error) {
+ req := ServiceUIntTypeRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUIntTypeResponse)
+ return response.RetUIntType_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UIntTypeMap(v map[UIntTypeMapKey]UIntTypeMapValue) (retUIntTypeMap_0 map[UIntTypeMapKey]UIntTypeMapValue, clientErr error) {
+ req := ServiceUIntTypeMapRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUIntTypeMapResponse)
+ return response.RetUIntTypeMap_0, nil
+}
+
+func (tsc *ServiceGoRPCClient) UIntTypeMapTyped(v UIntTypeMapTyped) (retUIntTypeMapTyped_0 UIntTypeMapTyped, clientErr error) {
+ req := ServiceUIntTypeMapTypedRequest{V: v}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceUIntTypeMapTypedResponse)
+ return response.RetUIntTypeMapTyped_0, nil
+}
diff --git a/example/basic/service/gotsrpc_gen.go b/example/basic/service/gotsrpc_gen.go
new file mode 100644
index 0000000..bcc54a4
--- /dev/null
+++ b/example/basic/service/gotsrpc_gen.go
@@ -0,0 +1,1121 @@
+// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
+
+package service
+
+import (
+ io "io"
+ ioutil "io/ioutil"
+ http "net/http"
+ time "time"
+
+ gotsrpc "github.com/foomo/gotsrpc/v2"
+)
+
+const (
+ ServiceGoTSRPCProxyBool = "Bool"
+ ServiceGoTSRPCProxyBoolSlice = "BoolSlice"
+ ServiceGoTSRPCProxyFloat32 = "Float32"
+ ServiceGoTSRPCProxyFloat32Map = "Float32Map"
+ ServiceGoTSRPCProxyFloat32Slice = "Float32Slice"
+ ServiceGoTSRPCProxyFloat32Type = "Float32Type"
+ ServiceGoTSRPCProxyFloat32TypeMap = "Float32TypeMap"
+ ServiceGoTSRPCProxyFloat32TypeMapTyped = "Float32TypeMapTyped"
+ ServiceGoTSRPCProxyFloat64 = "Float64"
+ ServiceGoTSRPCProxyFloat64Map = "Float64Map"
+ ServiceGoTSRPCProxyFloat64Slice = "Float64Slice"
+ ServiceGoTSRPCProxyFloat64Type = "Float64Type"
+ ServiceGoTSRPCProxyFloat64TypeMap = "Float64TypeMap"
+ ServiceGoTSRPCProxyFloat64TypeMapTyped = "Float64TypeMapTyped"
+ ServiceGoTSRPCProxyInt = "Int"
+ ServiceGoTSRPCProxyInt32 = "Int32"
+ ServiceGoTSRPCProxyInt32Map = "Int32Map"
+ ServiceGoTSRPCProxyInt32Slice = "Int32Slice"
+ ServiceGoTSRPCProxyInt32Type = "Int32Type"
+ ServiceGoTSRPCProxyInt32TypeMap = "Int32TypeMap"
+ ServiceGoTSRPCProxyInt32TypeMapTyped = "Int32TypeMapTyped"
+ ServiceGoTSRPCProxyInt64 = "Int64"
+ ServiceGoTSRPCProxyInt64Map = "Int64Map"
+ ServiceGoTSRPCProxyInt64Slice = "Int64Slice"
+ ServiceGoTSRPCProxyInt64Type = "Int64Type"
+ ServiceGoTSRPCProxyInt64TypeMap = "Int64TypeMap"
+ ServiceGoTSRPCProxyInt64TypeMapTyped = "Int64TypeMapTyped"
+ ServiceGoTSRPCProxyIntMap = "IntMap"
+ ServiceGoTSRPCProxyIntSlice = "IntSlice"
+ ServiceGoTSRPCProxyIntType = "IntType"
+ ServiceGoTSRPCProxyIntTypeMap = "IntTypeMap"
+ ServiceGoTSRPCProxyIntTypeMapTyped = "IntTypeMapTyped"
+ ServiceGoTSRPCProxyInterface = "Interface"
+ ServiceGoTSRPCProxyInterfaceSlice = "InterfaceSlice"
+ ServiceGoTSRPCProxyString = "String"
+ ServiceGoTSRPCProxyStringMap = "StringMap"
+ ServiceGoTSRPCProxyStringSlice = "StringSlice"
+ ServiceGoTSRPCProxyStringType = "StringType"
+ ServiceGoTSRPCProxyStringTypeMap = "StringTypeMap"
+ ServiceGoTSRPCProxyStringTypeMapTyped = "StringTypeMapTyped"
+ ServiceGoTSRPCProxyStruct = "Struct"
+ ServiceGoTSRPCProxyUInt = "UInt"
+ ServiceGoTSRPCProxyUInt32 = "UInt32"
+ ServiceGoTSRPCProxyUInt32Map = "UInt32Map"
+ ServiceGoTSRPCProxyUInt32Slice = "UInt32Slice"
+ ServiceGoTSRPCProxyUInt32Type = "UInt32Type"
+ ServiceGoTSRPCProxyUInt32TypeMap = "UInt32TypeMap"
+ ServiceGoTSRPCProxyUInt32TypeMapTyped = "UInt32TypeMapTyped"
+ ServiceGoTSRPCProxyUInt64 = "UInt64"
+ ServiceGoTSRPCProxyUInt64Map = "UInt64Map"
+ ServiceGoTSRPCProxyUInt64Slice = "UInt64Slice"
+ ServiceGoTSRPCProxyUInt64Type = "UInt64Type"
+ ServiceGoTSRPCProxyUInt64TypeMap = "UInt64TypeMap"
+ ServiceGoTSRPCProxyUInt64TypeMapTyped = "UInt64TypeMapTyped"
+ ServiceGoTSRPCProxyUIntMap = "UIntMap"
+ ServiceGoTSRPCProxyUIntSlice = "UIntSlice"
+ ServiceGoTSRPCProxyUIntType = "UIntType"
+ ServiceGoTSRPCProxyUIntTypeMap = "UIntTypeMap"
+ ServiceGoTSRPCProxyUIntTypeMapTyped = "UIntTypeMapTyped"
+)
+
+type ServiceGoTSRPCProxy struct {
+ EndPoint string
+ service Service
+}
+
+func NewDefaultServiceGoTSRPCProxy(service Service) *ServiceGoTSRPCProxy {
+ return &ServiceGoTSRPCProxy{
+ EndPoint: "/service",
+ service: service,
+ }
+}
+
+func NewServiceGoTSRPCProxy(service Service, endpoint string) *ServiceGoTSRPCProxy {
+ return &ServiceGoTSRPCProxy{
+ EndPoint: endpoint,
+ service: service,
+ }
+}
+
+// ServeHTTP exposes your service
+func (p *ServiceGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ if r.Method != http.MethodPost {
+ if r.Method == http.MethodOptions {
+ return
+ }
+ gotsrpc.ErrorMethodNotAllowed(w)
+ return
+ }
+ defer io.Copy(ioutil.Discard, r.Body) // Drain Request Body
+
+ funcName := gotsrpc.GetCalledFunc(r, p.EndPoint)
+ callStats := gotsrpc.GetStatsForRequest(r)
+ if callStats != nil {
+ callStats.Func = funcName
+ callStats.Package = "github.com/foomo/gotsrpc/v2/example/basic/service"
+ callStats.Service = "Service"
+ }
+ switch funcName {
+ case ServiceGoTSRPCProxyBool:
+ var (
+ arg_v bool
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ boolRet := p.service.Bool(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{boolRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyBoolSlice:
+ var (
+ arg_v []bool
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ boolSliceRet := p.service.BoolSlice(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{boolSliceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat32:
+ var (
+ arg_v float32
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float32Ret := p.service.Float32(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float32Ret}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat32Map:
+ var (
+ arg_v map[float32]interface{}
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float32MapRet := p.service.Float32Map(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float32MapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat32Slice:
+ var (
+ arg_v []float32
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float32SliceRet := p.service.Float32Slice(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float32SliceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat32Type:
+ var (
+ arg_v Float32Type
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float32TypeRet := p.service.Float32Type(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float32TypeRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat32TypeMap:
+ var (
+ arg_v map[Float32TypeMapKey]Float32TypeMapValue
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float32TypeMapRet := p.service.Float32TypeMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float32TypeMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat32TypeMapTyped:
+ var (
+ arg_v Float32TypeMapTyped
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float32TypeMapTypedRet := p.service.Float32TypeMapTyped(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float32TypeMapTypedRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat64:
+ var (
+ arg_v float64
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float64Ret := p.service.Float64(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float64Ret}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat64Map:
+ var (
+ arg_v map[float64]interface{}
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float64MapRet := p.service.Float64Map(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float64MapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat64Slice:
+ var (
+ arg_v []float64
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float64SliceRet := p.service.Float64Slice(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float64SliceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat64Type:
+ var (
+ arg_v Float64Type
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float64TypeRet := p.service.Float64Type(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float64TypeRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat64TypeMap:
+ var (
+ arg_v map[Float64TypeMapKey]Float64TypeMapValue
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float64TypeMapRet := p.service.Float64TypeMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float64TypeMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyFloat64TypeMapTyped:
+ var (
+ arg_v Float64TypeMapTyped
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ float64TypeMapTypedRet := p.service.Float64TypeMapTyped(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{float64TypeMapTypedRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt:
+ var (
+ arg_v int
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ intRet := p.service.Int(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{intRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt32:
+ var (
+ arg_v int32
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int32Ret := p.service.Int32(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int32Ret}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt32Map:
+ var (
+ arg_v map[int32]interface{}
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int32MapRet := p.service.Int32Map(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int32MapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt32Slice:
+ var (
+ arg_v []int32
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int32SliceRet := p.service.Int32Slice(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int32SliceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt32Type:
+ var (
+ arg_v Int32Type
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int32TypeRet := p.service.Int32Type(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int32TypeRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt32TypeMap:
+ var (
+ arg_v map[Int32TypeMapKey]Int32TypeMapValue
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int32TypeMapRet := p.service.Int32TypeMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int32TypeMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt32TypeMapTyped:
+ var (
+ arg_v Int32TypeMapTyped
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int32TypeMapTypedRet := p.service.Int32TypeMapTyped(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int32TypeMapTypedRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt64:
+ var (
+ arg_v int64
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int64Ret := p.service.Int64(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int64Ret}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt64Map:
+ var (
+ arg_v map[int64]interface{}
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int64MapRet := p.service.Int64Map(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int64MapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt64Slice:
+ var (
+ arg_v []int64
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int64SliceRet := p.service.Int64Slice(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int64SliceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt64Type:
+ var (
+ arg_v Int64Type
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int64TypeRet := p.service.Int64Type(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int64TypeRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt64TypeMap:
+ var (
+ arg_v map[Int64TypeMapKey]Int64TypeMapValue
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int64TypeMapRet := p.service.Int64TypeMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int64TypeMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInt64TypeMapTyped:
+ var (
+ arg_v Int64TypeMapTyped
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ int64TypeMapTypedRet := p.service.Int64TypeMapTyped(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{int64TypeMapTypedRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyIntMap:
+ var (
+ arg_v map[int]interface{}
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ intMapRet := p.service.IntMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{intMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyIntSlice:
+ var (
+ arg_v []int
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ intSliceRet := p.service.IntSlice(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{intSliceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyIntType:
+ var (
+ arg_v IntType
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ intTypeRet := p.service.IntType(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{intTypeRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyIntTypeMap:
+ var (
+ arg_v map[IntTypeMapKey]IntTypeMapValue
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ intTypeMapRet := p.service.IntTypeMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{intTypeMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyIntTypeMapTyped:
+ var (
+ arg_v IntTypeMapTyped
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ intTypeMapTypedRet := p.service.IntTypeMapTyped(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{intTypeMapTypedRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInterface:
+ var (
+ arg_v interface{}
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ interfaceRet := p.service.Interface(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{interfaceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyInterfaceSlice:
+ var (
+ arg_v []interface{}
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ interfaceSliceRet := p.service.InterfaceSlice(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{interfaceSliceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyString:
+ var (
+ arg_v string
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ stringRet := p.service.String(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{stringRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyStringMap:
+ var (
+ arg_v map[string]interface{}
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ stringMapRet := p.service.StringMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{stringMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyStringSlice:
+ var (
+ arg_v []string
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ stringSliceRet := p.service.StringSlice(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{stringSliceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyStringType:
+ var (
+ arg_v StringType
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ stringTypeRet := p.service.StringType(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{stringTypeRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyStringTypeMap:
+ var (
+ arg_v map[StringTypeMapKey]StringTypeMapValue
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ stringTypeMapRet := p.service.StringTypeMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{stringTypeMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyStringTypeMapTyped:
+ var (
+ arg_v StringTypeMapTyped
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ stringTypeMapTypedRet := p.service.StringTypeMapTyped(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{stringTypeMapTypedRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyStruct:
+ var (
+ arg_v Struct
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ structRet := p.service.Struct(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{structRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt:
+ var (
+ arg_v uint
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uIntRet := p.service.UInt(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uIntRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt32:
+ var (
+ arg_v uint32
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt32Ret := p.service.UInt32(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt32Ret}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt32Map:
+ var (
+ arg_v map[uint32]interface{}
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt32MapRet := p.service.UInt32Map(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt32MapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt32Slice:
+ var (
+ arg_v []uint32
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt32SliceRet := p.service.UInt32Slice(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt32SliceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt32Type:
+ var (
+ arg_v UInt32Type
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt32TypeRet := p.service.UInt32Type(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt32TypeRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt32TypeMap:
+ var (
+ arg_v map[UInt32TypeMapKey]UInt32TypeMapValue
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt32TypeMapRet := p.service.UInt32TypeMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt32TypeMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt32TypeMapTyped:
+ var (
+ arg_v UInt32TypeMapTyped
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt32TypeMapTypedRet := p.service.UInt32TypeMapTyped(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt32TypeMapTypedRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt64:
+ var (
+ arg_v uint64
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt64Ret := p.service.UInt64(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt64Ret}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt64Map:
+ var (
+ arg_v map[uint64]interface{}
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt64MapRet := p.service.UInt64Map(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt64MapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt64Slice:
+ var (
+ arg_v []uint64
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt64SliceRet := p.service.UInt64Slice(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt64SliceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt64Type:
+ var (
+ arg_v UInt64Type
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt64TypeRet := p.service.UInt64Type(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt64TypeRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt64TypeMap:
+ var (
+ arg_v map[UInt64TypeMapKey]UInt64TypeMapValue
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt64TypeMapRet := p.service.UInt64TypeMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt64TypeMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUInt64TypeMapTyped:
+ var (
+ arg_v UInt64TypeMapTyped
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uInt64TypeMapTypedRet := p.service.UInt64TypeMapTyped(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uInt64TypeMapTypedRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUIntMap:
+ var (
+ arg_v map[uint]interface{}
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uIntMapRet := p.service.UIntMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uIntMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUIntSlice:
+ var (
+ arg_v []uint
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uIntSliceRet := p.service.UIntSlice(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uIntSliceRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUIntType:
+ var (
+ arg_v UIntType
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uIntTypeRet := p.service.UIntType(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uIntTypeRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUIntTypeMap:
+ var (
+ arg_v map[UIntTypeMapKey]UIntTypeMapValue
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uIntTypeMapRet := p.service.UIntTypeMap(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uIntTypeMapRet}, callStats, r, w)
+ return
+ case ServiceGoTSRPCProxyUIntTypeMapTyped:
+ var (
+ arg_v UIntTypeMapTyped
+ )
+ args := []interface{}{&arg_v}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ uIntTypeMapTypedRet := p.service.UIntTypeMapTyped(arg_v)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ gotsrpc.Reply([]interface{}{uIntTypeMapTypedRet}, callStats, r, w)
+ return
+ default:
+ gotsrpc.ClearStats(r)
+ http.Error(w, "404 - not found "+r.URL.Path, http.StatusNotFound)
+ }
+}
diff --git a/example/basic/service/gotsrpcclient_gen.go b/example/basic/service/gotsrpcclient_gen.go
new file mode 100644
index 0000000..334238f
--- /dev/null
+++ b/example/basic/service/gotsrpcclient_gen.go
@@ -0,0 +1,684 @@
+// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
+
+package service
+
+import (
+ go_context "context"
+ go_net_http "net/http"
+
+ gotsrpc "github.com/foomo/gotsrpc/v2"
+ pkg_errors "github.com/pkg/errors"
+)
+
+type ServiceGoTSRPCClient interface {
+ Bool(ctx go_context.Context, v bool) (retBool_0 bool, clientErr error)
+ BoolSlice(ctx go_context.Context, v []bool) (retBoolSlice_0 []bool, clientErr error)
+ Float32(ctx go_context.Context, v float32) (retFloat32_0 float32, clientErr error)
+ Float32Map(ctx go_context.Context, v map[float32]interface{}) (retFloat32Map_0 map[float32]interface{}, clientErr error)
+ Float32Slice(ctx go_context.Context, v []float32) (retFloat32Slice_0 []float32, clientErr error)
+ Float32Type(ctx go_context.Context, v Float32Type) (retFloat32Type_0 Float32Type, clientErr error)
+ Float32TypeMap(ctx go_context.Context, v map[Float32TypeMapKey]Float32TypeMapValue) (retFloat32TypeMap_0 map[Float32TypeMapKey]Float32TypeMapValue, clientErr error)
+ Float32TypeMapTyped(ctx go_context.Context, v Float32TypeMapTyped) (retFloat32TypeMapTyped_0 Float32TypeMapTyped, clientErr error)
+ Float64(ctx go_context.Context, v float64) (retFloat64_0 float64, clientErr error)
+ Float64Map(ctx go_context.Context, v map[float64]interface{}) (retFloat64Map_0 map[float64]interface{}, clientErr error)
+ Float64Slice(ctx go_context.Context, v []float64) (retFloat64Slice_0 []float64, clientErr error)
+ Float64Type(ctx go_context.Context, v Float64Type) (retFloat64Type_0 Float64Type, clientErr error)
+ Float64TypeMap(ctx go_context.Context, v map[Float64TypeMapKey]Float64TypeMapValue) (retFloat64TypeMap_0 map[Float64TypeMapKey]Float64TypeMapValue, clientErr error)
+ Float64TypeMapTyped(ctx go_context.Context, v Float64TypeMapTyped) (retFloat64TypeMapTyped_0 Float64TypeMapTyped, clientErr error)
+ Int(ctx go_context.Context, v int) (retInt_0 int, clientErr error)
+ Int32(ctx go_context.Context, v int32) (retInt32_0 int32, clientErr error)
+ Int32Map(ctx go_context.Context, v map[int32]interface{}) (retInt32Map_0 map[int32]interface{}, clientErr error)
+ Int32Slice(ctx go_context.Context, v []int32) (retInt32Slice_0 []int32, clientErr error)
+ Int32Type(ctx go_context.Context, v Int32Type) (retInt32Type_0 Int32Type, clientErr error)
+ Int32TypeMap(ctx go_context.Context, v map[Int32TypeMapKey]Int32TypeMapValue) (retInt32TypeMap_0 map[Int32TypeMapKey]Int32TypeMapValue, clientErr error)
+ Int32TypeMapTyped(ctx go_context.Context, v Int32TypeMapTyped) (retInt32TypeMapTyped_0 Int32TypeMapTyped, clientErr error)
+ Int64(ctx go_context.Context, v int64) (retInt64_0 int64, clientErr error)
+ Int64Map(ctx go_context.Context, v map[int64]interface{}) (retInt64Map_0 map[int64]interface{}, clientErr error)
+ Int64Slice(ctx go_context.Context, v []int64) (retInt64Slice_0 []int64, clientErr error)
+ Int64Type(ctx go_context.Context, v Int64Type) (retInt64Type_0 Int64Type, clientErr error)
+ Int64TypeMap(ctx go_context.Context, v map[Int64TypeMapKey]Int64TypeMapValue) (retInt64TypeMap_0 map[Int64TypeMapKey]Int64TypeMapValue, clientErr error)
+ Int64TypeMapTyped(ctx go_context.Context, v Int64TypeMapTyped) (retInt64TypeMapTyped_0 Int64TypeMapTyped, clientErr error)
+ IntMap(ctx go_context.Context, v map[int]interface{}) (retIntMap_0 map[int]interface{}, clientErr error)
+ IntSlice(ctx go_context.Context, v []int) (retIntSlice_0 []int, clientErr error)
+ IntType(ctx go_context.Context, v IntType) (retIntType_0 IntType, clientErr error)
+ IntTypeMap(ctx go_context.Context, v map[IntTypeMapKey]IntTypeMapValue) (retIntTypeMap_0 map[IntTypeMapKey]IntTypeMapValue, clientErr error)
+ IntTypeMapTyped(ctx go_context.Context, v IntTypeMapTyped) (retIntTypeMapTyped_0 IntTypeMapTyped, clientErr error)
+ Interface(ctx go_context.Context, v interface{}) (retInterface_0 interface{}, clientErr error)
+ InterfaceSlice(ctx go_context.Context, v []interface{}) (retInterfaceSlice_0 []interface{}, clientErr error)
+ String(ctx go_context.Context, v string) (retString_0 string, clientErr error)
+ StringMap(ctx go_context.Context, v map[string]interface{}) (retStringMap_0 map[string]interface{}, clientErr error)
+ StringSlice(ctx go_context.Context, v []string) (retStringSlice_0 []string, clientErr error)
+ StringType(ctx go_context.Context, v StringType) (retStringType_0 StringType, clientErr error)
+ StringTypeMap(ctx go_context.Context, v map[StringTypeMapKey]StringTypeMapValue) (retStringTypeMap_0 map[StringTypeMapKey]StringTypeMapValue, clientErr error)
+ StringTypeMapTyped(ctx go_context.Context, v StringTypeMapTyped) (retStringTypeMapTyped_0 StringTypeMapTyped, clientErr error)
+ Struct(ctx go_context.Context, v Struct) (retStruct_0 Struct, clientErr error)
+ UInt(ctx go_context.Context, v uint) (retUInt_0 uint, clientErr error)
+ UInt32(ctx go_context.Context, v uint32) (retUInt32_0 uint32, clientErr error)
+ UInt32Map(ctx go_context.Context, v map[uint32]interface{}) (retUInt32Map_0 map[uint32]interface{}, clientErr error)
+ UInt32Slice(ctx go_context.Context, v []uint32) (retUInt32Slice_0 []uint32, clientErr error)
+ UInt32Type(ctx go_context.Context, v UInt32Type) (retUInt32Type_0 UInt32Type, clientErr error)
+ UInt32TypeMap(ctx go_context.Context, v map[UInt32TypeMapKey]UInt32TypeMapValue) (retUInt32TypeMap_0 map[UInt32TypeMapKey]UInt32TypeMapValue, clientErr error)
+ UInt32TypeMapTyped(ctx go_context.Context, v UInt32TypeMapTyped) (retUInt32TypeMapTyped_0 UInt32TypeMapTyped, clientErr error)
+ UInt64(ctx go_context.Context, v uint64) (retUInt64_0 uint64, clientErr error)
+ UInt64Map(ctx go_context.Context, v map[uint64]interface{}) (retUInt64Map_0 map[uint64]interface{}, clientErr error)
+ UInt64Slice(ctx go_context.Context, v []uint64) (retUInt64Slice_0 []uint64, clientErr error)
+ UInt64Type(ctx go_context.Context, v UInt64Type) (retUInt64Type_0 UInt64Type, clientErr error)
+ UInt64TypeMap(ctx go_context.Context, v map[UInt64TypeMapKey]UInt64TypeMapValue) (retUInt64TypeMap_0 map[UInt64TypeMapKey]UInt64TypeMapValue, clientErr error)
+ UInt64TypeMapTyped(ctx go_context.Context, v UInt64TypeMapTyped) (retUInt64TypeMapTyped_0 UInt64TypeMapTyped, clientErr error)
+ UIntMap(ctx go_context.Context, v map[uint]interface{}) (retUIntMap_0 map[uint]interface{}, clientErr error)
+ UIntSlice(ctx go_context.Context, v []uint) (retUIntSlice_0 []uint, clientErr error)
+ UIntType(ctx go_context.Context, v UIntType) (retUIntType_0 UIntType, clientErr error)
+ UIntTypeMap(ctx go_context.Context, v map[UIntTypeMapKey]UIntTypeMapValue) (retUIntTypeMap_0 map[UIntTypeMapKey]UIntTypeMapValue, clientErr error)
+ UIntTypeMapTyped(ctx go_context.Context, v UIntTypeMapTyped) (retUIntTypeMapTyped_0 UIntTypeMapTyped, clientErr error)
+}
+
+type HTTPServiceGoTSRPCClient struct {
+ URL string
+ EndPoint string
+ Client gotsrpc.Client
+}
+
+func NewDefaultServiceGoTSRPCClient(url string) *HTTPServiceGoTSRPCClient {
+ return NewServiceGoTSRPCClient(url, "/service")
+}
+
+func NewServiceGoTSRPCClient(url string, endpoint string) *HTTPServiceGoTSRPCClient {
+ return NewServiceGoTSRPCClientWithClient(url, endpoint, nil)
+}
+
+func NewServiceGoTSRPCClientWithClient(url string, endpoint string, client *go_net_http.Client) *HTTPServiceGoTSRPCClient {
+ return &HTTPServiceGoTSRPCClient{
+ URL: url,
+ EndPoint: endpoint,
+ Client: gotsrpc.NewClientWithHttpClient(client),
+ }
+}
+func (tsc *HTTPServiceGoTSRPCClient) Bool(ctx go_context.Context, v bool) (retBool_0 bool, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retBool_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Bool", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Bool")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) BoolSlice(ctx go_context.Context, v []bool) (retBoolSlice_0 []bool, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retBoolSlice_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "BoolSlice", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy BoolSlice")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float32(ctx go_context.Context, v float32) (retFloat32_0 float32, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat32_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float32Map(ctx go_context.Context, v map[float32]interface{}) (retFloat32Map_0 map[float32]interface{}, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat32Map_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32Map", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32Map")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float32Slice(ctx go_context.Context, v []float32) (retFloat32Slice_0 []float32, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat32Slice_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32Slice", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32Slice")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float32Type(ctx go_context.Context, v Float32Type) (retFloat32Type_0 Float32Type, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat32Type_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32Type", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32Type")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float32TypeMap(ctx go_context.Context, v map[Float32TypeMapKey]Float32TypeMapValue) (retFloat32TypeMap_0 map[Float32TypeMapKey]Float32TypeMapValue, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat32TypeMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32TypeMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32TypeMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float32TypeMapTyped(ctx go_context.Context, v Float32TypeMapTyped) (retFloat32TypeMapTyped_0 Float32TypeMapTyped, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat32TypeMapTyped_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float32TypeMapTyped", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float32TypeMapTyped")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float64(ctx go_context.Context, v float64) (retFloat64_0 float64, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat64_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float64Map(ctx go_context.Context, v map[float64]interface{}) (retFloat64Map_0 map[float64]interface{}, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat64Map_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64Map", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64Map")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float64Slice(ctx go_context.Context, v []float64) (retFloat64Slice_0 []float64, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat64Slice_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64Slice", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64Slice")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float64Type(ctx go_context.Context, v Float64Type) (retFloat64Type_0 Float64Type, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat64Type_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64Type", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64Type")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float64TypeMap(ctx go_context.Context, v map[Float64TypeMapKey]Float64TypeMapValue) (retFloat64TypeMap_0 map[Float64TypeMapKey]Float64TypeMapValue, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat64TypeMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64TypeMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64TypeMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Float64TypeMapTyped(ctx go_context.Context, v Float64TypeMapTyped) (retFloat64TypeMapTyped_0 Float64TypeMapTyped, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retFloat64TypeMapTyped_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Float64TypeMapTyped", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Float64TypeMapTyped")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int(ctx go_context.Context, v int) (retInt_0 int, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int32(ctx go_context.Context, v int32) (retInt32_0 int32, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt32_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int32Map(ctx go_context.Context, v map[int32]interface{}) (retInt32Map_0 map[int32]interface{}, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt32Map_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32Map", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32Map")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int32Slice(ctx go_context.Context, v []int32) (retInt32Slice_0 []int32, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt32Slice_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32Slice", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32Slice")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int32Type(ctx go_context.Context, v Int32Type) (retInt32Type_0 Int32Type, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt32Type_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32Type", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32Type")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int32TypeMap(ctx go_context.Context, v map[Int32TypeMapKey]Int32TypeMapValue) (retInt32TypeMap_0 map[Int32TypeMapKey]Int32TypeMapValue, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt32TypeMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32TypeMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32TypeMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int32TypeMapTyped(ctx go_context.Context, v Int32TypeMapTyped) (retInt32TypeMapTyped_0 Int32TypeMapTyped, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt32TypeMapTyped_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int32TypeMapTyped", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int32TypeMapTyped")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int64(ctx go_context.Context, v int64) (retInt64_0 int64, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt64_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int64Map(ctx go_context.Context, v map[int64]interface{}) (retInt64Map_0 map[int64]interface{}, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt64Map_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64Map", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64Map")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int64Slice(ctx go_context.Context, v []int64) (retInt64Slice_0 []int64, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt64Slice_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64Slice", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64Slice")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int64Type(ctx go_context.Context, v Int64Type) (retInt64Type_0 Int64Type, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt64Type_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64Type", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64Type")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int64TypeMap(ctx go_context.Context, v map[Int64TypeMapKey]Int64TypeMapValue) (retInt64TypeMap_0 map[Int64TypeMapKey]Int64TypeMapValue, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt64TypeMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64TypeMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64TypeMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Int64TypeMapTyped(ctx go_context.Context, v Int64TypeMapTyped) (retInt64TypeMapTyped_0 Int64TypeMapTyped, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInt64TypeMapTyped_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Int64TypeMapTyped", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Int64TypeMapTyped")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) IntMap(ctx go_context.Context, v map[int]interface{}) (retIntMap_0 map[int]interface{}, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retIntMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "IntMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy IntMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) IntSlice(ctx go_context.Context, v []int) (retIntSlice_0 []int, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retIntSlice_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "IntSlice", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy IntSlice")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) IntType(ctx go_context.Context, v IntType) (retIntType_0 IntType, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retIntType_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "IntType", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy IntType")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) IntTypeMap(ctx go_context.Context, v map[IntTypeMapKey]IntTypeMapValue) (retIntTypeMap_0 map[IntTypeMapKey]IntTypeMapValue, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retIntTypeMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "IntTypeMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy IntTypeMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) IntTypeMapTyped(ctx go_context.Context, v IntTypeMapTyped) (retIntTypeMapTyped_0 IntTypeMapTyped, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retIntTypeMapTyped_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "IntTypeMapTyped", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy IntTypeMapTyped")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Interface(ctx go_context.Context, v interface{}) (retInterface_0 interface{}, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInterface_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Interface", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Interface")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) InterfaceSlice(ctx go_context.Context, v []interface{}) (retInterfaceSlice_0 []interface{}, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retInterfaceSlice_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "InterfaceSlice", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy InterfaceSlice")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) String(ctx go_context.Context, v string) (retString_0 string, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retString_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "String", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy String")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) StringMap(ctx go_context.Context, v map[string]interface{}) (retStringMap_0 map[string]interface{}, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retStringMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "StringMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy StringMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) StringSlice(ctx go_context.Context, v []string) (retStringSlice_0 []string, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retStringSlice_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "StringSlice", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy StringSlice")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) StringType(ctx go_context.Context, v StringType) (retStringType_0 StringType, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retStringType_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "StringType", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy StringType")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) StringTypeMap(ctx go_context.Context, v map[StringTypeMapKey]StringTypeMapValue) (retStringTypeMap_0 map[StringTypeMapKey]StringTypeMapValue, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retStringTypeMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "StringTypeMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy StringTypeMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) StringTypeMapTyped(ctx go_context.Context, v StringTypeMapTyped) (retStringTypeMapTyped_0 StringTypeMapTyped, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retStringTypeMapTyped_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "StringTypeMapTyped", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy StringTypeMapTyped")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) Struct(ctx go_context.Context, v Struct) (retStruct_0 Struct, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retStruct_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "Struct", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy Struct")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt(ctx go_context.Context, v uint) (retUInt_0 uint, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt32(ctx go_context.Context, v uint32) (retUInt32_0 uint32, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt32_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt32Map(ctx go_context.Context, v map[uint32]interface{}) (retUInt32Map_0 map[uint32]interface{}, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt32Map_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32Map", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32Map")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt32Slice(ctx go_context.Context, v []uint32) (retUInt32Slice_0 []uint32, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt32Slice_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32Slice", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32Slice")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt32Type(ctx go_context.Context, v UInt32Type) (retUInt32Type_0 UInt32Type, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt32Type_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32Type", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32Type")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt32TypeMap(ctx go_context.Context, v map[UInt32TypeMapKey]UInt32TypeMapValue) (retUInt32TypeMap_0 map[UInt32TypeMapKey]UInt32TypeMapValue, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt32TypeMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32TypeMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32TypeMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt32TypeMapTyped(ctx go_context.Context, v UInt32TypeMapTyped) (retUInt32TypeMapTyped_0 UInt32TypeMapTyped, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt32TypeMapTyped_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt32TypeMapTyped", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt32TypeMapTyped")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt64(ctx go_context.Context, v uint64) (retUInt64_0 uint64, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt64_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt64Map(ctx go_context.Context, v map[uint64]interface{}) (retUInt64Map_0 map[uint64]interface{}, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt64Map_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64Map", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64Map")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt64Slice(ctx go_context.Context, v []uint64) (retUInt64Slice_0 []uint64, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt64Slice_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64Slice", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64Slice")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt64Type(ctx go_context.Context, v UInt64Type) (retUInt64Type_0 UInt64Type, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt64Type_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64Type", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64Type")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt64TypeMap(ctx go_context.Context, v map[UInt64TypeMapKey]UInt64TypeMapValue) (retUInt64TypeMap_0 map[UInt64TypeMapKey]UInt64TypeMapValue, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt64TypeMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64TypeMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64TypeMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UInt64TypeMapTyped(ctx go_context.Context, v UInt64TypeMapTyped) (retUInt64TypeMapTyped_0 UInt64TypeMapTyped, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUInt64TypeMapTyped_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UInt64TypeMapTyped", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UInt64TypeMapTyped")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UIntMap(ctx go_context.Context, v map[uint]interface{}) (retUIntMap_0 map[uint]interface{}, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUIntMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UIntMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UIntMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UIntSlice(ctx go_context.Context, v []uint) (retUIntSlice_0 []uint, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUIntSlice_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UIntSlice", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UIntSlice")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UIntType(ctx go_context.Context, v UIntType) (retUIntType_0 UIntType, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUIntType_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UIntType", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UIntType")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UIntTypeMap(ctx go_context.Context, v map[UIntTypeMapKey]UIntTypeMapValue) (retUIntTypeMap_0 map[UIntTypeMapKey]UIntTypeMapValue, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUIntTypeMap_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UIntTypeMap", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UIntTypeMap")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) UIntTypeMapTyped(ctx go_context.Context, v UIntTypeMapTyped) (retUIntTypeMapTyped_0 UIntTypeMapTyped, clientErr error) {
+ args := []interface{}{v}
+ reply := []interface{}{&retUIntTypeMapTyped_0}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "UIntTypeMapTyped", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy UIntTypeMapTyped")
+ }
+ return
+}
diff --git a/example/basic/service/handler.go b/example/basic/service/handler.go
new file mode 100644
index 0000000..00a541d
--- /dev/null
+++ b/example/basic/service/handler.go
@@ -0,0 +1,239 @@
+package service
+
+type Handler struct{}
+
+func (h *Handler) Bool(v bool) bool {
+ return v
+}
+
+func (h *Handler) Int(v int) int {
+ return v
+}
+
+func (h *Handler) Int32(v int32) int32 {
+ return v
+}
+
+func (h *Handler) Int64(v int64) int64 {
+ return v
+}
+
+func (h *Handler) UInt(v uint) uint {
+ return v
+}
+
+func (h *Handler) UInt32(v uint32) uint32 {
+ return v
+}
+
+func (h *Handler) UInt64(v uint64) uint64 {
+ return v
+}
+
+func (h *Handler) Float32(v float32) float32 {
+ return v
+}
+
+func (h *Handler) Float64(v float64) float64 {
+ return v
+}
+
+func (h *Handler) String(v string) string {
+ return v
+}
+
+func (h *Handler) Struct(v Struct) Struct {
+ return v
+}
+
+func (h *Handler) Interface(v interface{}) interface{} {
+ return v
+}
+
+func (h *Handler) BoolSlice(v []bool) []bool {
+ return v
+}
+
+func (h *Handler) IntSlice(v []int) []int {
+ return v
+}
+
+func (h *Handler) Int32Slice(v []int32) []int32 {
+ return v
+}
+
+func (h *Handler) Int64Slice(v []int64) []int64 {
+ return v
+}
+
+func (h *Handler) UIntSlice(v []uint) []uint {
+ return v
+}
+
+func (h *Handler) UInt32Slice(v []uint32) []uint32 {
+ return v
+}
+
+func (h *Handler) UInt64Slice(v []uint64) []uint64 {
+ return v
+}
+
+func (h *Handler) Float32Slice(v []float32) []float32 {
+ return v
+}
+
+func (h *Handler) Float64Slice(v []float64) []float64 {
+ return v
+}
+
+func (h *Handler) StringSlice(v []string) []string {
+ return v
+}
+
+func (h *Handler) IntMap(v map[int]interface{}) map[int]interface{} {
+ return v
+}
+
+func (h *Handler) Int32Map(v map[int32]interface{}) map[int32]interface{} {
+ return v
+}
+
+func (h *Handler) Int64Map(v map[int64]interface{}) map[int64]interface{} {
+ return v
+}
+
+func (h *Handler) UIntMap(v map[uint]interface{}) map[uint]interface{} {
+ return v
+}
+
+func (h *Handler) UInt32Map(v map[uint32]interface{}) map[uint32]interface{} {
+ return v
+}
+
+func (h *Handler) UInt64Map(v map[uint64]interface{}) map[uint64]interface{} {
+ return v
+}
+
+func (h *Handler) Float32Map(v map[float32]interface{}) map[float32]interface{} {
+ return v
+}
+
+func (h *Handler) Float64Map(v map[float64]interface{}) map[float64]interface{} {
+ return v
+}
+
+func (h *Handler) StringMap(v map[string]interface{}) map[string]interface{} {
+ return v
+}
+
+func (h *Handler) IntTypeMap(v map[IntTypeMapKey]IntTypeMapValue) map[IntTypeMapKey]IntTypeMapValue {
+ return v
+}
+
+func (h *Handler) Int32TypeMap(v map[Int32TypeMapKey]Int32TypeMapValue) map[Int32TypeMapKey]Int32TypeMapValue {
+ return v
+}
+
+func (h *Handler) Int64TypeMap(v map[Int64TypeMapKey]Int64TypeMapValue) map[Int64TypeMapKey]Int64TypeMapValue {
+ return v
+}
+
+func (h *Handler) UIntTypeMap(v map[UIntTypeMapKey]UIntTypeMapValue) map[UIntTypeMapKey]UIntTypeMapValue {
+ return v
+}
+
+func (h *Handler) UInt32TypeMap(v map[UInt32TypeMapKey]UInt32TypeMapValue) map[UInt32TypeMapKey]UInt32TypeMapValue {
+ return v
+}
+
+func (h *Handler) UInt64TypeMap(v map[UInt64TypeMapKey]UInt64TypeMapValue) map[UInt64TypeMapKey]UInt64TypeMapValue {
+ return v
+}
+
+func (h *Handler) Float32TypeMap(v map[Float32TypeMapKey]Float32TypeMapValue) map[Float32TypeMapKey]Float32TypeMapValue {
+ return v
+}
+
+func (h *Handler) Float64TypeMap(v map[Float64TypeMapKey]Float64TypeMapValue) map[Float64TypeMapKey]Float64TypeMapValue {
+ return v
+}
+
+func (h *Handler) StringTypeMap(v map[StringTypeMapKey]StringTypeMapValue) map[StringTypeMapKey]StringTypeMapValue {
+ return v
+}
+
+func (h *Handler) IntTypeMapTyped(v IntTypeMapTyped) IntTypeMapTyped {
+ return v
+}
+
+func (h *Handler) Int32TypeMapTyped(v Int32TypeMapTyped) Int32TypeMapTyped {
+ return v
+}
+
+func (h *Handler) Int64TypeMapTyped(v Int64TypeMapTyped) Int64TypeMapTyped {
+ return v
+}
+
+func (h *Handler) UIntTypeMapTyped(v UIntTypeMapTyped) UIntTypeMapTyped {
+ return v
+}
+
+func (h *Handler) UInt32TypeMapTyped(v UInt32TypeMapTyped) UInt32TypeMapTyped {
+ return v
+}
+
+func (h *Handler) UInt64TypeMapTyped(v UInt64TypeMapTyped) UInt64TypeMapTyped {
+ return v
+}
+
+func (h *Handler) Float32TypeMapTyped(v Float32TypeMapTyped) Float32TypeMapTyped {
+ return v
+}
+
+func (h *Handler) Float64TypeMapTyped(v Float64TypeMapTyped) Float64TypeMapTyped {
+ return v
+}
+
+func (h *Handler) StringTypeMapTyped(v StringTypeMapTyped) StringTypeMapTyped {
+ return v
+}
+
+func (h *Handler) InterfaceSlice(v []interface{}) []interface{} {
+ return v
+}
+
+func (h *Handler) IntType(v IntType) IntType {
+ return v
+}
+
+func (h *Handler) Int32Type(v Int32Type) Int32Type {
+ return v
+}
+
+func (h *Handler) Int64Type(v Int64Type) Int64Type {
+ return v
+}
+
+func (h *Handler) UIntType(v UIntType) UIntType {
+ return v
+}
+
+func (h *Handler) UInt32Type(v UInt32Type) UInt32Type {
+ return v
+}
+
+func (h *Handler) UInt64Type(v UInt64Type) UInt64Type {
+ return v
+}
+
+func (h *Handler) Float32Type(v Float32Type) Float32Type {
+ return v
+}
+
+func (h *Handler) Float64Type(v Float64Type) Float64Type {
+ return v
+}
+
+func (h *Handler) StringType(v StringType) StringType {
+ return v
+}
diff --git a/example/basic/service/service.go b/example/basic/service/service.go
new file mode 100644
index 0000000..2ca7faa
--- /dev/null
+++ b/example/basic/service/service.go
@@ -0,0 +1,63 @@
+package service
+
+type Service interface {
+ Bool(v bool) bool
+ Int(v int) int
+ Int32(v int32) int32
+ Int64(v int64) int64
+ UInt(v uint) uint
+ UInt32(v uint32) uint32
+ UInt64(v uint64) uint64
+ Float32(v float32) float32
+ Float64(v float64) float64
+ String(v string) string
+ Struct(v Struct) Struct
+ Interface(v interface{}) interface{}
+ BoolSlice(v []bool) []bool
+ IntSlice(v []int) []int
+ Int32Slice(v []int32) []int32
+ Int64Slice(v []int64) []int64
+ UIntSlice(v []uint) []uint
+ UInt32Slice(v []uint32) []uint32
+ UInt64Slice(v []uint64) []uint64
+ Float32Slice(v []float32) []float32
+ Float64Slice(v []float64) []float64
+ StringSlice(v []string) []string
+ IntMap(v map[int]interface{}) map[int]interface{}
+ Int32Map(v map[int32]interface{}) map[int32]interface{}
+ Int64Map(v map[int64]interface{}) map[int64]interface{}
+ UIntMap(v map[uint]interface{}) map[uint]interface{}
+ UInt32Map(v map[uint32]interface{}) map[uint32]interface{}
+ UInt64Map(v map[uint64]interface{}) map[uint64]interface{}
+ Float32Map(v map[float32]interface{}) map[float32]interface{}
+ Float64Map(v map[float64]interface{}) map[float64]interface{}
+ StringMap(v map[string]interface{}) map[string]interface{}
+ IntTypeMap(v map[IntTypeMapKey]IntTypeMapValue) map[IntTypeMapKey]IntTypeMapValue
+ Int32TypeMap(v map[Int32TypeMapKey]Int32TypeMapValue) map[Int32TypeMapKey]Int32TypeMapValue
+ Int64TypeMap(v map[Int64TypeMapKey]Int64TypeMapValue) map[Int64TypeMapKey]Int64TypeMapValue
+ UIntTypeMap(v map[UIntTypeMapKey]UIntTypeMapValue) map[UIntTypeMapKey]UIntTypeMapValue
+ UInt32TypeMap(v map[UInt32TypeMapKey]UInt32TypeMapValue) map[UInt32TypeMapKey]UInt32TypeMapValue
+ UInt64TypeMap(v map[UInt64TypeMapKey]UInt64TypeMapValue) map[UInt64TypeMapKey]UInt64TypeMapValue
+ Float32TypeMap(v map[Float32TypeMapKey]Float32TypeMapValue) map[Float32TypeMapKey]Float32TypeMapValue
+ Float64TypeMap(v map[Float64TypeMapKey]Float64TypeMapValue) map[Float64TypeMapKey]Float64TypeMapValue
+ StringTypeMap(v map[StringTypeMapKey]StringTypeMapValue) map[StringTypeMapKey]StringTypeMapValue
+ IntTypeMapTyped(v IntTypeMapTyped) IntTypeMapTyped
+ Int32TypeMapTyped(v Int32TypeMapTyped) Int32TypeMapTyped
+ Int64TypeMapTyped(v Int64TypeMapTyped) Int64TypeMapTyped
+ UIntTypeMapTyped(v UIntTypeMapTyped) UIntTypeMapTyped
+ UInt32TypeMapTyped(v UInt32TypeMapTyped) UInt32TypeMapTyped
+ UInt64TypeMapTyped(v UInt64TypeMapTyped) UInt64TypeMapTyped
+ Float32TypeMapTyped(v Float32TypeMapTyped) Float32TypeMapTyped
+ Float64TypeMapTyped(v Float64TypeMapTyped) Float64TypeMapTyped
+ StringTypeMapTyped(v StringTypeMapTyped) StringTypeMapTyped
+ InterfaceSlice(v []interface{}) []interface{}
+ IntType(v IntType) IntType
+ Int32Type(v Int32Type) Int32Type
+ Int64Type(v Int64Type) Int64Type
+ UIntType(v UIntType) UIntType
+ UInt32Type(v UInt32Type) UInt32Type
+ UInt64Type(v UInt64Type) UInt64Type
+ Float32Type(v Float32Type) Float32Type
+ Float64Type(v Float64Type) Float64Type
+ StringType(v StringType) StringType
+}
diff --git a/example/basic/service/vo.go b/example/basic/service/vo.go
new file mode 100644
index 0000000..a7d38b9
--- /dev/null
+++ b/example/basic/service/vo.go
@@ -0,0 +1,224 @@
+package service
+
+type IntType int
+
+const (
+ IntAType IntType = 1
+ IntBType IntType = 2
+)
+
+type Int32Type int32
+
+const (
+ Int32AType Int32Type = 1
+ Int32BType Int32Type = 2
+)
+
+type Int64Type int64
+
+const (
+ Int64AType Int64Type = 1
+ Int64BType Int64Type = 2
+)
+
+type UIntType int
+
+const (
+ UIntAType UIntType = 1
+ UIntBType UIntType = 2
+)
+
+type UInt32Type uint32
+
+const (
+ UInt32AType UInt32Type = 1
+ UInt32BType UInt32Type = 2
+)
+
+type UInt64Type uint64
+
+const (
+ UInt64AType UInt64Type = 1
+ UInt64BType UInt64Type = 2
+)
+
+type Float32Type float32
+
+const (
+ Float32AType Float32Type = 1
+ Float32BType Float32Type = 2
+)
+
+type Float64Type float64
+
+const (
+ Float64AType Float64Type = 1
+ Float64BType Float64Type = 2
+)
+
+type StringType string
+
+const (
+ StringAType StringType = "A"
+ StringBType StringType = "B"
+)
+
+type IntTypeMapKey int
+
+const (
+ IntATypeMapKey IntTypeMapKey = 1
+ IntBTypeMapKey IntTypeMapKey = 2
+)
+
+type Int32TypeMapKey int32
+
+const (
+ Int32ATypeMapKey Int32TypeMapKey = 1
+ Int32BTypeMapKey Int32TypeMapKey = 2
+)
+
+type Int64TypeMapKey int64
+
+const (
+ Int64ATypeMapKey Int64TypeMapKey = 1
+ Int64BTypeMapKey Int64TypeMapKey = 2
+)
+
+type UIntTypeMapKey int
+
+const (
+ UIntATypeMapKey UIntTypeMapKey = 1
+ UIntBTypeMapKey UIntTypeMapKey = 2
+)
+
+type UInt32TypeMapKey uint32
+
+const (
+ UInt32ATypeMapKey UInt32TypeMapKey = 1
+ UInt32BTypeMapKey UInt32TypeMapKey = 2
+)
+
+type UInt64TypeMapKey uint64
+
+const (
+ UInt64ATypeMapKey UInt64TypeMapKey = 1
+ UInt64BTypeMapKey UInt64TypeMapKey = 2
+)
+
+type Float32TypeMapKey float32
+
+const (
+ Float32ATypeMapKey Float32TypeMapKey = 1
+ Float32BTypeMapKey Float32TypeMapKey = 2
+)
+
+type Float64TypeMapKey float64
+
+const (
+ Float64ATypeMapKey Float64TypeMapKey = 1
+ Float64BTypeMapKey Float64TypeMapKey = 2
+)
+
+type StringTypeMapKey string
+
+const (
+ StringATypeMapKey StringTypeMapKey = "A"
+ StringBTypeMapKey StringTypeMapKey = "B"
+)
+
+type IntTypeMapValue int
+
+const (
+ IntATypeMapValue IntTypeMapValue = 1
+ IntBTypeMapValue IntTypeMapValue = 2
+)
+
+type Int32TypeMapValue int32
+
+const (
+ Int32ATypeMapValue Int32TypeMapValue = 1
+ Int32BTypeMapValue Int32TypeMapValue = 2
+)
+
+type Int64TypeMapValue int64
+
+const (
+ Int64ATypeMapValue Int64TypeMapValue = 1
+ Int64BTypeMapValue Int64TypeMapValue = 2
+)
+
+type UIntTypeMapValue int
+
+const (
+ UIntATypeMapValue UIntTypeMapValue = 1
+ UIntBTypeMapValue UIntTypeMapValue = 2
+)
+
+type UInt32TypeMapValue uint32
+
+const (
+ UInt32ATypeMapValue UInt32TypeMapValue = 1
+ UInt32BTypeMapValue UInt32TypeMapValue = 2
+)
+
+type UInt64TypeMapValue uint64
+
+const (
+ UInt64ATypeMapValue UInt64TypeMapValue = 1
+ UInt64BTypeMapValue UInt64TypeMapValue = 2
+)
+
+type Float32TypeMapValue float32
+
+const (
+ Float32ATypeMapValue Float32TypeMapValue = 1
+ Float32BTypeMapValue Float32TypeMapValue = 2
+)
+
+type Float64TypeMapValue float64
+
+const (
+ Float64ATypeMapValue Float64TypeMapValue = 1
+ Float64BTypeMapValue Float64TypeMapValue = 2
+)
+
+type StringTypeMapValue string
+
+const (
+ StringATypeMapValue StringTypeMapValue = "A"
+ StringBTypeMapValue StringTypeMapValue = "B"
+)
+
+type (
+ IntTypeMapTyped map[IntTypeMapKey]IntTypeMapValue
+ Int32TypeMapTyped map[Int32TypeMapKey]Int32TypeMapValue
+ Int64TypeMapTyped map[Int64TypeMapKey]Int64TypeMapValue
+ UIntTypeMapTyped map[UIntTypeMapKey]UIntTypeMapValue
+ UInt32TypeMapTyped map[UInt32TypeMapKey]UInt32TypeMapValue
+ UInt64TypeMapTyped map[UInt64TypeMapKey]UInt64TypeMapValue
+ Float32TypeMapTyped map[Float32TypeMapKey]Float32TypeMapValue
+ Float64TypeMapTyped map[Float64TypeMapKey]Float64TypeMapValue
+ StringTypeMapTyped map[StringTypeMapKey]StringTypeMapValue
+)
+
+type Struct struct {
+ Int int
+ Int32 int32
+ Int64 int64
+ UInt uint
+ UInt32 uint32
+ UInt64 uint64
+ Float32 float32
+ Float64 float64
+ String string
+ Interface interface{}
+ IntTypeMapTyped map[IntTypeMapKey]IntTypeMapValue
+ Int32TypeMapTyped map[Int32TypeMapKey]Int32TypeMapValue
+ Int64TypeMapTyped map[Int64TypeMapKey]Int64TypeMapValue
+ UIntTypeMapTyped map[UIntTypeMapKey]UIntTypeMapValue
+ UInt32TypeMapTyped map[UInt32TypeMapKey]UInt32TypeMapValue
+ UInt64TypeMapTyped map[UInt64TypeMapKey]UInt64TypeMapValue
+ Float32TypeMapTyped map[Float32TypeMapKey]Float32TypeMapValue
+ Float64TypeMapTyped map[Float64TypeMapKey]Float64TypeMapValue
+ StringTypeMapTyped map[StringTypeMapKey]StringTypeMapValue
+}
diff --git a/example/nullable/client/index.html b/example/nullable/client/index.html
new file mode 100644
index 0000000..02d0c88
--- /dev/null
+++ b/example/nullable/client/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+ Nullable
+
+
+
+A service test
+
+ open the console!
+
+
+
\ No newline at end of file
diff --git a/example/nullable/client/src/app.ts b/example/nullable/client/src/app.ts
new file mode 100644
index 0000000..3efecd0
--- /dev/null
+++ b/example/nullable/client/src/app.ts
@@ -0,0 +1,11 @@
+import {ServiceClient} from "./service-client.js";
+import {Base} from "./service-vo.js";
+import transport from "./transport.js";
+
+export const init = () => {
+ const client = new ServiceClient(transport("/service"))
+
+ client.variantA({} as Base).then(ret => {
+ console.log("Variant A", ret)
+ })
+}
diff --git a/example/nullable/client/src/service-client.ts b/example/nullable/client/src/service-client.ts
new file mode 100644
index 0000000..aaeb63e
--- /dev/null
+++ b/example/nullable/client/src/service-client.ts
@@ -0,0 +1,36 @@
+/* eslint:disable */
+// hello commonjs - we need some imports - sorted in alphabetical order, by go package
+import * as github_com_foomo_gotsrpc_v2_example_nullable_service from './service-vo'; // ./client/src/service-client.ts to ./client/src/service-vo.ts
+
+export class ServiceClient {
+ public static defaultEndpoint = "/service";
+ constructor(
+ public transport:(method: string, data?: any[]) => Promise
+ ) {}
+ async variantA(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.Base):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.Base}>("VariantA", [i1]))[0]
+ }
+ async variantB(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomType):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomType}>("VariantB", [i1]))[0]
+ }
+ async variantC(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomTypes|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomTypes|null}>("VariantC", [i1]))[0]
+ }
+ async variantD(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomTypesMap|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.BCustomTypesMap|null}>("VariantD", [i1]))[0]
+ }
+ async variantE(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.Base|null):Promise {
+ return (await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.Base|null}>("VariantE", [i1]))[0]
+ }
+ async variantF(i1:Array|null):Promise|null> {
+ return (await this.transport<{0:Array|null}>("VariantF", [i1]))[0]
+ }
+ async variantG(i1:Record|null):Promise|null> {
+ return (await this.transport<{0:Record|null}>("VariantG", [i1]))[0]
+ }
+ async variantH(i1:github_com_foomo_gotsrpc_v2_example_nullable_service.Base, i2:github_com_foomo_gotsrpc_v2_example_nullable_service.Base|null, i3:Array|null, i4:Record|null):Promise<{r1:github_com_foomo_gotsrpc_v2_example_nullable_service.Base; r2:github_com_foomo_gotsrpc_v2_example_nullable_service.Base|null; r3:Array|null; r4:Record|null}> {
+ let response = await this.transport<{0:github_com_foomo_gotsrpc_v2_example_nullable_service.Base; 1:github_com_foomo_gotsrpc_v2_example_nullable_service.Base|null; 2:Array|null; 3:Record|null}>("VariantH", [i1, i2, i3, i4])
+ let responseObject = {r1 : response[0], r2 : response[1], r3 : response[2], r4 : response[3]};
+ return responseObject;
+ }
+}
\ No newline at end of file
diff --git a/example/nullable/client/src/service-vo.ts b/example/nullable/client/src/service-vo.ts
new file mode 100644
index 0000000..85939ed
--- /dev/null
+++ b/example/nullable/client/src/service-vo.ts
@@ -0,0 +1,54 @@
+/* eslint:disable */
+// hello commonjs - we need some imports - sorted in alphabetical order, by go package
+import * as github_com_foomo_gotsrpc_v2_example_nullable_service from './service-vo'; // ./client/src/service-vo.ts to ./client/src/service-vo.ts
+// github.com/foomo/gotsrpc/v2/example/nullable/service.ACustomType
+export enum ACustomType {
+ One = "one",
+ Two = "two",
+}
+// github.com/foomo/gotsrpc/v2/example/nullable/service.ACustomTypes
+export type ACustomTypes = Array
+// github.com/foomo/gotsrpc/v2/example/nullable/service.ACustomTypesMap
+export type ACustomTypesMap = Record
+// github.com/foomo/gotsrpc/v2/example/nullable/service.BCustomType
+export type BCustomType = string
+// github.com/foomo/gotsrpc/v2/example/nullable/service.BCustomTypes
+export type BCustomTypes = Array
+// github.com/foomo/gotsrpc/v2/example/nullable/service.BCustomTypesMap
+export type BCustomTypesMap = Record
+// github.com/foomo/gotsrpc/v2/example/nullable/service.Base
+export interface Base {
+ a1:github_com_foomo_gotsrpc_v2_example_nullable_service.Nested;
+ a2?:github_com_foomo_gotsrpc_v2_example_nullable_service.Nested;
+ a3:github_com_foomo_gotsrpc_v2_example_nullable_service.Nested|null;
+ b1:string;
+ b2?:string;
+ b3:string|null;
+ c1:any;
+ c2?:any;
+ c3:any;
+ d1:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomType;
+ d2?:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomType;
+ d3:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomType|null;
+ e1:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypes|null;
+ e2?:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypes;
+ e3:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypes|null;
+ f1:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypesMap|null;
+ f2?:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypesMap;
+ f3:github_com_foomo_gotsrpc_v2_example_nullable_service.ACustomTypesMap|null;
+ Two:Array|null;
+ Two1:Array|null>|null;
+ Two2:Array|null>|null;
+ Three:Array|null;
+ Three1:Array|null;
+ Four:Record|null;
+ Five:Record|null;
+ Six:{
+ Foo:string;
+ }|null;
+}
+// github.com/foomo/gotsrpc/v2/example/nullable/service.Nested
+export interface Nested {
+ Foo:string;
+}
+// end of common js
\ No newline at end of file
diff --git a/example/nullable/client/src/transport.ts b/example/nullable/client/src/transport.ts
new file mode 100644
index 0000000..79683ce
--- /dev/null
+++ b/example/nullable/client/src/transport.ts
@@ -0,0 +1,18 @@
+const transport = endpoint => async (method: string, args: any = []) => {
+ return new Promise(async (resolve, reject) => {
+ fetch(
+ `${endpoint}/${encodeURIComponent(method)}`,
+ {
+ method: 'POST',
+ body: JSON.stringify(args),
+ }
+ )
+ .then((response) => {
+ return response.json() as Promise;
+ })
+ .then((val) => resolve(val))
+ .catch((err) => reject(err))
+ })
+};
+
+export default transport
diff --git a/example/nullable/client/tsconfig.json b/example/nullable/client/tsconfig.json
new file mode 100644
index 0000000..7729245
--- /dev/null
+++ b/example/nullable/client/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./dist",
+ "rootDir": "./src",
+ }
+}
\ No newline at end of file
diff --git a/example/nullable/go.mod b/example/nullable/go.mod
new file mode 100644
index 0000000..0248631
--- /dev/null
+++ b/example/nullable/go.mod
@@ -0,0 +1,13 @@
+module github.com/foomo/gotsrpc/v2/example/basic
+
+go 1.16
+
+require (
+ github.com/davecgh/go-spew v1.1.1
+ github.com/foomo/gotsrpc/v2 v2.0.10
+ github.com/pkg/errors v0.9.1
+ github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774
+ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
+)
+
+replace github.com/foomo/gotsrpc/v2 => ../../
diff --git a/example/nullable/go.sum b/example/nullable/go.sum
new file mode 100644
index 0000000..ac4944b
--- /dev/null
+++ b/example/nullable/go.sum
@@ -0,0 +1,487 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
+cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
+cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
+cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
+cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
+cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
+cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
+cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
+cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
+cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
+cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
+cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
+cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
+cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
+cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
+cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
+cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
+cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
+cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
+cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
+cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
+cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
+cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
+cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
+cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
+cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
+cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
+cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
+cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
+cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
+dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
+github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
+github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
+github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
+github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
+github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
+github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
+github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
+github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
+github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
+github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
+github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
+github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
+github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
+github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
+github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
+github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
+github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0=
+github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
+github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
+github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
+github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
+github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
+github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
+github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
+github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
+github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
+github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
+github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
+github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
+github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
+github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
+github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
+github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
+github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
+github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
+github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
+github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
+github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
+github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
+github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
+github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
+github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.2.6 h1:tGiWC9HENWE2tqYycIqFTNorMmFRVhNwCpDOpWqnk8E=
+github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0=
+github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ=
+github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw=
+github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774 h1:SUHFQHAaySqF0YHCmmm0EIFooFZpDPpi5KTom7YJ07c=
+github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774/go.mod h1:8uNqM1i7pr0jO7gdvbNCgsSa8Ki2vMh7JCQxO9BlF90=
+github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
+go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
+go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
+golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
+golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
+golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
+golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
+golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
+golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
+golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
+golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
+golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
+golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=
+golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
+golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0=
+golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
+golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8=
+golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
+google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
+google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
+google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
+google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
+google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
+google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
+google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
+google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
+google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
+google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
+honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
+rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
+rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
diff --git a/example/nullable/gotsrpc.yml b/example/nullable/gotsrpc.yml
new file mode 100644
index 0000000..978c974
--- /dev/null
+++ b/example/nullable/gotsrpc.yml
@@ -0,0 +1,18 @@
+module:
+ name: github.com/foomo/gotsrpc/v2/example/nullable
+ path: ./
+
+targets:
+ basic:
+ services:
+ /service: Service
+ package: github.com/foomo/gotsrpc/v2/example/nullable/service
+ out: ./client/src/service-client.ts
+ gorpc:
+ - Service
+ tsrpc:
+ - Service
+
+mappings:
+ github.com/foomo/gotsrpc/v2/example/nullable/service:
+ out: ./client/src/service-vo.ts
diff --git a/example/nullable/main.go b/example/nullable/main.go
new file mode 100644
index 0000000..6569fe6
--- /dev/null
+++ b/example/nullable/main.go
@@ -0,0 +1,32 @@
+package main
+
+import (
+ "net/http"
+ "os/exec"
+ "strings"
+ "time"
+
+ "github.com/foomo/gotsrpc/v2/example/basic/service"
+)
+
+func main() {
+ fs := http.FileServer(http.Dir("./client"))
+ ws := service.NewDefaultServiceGoTSRPCProxy(&service.Handler{})
+
+ mux := http.NewServeMux()
+ mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ switch {
+ case strings.HasPrefix(r.URL.Path, "/service/"):
+ ws.ServeHTTP(w, r)
+ default:
+ fs.ServeHTTP(w, r)
+ }
+ })
+
+ go func() {
+ time.Sleep(time.Second)
+ _ = exec.Command("open", "http://127.0.0.1:3000").Run()
+ }()
+
+ _ = http.ListenAndServe("localhost:3000", mux)
+}
diff --git a/example/nullable/service/gorpc_gen.go b/example/nullable/service/gorpc_gen.go
new file mode 100644
index 0000000..26a2481
--- /dev/null
+++ b/example/nullable/service/gorpc_gen.go
@@ -0,0 +1,190 @@
+// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
+
+package service
+
+import (
+ tls "crypto/tls"
+ gob "encoding/gob"
+ fmt "fmt"
+ reflect "reflect"
+ strings "strings"
+ time "time"
+
+ gotsrpc "github.com/foomo/gotsrpc/v2"
+ gorpc "github.com/valyala/gorpc"
+)
+
+type (
+ ServiceGoRPCProxy struct {
+ server *gorpc.Server
+ service Service
+ callStatsHandler gotsrpc.GoRPCCallStatsHandlerFun
+ }
+
+ ServiceVariantARequest struct {
+ I1 Base
+ }
+ ServiceVariantAResponse struct {
+ R1 Base
+ }
+
+ ServiceVariantBRequest struct {
+ I1 BCustomType
+ }
+ ServiceVariantBResponse struct {
+ R1 BCustomType
+ }
+
+ ServiceVariantCRequest struct {
+ I1 BCustomTypes
+ }
+ ServiceVariantCResponse struct {
+ R1 BCustomTypes
+ }
+
+ ServiceVariantDRequest struct {
+ I1 BCustomTypesMap
+ }
+ ServiceVariantDResponse struct {
+ R1 BCustomTypesMap
+ }
+
+ ServiceVariantERequest struct {
+ I1 *Base
+ }
+ ServiceVariantEResponse struct {
+ R1 *Base
+ }
+
+ ServiceVariantFRequest struct {
+ I1 []*Base
+ }
+ ServiceVariantFResponse struct {
+ R1 []*Base
+ }
+
+ ServiceVariantGRequest struct {
+ I1 map[string]*Base
+ }
+ ServiceVariantGResponse struct {
+ R1 map[string]*Base
+ }
+
+ ServiceVariantHRequest struct {
+ I1 Base
+ I2 *Base
+ I3 []*Base
+ I4 map[string]Base
+ }
+ ServiceVariantHResponse struct {
+ R1 Base
+ R2 *Base
+ R3 []*Base
+ R4 map[string]Base
+ }
+)
+
+func init() {
+ gob.Register(ServiceVariantARequest{})
+ gob.Register(ServiceVariantAResponse{})
+ gob.Register(ServiceVariantBRequest{})
+ gob.Register(ServiceVariantBResponse{})
+ gob.Register(ServiceVariantCRequest{})
+ gob.Register(ServiceVariantCResponse{})
+ gob.Register(ServiceVariantDRequest{})
+ gob.Register(ServiceVariantDResponse{})
+ gob.Register(ServiceVariantERequest{})
+ gob.Register(ServiceVariantEResponse{})
+ gob.Register(ServiceVariantFRequest{})
+ gob.Register(ServiceVariantFResponse{})
+ gob.Register(ServiceVariantGRequest{})
+ gob.Register(ServiceVariantGResponse{})
+ gob.Register(ServiceVariantHRequest{})
+ gob.Register(ServiceVariantHResponse{})
+}
+
+func NewServiceGoRPCProxy(addr string, service Service, tlsConfig *tls.Config) *ServiceGoRPCProxy {
+ proxy := &ServiceGoRPCProxy{
+ service: service,
+ }
+
+ if tlsConfig != nil {
+ proxy.server = gorpc.NewTLSServer(addr, proxy.handler, tlsConfig)
+ } else {
+ proxy.server = gorpc.NewTCPServer(addr, proxy.handler)
+ }
+
+ return proxy
+}
+
+func (p *ServiceGoRPCProxy) Start() error {
+ return p.server.Start()
+}
+
+func (p *ServiceGoRPCProxy) Serve() error {
+ return p.server.Serve()
+}
+
+func (p *ServiceGoRPCProxy) Stop() {
+ p.server.Stop()
+}
+
+func (p *ServiceGoRPCProxy) SetCallStatsHandler(handler gotsrpc.GoRPCCallStatsHandlerFun) {
+ p.callStatsHandler = handler
+}
+
+func (p *ServiceGoRPCProxy) handler(clientAddr string, request interface{}) (response interface{}) {
+ start := time.Now()
+
+ reqType := reflect.TypeOf(request).String()
+ funcNameParts := strings.Split(reqType, ".")
+ funcName := funcNameParts[len(funcNameParts)-1]
+
+ switch funcName {
+ case "ServiceVariantARequest":
+ req := request.(ServiceVariantARequest)
+ r1 := p.service.VariantA(nil, nil, req.I1)
+ response = ServiceVariantAResponse{R1: r1}
+ case "ServiceVariantBRequest":
+ req := request.(ServiceVariantBRequest)
+ r1 := p.service.VariantB(nil, nil, req.I1)
+ response = ServiceVariantBResponse{R1: r1}
+ case "ServiceVariantCRequest":
+ req := request.(ServiceVariantCRequest)
+ r1 := p.service.VariantC(nil, nil, req.I1)
+ response = ServiceVariantCResponse{R1: r1}
+ case "ServiceVariantDRequest":
+ req := request.(ServiceVariantDRequest)
+ r1 := p.service.VariantD(nil, nil, req.I1)
+ response = ServiceVariantDResponse{R1: r1}
+ case "ServiceVariantERequest":
+ req := request.(ServiceVariantERequest)
+ r1 := p.service.VariantE(nil, nil, req.I1)
+ response = ServiceVariantEResponse{R1: r1}
+ case "ServiceVariantFRequest":
+ req := request.(ServiceVariantFRequest)
+ r1 := p.service.VariantF(nil, nil, req.I1)
+ response = ServiceVariantFResponse{R1: r1}
+ case "ServiceVariantGRequest":
+ req := request.(ServiceVariantGRequest)
+ r1 := p.service.VariantG(nil, nil, req.I1)
+ response = ServiceVariantGResponse{R1: r1}
+ case "ServiceVariantHRequest":
+ req := request.(ServiceVariantHRequest)
+ r1, r2, r3, r4 := p.service.VariantH(nil, nil, req.I1, req.I2, req.I3, req.I4)
+ response = ServiceVariantHResponse{R1: r1, R2: r2, R3: r3, R4: r4}
+ default:
+ fmt.Println("Unkown request type", reflect.TypeOf(request).String())
+ }
+
+ if p.callStatsHandler != nil {
+ p.callStatsHandler(&gotsrpc.CallStats{
+ Func: funcName,
+ Package: "github.com/foomo/gotsrpc/v2/example/nullable/service",
+ Service: "Service",
+ Execution: time.Since(start),
+ })
+ }
+
+ return
+}
diff --git a/example/nullable/service/gorpcclient_gen.go b/example/nullable/service/gorpcclient_gen.go
new file mode 100644
index 0000000..f551aa6
--- /dev/null
+++ b/example/nullable/service/gorpcclient_gen.go
@@ -0,0 +1,119 @@
+// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
+
+package service
+
+import (
+ tls "crypto/tls"
+
+ gorpc "github.com/valyala/gorpc"
+)
+
+type ServiceGoRPCClient struct {
+ Client *gorpc.Client
+}
+
+func NewServiceGoRPCClient(addr string, tlsConfig *tls.Config) *ServiceGoRPCClient {
+ client := &ServiceGoRPCClient{}
+ if tlsConfig == nil {
+ client.Client = gorpc.NewTCPClient(addr)
+ } else {
+ client.Client = gorpc.NewTLSClient(addr, tlsConfig)
+ }
+ return client
+}
+
+func (tsc *ServiceGoRPCClient) Start() {
+ tsc.Client.Start()
+}
+
+func (tsc *ServiceGoRPCClient) Stop() {
+ tsc.Client.Stop()
+}
+
+func (tsc *ServiceGoRPCClient) VariantA(i1 Base) (r1 Base, clientErr error) {
+ req := ServiceVariantARequest{I1: i1}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceVariantAResponse)
+ return response.R1, nil
+}
+
+func (tsc *ServiceGoRPCClient) VariantB(i1 BCustomType) (r1 BCustomType, clientErr error) {
+ req := ServiceVariantBRequest{I1: i1}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceVariantBResponse)
+ return response.R1, nil
+}
+
+func (tsc *ServiceGoRPCClient) VariantC(i1 BCustomTypes) (r1 BCustomTypes, clientErr error) {
+ req := ServiceVariantCRequest{I1: i1}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceVariantCResponse)
+ return response.R1, nil
+}
+
+func (tsc *ServiceGoRPCClient) VariantD(i1 BCustomTypesMap) (r1 BCustomTypesMap, clientErr error) {
+ req := ServiceVariantDRequest{I1: i1}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceVariantDResponse)
+ return response.R1, nil
+}
+
+func (tsc *ServiceGoRPCClient) VariantE(i1 *Base) (r1 *Base, clientErr error) {
+ req := ServiceVariantERequest{I1: i1}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceVariantEResponse)
+ return response.R1, nil
+}
+
+func (tsc *ServiceGoRPCClient) VariantF(i1 []*Base) (r1 []*Base, clientErr error) {
+ req := ServiceVariantFRequest{I1: i1}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceVariantFResponse)
+ return response.R1, nil
+}
+
+func (tsc *ServiceGoRPCClient) VariantG(i1 map[string]*Base) (r1 map[string]*Base, clientErr error) {
+ req := ServiceVariantGRequest{I1: i1}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceVariantGResponse)
+ return response.R1, nil
+}
+
+func (tsc *ServiceGoRPCClient) VariantH(i1 Base, i2 *Base, i3 []*Base, i4 map[string]Base) (r1 Base, r2 *Base, r3 []*Base, r4 map[string]Base, clientErr error) {
+ req := ServiceVariantHRequest{I1: i1, I2: i2, I3: i3, I4: i4}
+ rpcCallRes, rpcCallErr := tsc.Client.Call(req)
+ if rpcCallErr != nil {
+ clientErr = rpcCallErr
+ return
+ }
+ response := rpcCallRes.(ServiceVariantHResponse)
+ return response.R1, response.R2, response.R3, response.R4, nil
+}
diff --git a/example/nullable/service/gotsrpc_gen.go b/example/nullable/service/gotsrpc_gen.go
new file mode 100644
index 0000000..c212f5c
--- /dev/null
+++ b/example/nullable/service/gotsrpc_gen.go
@@ -0,0 +1,230 @@
+// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
+
+package service
+
+import (
+ io "io"
+ ioutil "io/ioutil"
+ http "net/http"
+ time "time"
+
+ gotsrpc "github.com/foomo/gotsrpc/v2"
+)
+
+const (
+ ServiceGoTSRPCProxyVariantA = "VariantA"
+ ServiceGoTSRPCProxyVariantB = "VariantB"
+ ServiceGoTSRPCProxyVariantC = "VariantC"
+ ServiceGoTSRPCProxyVariantD = "VariantD"
+ ServiceGoTSRPCProxyVariantE = "VariantE"
+ ServiceGoTSRPCProxyVariantF = "VariantF"
+ ServiceGoTSRPCProxyVariantG = "VariantG"
+ ServiceGoTSRPCProxyVariantH = "VariantH"
+)
+
+type ServiceGoTSRPCProxy struct {
+ EndPoint string
+ service Service
+}
+
+func NewDefaultServiceGoTSRPCProxy(service Service) *ServiceGoTSRPCProxy {
+ return &ServiceGoTSRPCProxy{
+ EndPoint: "/service",
+ service: service,
+ }
+}
+
+func NewServiceGoTSRPCProxy(service Service, endpoint string) *ServiceGoTSRPCProxy {
+ return &ServiceGoTSRPCProxy{
+ EndPoint: endpoint,
+ service: service,
+ }
+}
+
+// ServeHTTP exposes your service
+func (p *ServiceGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ if r.Method != http.MethodPost {
+ if r.Method == http.MethodOptions {
+ return
+ }
+ gotsrpc.ErrorMethodNotAllowed(w)
+ return
+ }
+ defer io.Copy(ioutil.Discard, r.Body) // Drain Request Body
+
+ funcName := gotsrpc.GetCalledFunc(r, p.EndPoint)
+ callStats := gotsrpc.GetStatsForRequest(r)
+ if callStats != nil {
+ callStats.Func = funcName
+ callStats.Package = "github.com/foomo/gotsrpc/v2/example/nullable/service"
+ callStats.Service = "Service"
+ }
+ switch funcName {
+ case ServiceGoTSRPCProxyVariantA:
+ var (
+ arg_i1 Base
+ )
+ args := []interface{}{&arg_i1}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ rw := gotsrpc.ResponseWriter{ResponseWriter: w}
+ variantAR1 := p.service.VariantA(&rw, r, arg_i1)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ if rw.Status() == http.StatusOK {
+ gotsrpc.Reply([]interface{}{variantAR1}, callStats, r, w)
+ }
+ return
+ case ServiceGoTSRPCProxyVariantB:
+ var (
+ arg_i1 BCustomType
+ )
+ args := []interface{}{&arg_i1}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ rw := gotsrpc.ResponseWriter{ResponseWriter: w}
+ variantBR1 := p.service.VariantB(&rw, r, arg_i1)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ if rw.Status() == http.StatusOK {
+ gotsrpc.Reply([]interface{}{variantBR1}, callStats, r, w)
+ }
+ return
+ case ServiceGoTSRPCProxyVariantC:
+ var (
+ arg_i1 BCustomTypes
+ )
+ args := []interface{}{&arg_i1}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ rw := gotsrpc.ResponseWriter{ResponseWriter: w}
+ variantCR1 := p.service.VariantC(&rw, r, arg_i1)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ if rw.Status() == http.StatusOK {
+ gotsrpc.Reply([]interface{}{variantCR1}, callStats, r, w)
+ }
+ return
+ case ServiceGoTSRPCProxyVariantD:
+ var (
+ arg_i1 BCustomTypesMap
+ )
+ args := []interface{}{&arg_i1}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ rw := gotsrpc.ResponseWriter{ResponseWriter: w}
+ variantDR1 := p.service.VariantD(&rw, r, arg_i1)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ if rw.Status() == http.StatusOK {
+ gotsrpc.Reply([]interface{}{variantDR1}, callStats, r, w)
+ }
+ return
+ case ServiceGoTSRPCProxyVariantE:
+ var (
+ arg_i1 *Base
+ )
+ args := []interface{}{&arg_i1}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ rw := gotsrpc.ResponseWriter{ResponseWriter: w}
+ variantER1 := p.service.VariantE(&rw, r, arg_i1)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ if rw.Status() == http.StatusOK {
+ gotsrpc.Reply([]interface{}{variantER1}, callStats, r, w)
+ }
+ return
+ case ServiceGoTSRPCProxyVariantF:
+ var (
+ arg_i1 []*Base
+ )
+ args := []interface{}{&arg_i1}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ rw := gotsrpc.ResponseWriter{ResponseWriter: w}
+ variantFR1 := p.service.VariantF(&rw, r, arg_i1)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ if rw.Status() == http.StatusOK {
+ gotsrpc.Reply([]interface{}{variantFR1}, callStats, r, w)
+ }
+ return
+ case ServiceGoTSRPCProxyVariantG:
+ var (
+ arg_i1 map[string]*Base
+ )
+ args := []interface{}{&arg_i1}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ rw := gotsrpc.ResponseWriter{ResponseWriter: w}
+ variantGR1 := p.service.VariantG(&rw, r, arg_i1)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ if rw.Status() == http.StatusOK {
+ gotsrpc.Reply([]interface{}{variantGR1}, callStats, r, w)
+ }
+ return
+ case ServiceGoTSRPCProxyVariantH:
+ var (
+ arg_i1 Base
+ arg_i2 *Base
+ arg_i3 []*Base
+ arg_i4 map[string]Base
+ )
+ args := []interface{}{&arg_i1, &arg_i2, &arg_i3, &arg_i4}
+ err := gotsrpc.LoadArgs(&args, callStats, r)
+ if err != nil {
+ gotsrpc.ErrorCouldNotLoadArgs(w)
+ return
+ }
+ executionStart := time.Now()
+ rw := gotsrpc.ResponseWriter{ResponseWriter: w}
+ variantHR1, variantHR2, variantHR3, variantHR4 := p.service.VariantH(&rw, r, arg_i1, arg_i2, arg_i3, arg_i4)
+ if callStats != nil {
+ callStats.Execution = time.Now().Sub(executionStart)
+ }
+ if rw.Status() == http.StatusOK {
+ gotsrpc.Reply([]interface{}{variantHR1, variantHR2, variantHR3, variantHR4}, callStats, r, w)
+ }
+ return
+ default:
+ gotsrpc.ClearStats(r)
+ http.Error(w, "404 - not found "+r.URL.Path, http.StatusNotFound)
+ }
+}
diff --git a/example/nullable/service/gotsrpcclient_gen.go b/example/nullable/service/gotsrpcclient_gen.go
new file mode 100644
index 0000000..35e2ca9
--- /dev/null
+++ b/example/nullable/service/gotsrpcclient_gen.go
@@ -0,0 +1,123 @@
+// Code generated by gotsrpc https://github.com/foomo/gotsrpc/v2 - DO NOT EDIT.
+
+package service
+
+import (
+ go_context "context"
+ go_net_http "net/http"
+
+ gotsrpc "github.com/foomo/gotsrpc/v2"
+ pkg_errors "github.com/pkg/errors"
+)
+
+type ServiceGoTSRPCClient interface {
+ VariantA(ctx go_context.Context, i1 Base) (r1 Base, clientErr error)
+ VariantB(ctx go_context.Context, i1 BCustomType) (r1 BCustomType, clientErr error)
+ VariantC(ctx go_context.Context, i1 BCustomTypes) (r1 BCustomTypes, clientErr error)
+ VariantD(ctx go_context.Context, i1 BCustomTypesMap) (r1 BCustomTypesMap, clientErr error)
+ VariantE(ctx go_context.Context, i1 *Base) (r1 *Base, clientErr error)
+ VariantF(ctx go_context.Context, i1 []*Base) (r1 []*Base, clientErr error)
+ VariantG(ctx go_context.Context, i1 map[string]*Base) (r1 map[string]*Base, clientErr error)
+ VariantH(ctx go_context.Context, i1 Base, i2 *Base, i3 []*Base, i4 map[string]Base) (r1 Base, r2 *Base, r3 []*Base, r4 map[string]Base, clientErr error)
+}
+
+type HTTPServiceGoTSRPCClient struct {
+ URL string
+ EndPoint string
+ Client gotsrpc.Client
+}
+
+func NewDefaultServiceGoTSRPCClient(url string) *HTTPServiceGoTSRPCClient {
+ return NewServiceGoTSRPCClient(url, "/service")
+}
+
+func NewServiceGoTSRPCClient(url string, endpoint string) *HTTPServiceGoTSRPCClient {
+ return NewServiceGoTSRPCClientWithClient(url, endpoint, nil)
+}
+
+func NewServiceGoTSRPCClientWithClient(url string, endpoint string, client *go_net_http.Client) *HTTPServiceGoTSRPCClient {
+ return &HTTPServiceGoTSRPCClient{
+ URL: url,
+ EndPoint: endpoint,
+ Client: gotsrpc.NewClientWithHttpClient(client),
+ }
+}
+func (tsc *HTTPServiceGoTSRPCClient) VariantA(ctx go_context.Context, i1 Base) (r1 Base, clientErr error) {
+ args := []interface{}{i1}
+ reply := []interface{}{&r1}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantA", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantA")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) VariantB(ctx go_context.Context, i1 BCustomType) (r1 BCustomType, clientErr error) {
+ args := []interface{}{i1}
+ reply := []interface{}{&r1}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantB", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantB")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) VariantC(ctx go_context.Context, i1 BCustomTypes) (r1 BCustomTypes, clientErr error) {
+ args := []interface{}{i1}
+ reply := []interface{}{&r1}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantC", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantC")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) VariantD(ctx go_context.Context, i1 BCustomTypesMap) (r1 BCustomTypesMap, clientErr error) {
+ args := []interface{}{i1}
+ reply := []interface{}{&r1}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantD", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantD")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) VariantE(ctx go_context.Context, i1 *Base) (r1 *Base, clientErr error) {
+ args := []interface{}{i1}
+ reply := []interface{}{&r1}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantE", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantE")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) VariantF(ctx go_context.Context, i1 []*Base) (r1 []*Base, clientErr error) {
+ args := []interface{}{i1}
+ reply := []interface{}{&r1}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantF", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantF")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) VariantG(ctx go_context.Context, i1 map[string]*Base) (r1 map[string]*Base, clientErr error) {
+ args := []interface{}{i1}
+ reply := []interface{}{&r1}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantG", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantG")
+ }
+ return
+}
+
+func (tsc *HTTPServiceGoTSRPCClient) VariantH(ctx go_context.Context, i1 Base, i2 *Base, i3 []*Base, i4 map[string]Base) (r1 Base, r2 *Base, r3 []*Base, r4 map[string]Base, clientErr error) {
+ args := []interface{}{i1, i2, i3, i4}
+ reply := []interface{}{&r1, &r2, &r3, &r4}
+ clientErr = tsc.Client.Call(ctx, tsc.URL, tsc.EndPoint, "VariantH", args, reply)
+ if clientErr != nil {
+ clientErr = pkg_errors.WithMessage(clientErr, "failed to call service.ServiceGoTSRPCProxy VariantH")
+ }
+ return
+}
diff --git a/example/nullable/service/handler.go b/example/nullable/service/handler.go
new file mode 100644
index 0000000..d3fb6c7
--- /dev/null
+++ b/example/nullable/service/handler.go
@@ -0,0 +1,40 @@
+package service
+
+import (
+ "net/http"
+)
+
+type Handler struct{}
+
+func (h *Handler) VariantA(w http.ResponseWriter, r *http.Request, i1 Base) (r1 Base) {
+ return i1
+}
+
+func (h *Handler) VariantB(w http.ResponseWriter, r *http.Request, i1 BCustomType) (r1 BCustomType) {
+ return i1
+}
+
+func (h *Handler) VariantC(w http.ResponseWriter, r *http.Request, i1 BCustomTypes) (r1 BCustomTypes) {
+ return i1
+}
+
+func (h *Handler) VariantD(w http.ResponseWriter, r *http.Request, i1 BCustomTypesMap) (r1 BCustomTypesMap) {
+ return i1
+}
+
+func (h *Handler) VariantE(w http.ResponseWriter, r *http.Request, i1 *Base) (r1 *Base) {
+ return i1
+}
+
+func (h *Handler) VariantF(w http.ResponseWriter, r *http.Request, i1 []*Base) (r1 []*Base) {
+ return i1
+}
+
+func (h *Handler) VariantG(w http.ResponseWriter, r *http.Request, i1 map[string]*Base) (r1 map[string]*Base) {
+ return i1
+}
+
+func (h *Handler) VariantH(w http.ResponseWriter, r *http.Request, i1 Base, i2 *Base, i3 []*Base, i4 map[string]Base) (r1 Base, r2 *Base, r3 []*Base, r4 map[string]Base) {
+ //TODO implement me
+ panic("implement me")
+}
diff --git a/example/nullable/service/service.go b/example/nullable/service/service.go
new file mode 100644
index 0000000..afc1886
--- /dev/null
+++ b/example/nullable/service/service.go
@@ -0,0 +1,20 @@
+package service
+
+import (
+ "net/http"
+)
+
+type Service interface {
+ VariantA(w http.ResponseWriter, r *http.Request, i1 Base) (r1 Base)
+ VariantB(w http.ResponseWriter, r *http.Request, i1 BCustomType) (r1 BCustomType)
+ VariantC(w http.ResponseWriter, r *http.Request, i1 BCustomTypes) (r1 BCustomTypes)
+ VariantD(w http.ResponseWriter, r *http.Request, i1 BCustomTypesMap) (r1 BCustomTypesMap)
+
+ VariantE(w http.ResponseWriter, r *http.Request, i1 *Base) (r1 *Base)
+
+ VariantF(w http.ResponseWriter, r *http.Request, i1 []*Base) (r1 []*Base)
+
+ VariantG(w http.ResponseWriter, r *http.Request, i1 map[string]*Base) (r1 map[string]*Base)
+
+ VariantH(w http.ResponseWriter, r *http.Request, i1 Base, i2 *Base, i3 []*Base, i4 map[string]Base) (r1 Base, r2 *Base, r3 []*Base, r4 map[string]Base)
+}
diff --git a/example/nullable/service/vo.go b/example/nullable/service/vo.go
new file mode 100644
index 0000000..6dbdb0b
--- /dev/null
+++ b/example/nullable/service/vo.go
@@ -0,0 +1,56 @@
+package service
+
+type (
+ ACustomType string
+ ACustomTypes []ACustomType
+ ACustomTypesMap map[ACustomType]ACustomType
+ BCustomType string
+ BCustomTypes []BCustomType
+ BCustomTypesMap map[BCustomType]BCustomType
+)
+
+const (
+ ACustomTypeOne ACustomType = "one"
+ ACustomTypeTwo ACustomType = "two"
+)
+
+type Base struct {
+ A1 Nested `json:"a1"`
+ A2 *Nested `json:"a2,omitempty"`
+ A3 *Nested `json:"a3"`
+
+ B1 string `json:"b1"`
+ B2 *string `json:"b2,omitempty"`
+ B3 *string `json:"b3"`
+
+ C1 interface{} `json:"c1"`
+ C2 *interface{} `json:"c2,omitempty"`
+ C3 *interface{} `json:"c3"`
+
+ D1 ACustomType `json:"d1"`
+ D2 *ACustomType `json:"d2,omitempty"`
+ D3 *ACustomType `json:"d3"`
+
+ E1 ACustomTypes `json:"e1"`
+ E2 *ACustomTypes `json:"e2,omitempty"`
+ E3 *ACustomTypes `json:"e3"`
+
+ F1 ACustomTypesMap `json:"f1"`
+ F2 *ACustomTypesMap `json:"f2,omitempty"`
+ F3 *ACustomTypesMap `json:"f3"`
+
+ Two []Nested
+ Two1 [][]Nested
+ Two2 []map[string]Nested
+ Three []*Nested
+ Three1 []*string
+ Four map[string]Nested
+ Five map[string]*Nested
+ Six *struct {
+ Foo string
+ }
+}
+
+type Nested struct {
+ Foo string
+}
diff --git a/example/tsconfig.json b/example/tsconfig.json
new file mode 100644
index 0000000..b081b5e
--- /dev/null
+++ b/example/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "module": "ESNext",
+ "target": "ESNext",
+ "lib": ["es5", "es6", "dom"],
+ "strictNullChecks": true,
+ "noImplicitAny": false,
+ "strict": true,
+ }
+}
\ No newline at end of file