github.com/cosmos/cosmos-sdk@v0.50.10/client/grpc/node/service.go (about)

     1  package node
     2  
     3  import (
     4  	context "context"
     5  
     6  	gogogrpc "github.com/cosmos/gogoproto/grpc"
     7  	"github.com/grpc-ecosystem/grpc-gateway/runtime"
     8  
     9  	"github.com/cosmos/cosmos-sdk/client"
    10  	"github.com/cosmos/cosmos-sdk/server/config"
    11  	sdk "github.com/cosmos/cosmos-sdk/types"
    12  )
    13  
    14  // RegisterNodeService registers the node gRPC service on the provided gRPC router.
    15  func RegisterNodeService(clientCtx client.Context, server gogogrpc.Server, cfg config.Config) {
    16  	RegisterServiceServer(server, NewQueryServer(clientCtx, cfg))
    17  }
    18  
    19  // RegisterGRPCGatewayRoutes mounts the node gRPC service's GRPC-gateway routes
    20  // on the given mux object.
    21  func RegisterGRPCGatewayRoutes(clientConn gogogrpc.ClientConn, mux *runtime.ServeMux) {
    22  	_ = RegisterServiceHandlerClient(context.Background(), mux, NewServiceClient(clientConn))
    23  }
    24  
    25  var _ ServiceServer = queryServer{}
    26  
    27  type queryServer struct {
    28  	clientCtx client.Context
    29  	cfg       config.Config
    30  }
    31  
    32  func NewQueryServer(clientCtx client.Context, cfg config.Config) ServiceServer {
    33  	return queryServer{
    34  		clientCtx: clientCtx,
    35  		cfg:       cfg,
    36  	}
    37  }
    38  
    39  func (s queryServer) Config(ctx context.Context, _ *ConfigRequest) (*ConfigResponse, error) {
    40  	sdkCtx := sdk.UnwrapSDKContext(ctx)
    41  
    42  	return &ConfigResponse{
    43  		MinimumGasPrice:   sdkCtx.MinGasPrices().String(),
    44  		PruningKeepRecent: s.cfg.PruningKeepRecent,
    45  		PruningInterval:   s.cfg.PruningInterval,
    46  		HaltHeight:        s.cfg.HaltHeight,
    47  	}, nil
    48  }
    49  
    50  func (s queryServer) Status(ctx context.Context, _ *StatusRequest) (*StatusResponse, error) {
    51  	sdkCtx := sdk.UnwrapSDKContext(ctx)
    52  
    53  	blockTime := sdkCtx.BlockTime()
    54  
    55  	return &StatusResponse{
    56  		// TODO: Get earliest version from store.
    57  		//
    58  		// Ref: ...
    59  		// EarliestStoreHeight: sdkCtx.MultiStore(),
    60  		Height:        uint64(sdkCtx.BlockHeight()),
    61  		Timestamp:     &blockTime,
    62  		AppHash:       sdkCtx.BlockHeader().AppHash,
    63  		ValidatorHash: sdkCtx.BlockHeader().NextValidatorsHash,
    64  	}, nil
    65  }