github.com/ari-anchor/sei-tendermint@v0.0.0-20230519144642-dc826b7b56bb/rpc/jsonrpc/test/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 stdlog "log" 7 "net/http" 8 "os" 9 "os/signal" 10 "syscall" 11 12 "github.com/ari-anchor/sei-tendermint/libs/log" 13 rpcserver "github.com/ari-anchor/sei-tendermint/rpc/jsonrpc/server" 14 ) 15 16 var routes = map[string]*rpcserver.RPCFunc{ 17 "hello_world": rpcserver.NewRPCFunc(HelloWorld), 18 } 19 20 func HelloWorld(ctx context.Context, name string, num int) (Result, error) { 21 return Result{fmt.Sprintf("hi %s %d", name, num)}, nil 22 } 23 24 type Result struct { 25 Result string 26 } 27 28 func main() { 29 mux := http.NewServeMux() 30 31 logger, err := log.NewDefaultLogger(log.LogFormatPlain, log.LogLevelInfo) 32 if err != nil { 33 stdlog.Fatalf("configuring logger: %v", err) 34 } 35 36 ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) 37 defer cancel() 38 39 rpcserver.RegisterRPCFuncs(mux, routes, logger) 40 config := rpcserver.DefaultConfig() 41 listener, err := rpcserver.Listen("tcp://127.0.0.1:8008", config.MaxOpenConnections) 42 if err != nil { 43 stdlog.Fatalf("rpc listening: %v", err) 44 } 45 46 if err = rpcserver.Serve(ctx, listener, mux, logger, config); err != nil { 47 logger.Error("rpc serve: %v", err) 48 } 49 }