gotsrpc/example/time/service/gorpc_gen.go
2022-08-17 08:48:21 +02:00

107 lines
2.4 KiB
Go

// 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
}
ServiceTimeRequest struct {
V time.Time
}
ServiceTimeResponse struct {
RetTime_0 time.Time
}
ServiceTimeStructRequest struct {
V TimeStruct
}
ServiceTimeStructResponse struct {
RetTimeStruct_0 TimeStruct
}
)
func init() {
gob.Register(ServiceTimeRequest{})
gob.Register(ServiceTimeResponse{})
gob.Register(ServiceTimeStructRequest{})
gob.Register(ServiceTimeStructResponse{})
}
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 "ServiceTimeRequest":
req := request.(ServiceTimeRequest)
retTime_0 := p.service.Time(req.V)
response = ServiceTimeResponse{RetTime_0: retTime_0}
case "ServiceTimeStructRequest":
req := request.(ServiceTimeStructRequest)
retTimeStruct_0 := p.service.TimeStruct(req.V)
response = ServiceTimeStructResponse{RetTimeStruct_0: retTimeStruct_0}
default:
fmt.Println("Unknown request type", reflect.TypeOf(request).String())
}
if p.callStatsHandler != nil {
p.callStatsHandler(&gotsrpc.CallStats{
Func: funcName,
Package: "github.com/foomo/gotsrpc/v2/example/time/service",
Service: "Service",
Execution: time.Since(start),
})
}
return
}