wormhole-explorer/spy/grpc/server.go

39 lines
984 B
Go

package grpc
import (
"fmt"
"net"
"github.com/certusone/wormhole/node/pkg/common"
spyv1 "github.com/certusone/wormhole/node/pkg/proto/spy/v1"
"github.com/certusone/wormhole/node/pkg/supervisor"
"go.uber.org/zap"
"google.golang.org/grpc"
)
type Server struct {
Runnable supervisor.Runnable
srv *grpc.Server
}
// NewServer creates a GRPC server.
func NewServer(h *Handler, logger *zap.Logger, listenAddr string) (*Server, error) {
l, err := net.Listen("tcp", listenAddr)
if err != nil {
return nil, fmt.Errorf("failed to listen: %w", err)
}
logger.Info("spy server listening", zap.String("addr", l.Addr().String()))
grpcServer := common.NewInstrumentedGRPCServer(logger, common.GrpcLogDetailMinimal)
spyv1.RegisterSpyRPCServiceServer(grpcServer, h)
runnale := supervisor.GRPCServer(grpcServer, l, false)
return &Server{Runnable: runnale, srv: grpcServer}, nil
}
// Stop stops the GRPC server gracefully.
func (s *Server) Stop() {
s.srv.GracefulStop()
}