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  }