tendermint/server/grpc_server.go

61 lines
1.3 KiB
Go
Raw Normal View History

2016-05-18 00:54:32 -04:00
package server
import (
"net"
"strings"
"google.golang.org/grpc"
2017-01-12 15:47:55 -05:00
"github.com/tendermint/abci/types"
2017-04-21 18:25:13 -04:00
cmn "github.com/tendermint/tmlibs/common"
2016-05-18 00:54:32 -04:00
)
// var maxNumberConnections = 2
2017-05-09 12:40:18 +02:00
//GRPCServer is used to set the protocol and address for gRPC.
2016-05-18 00:54:32 -04:00
type GRPCServer struct {
2017-01-23 20:26:17 -08:00
cmn.BaseService
2016-05-18 00:54:32 -04:00
proto string
addr string
listener net.Listener
server *grpc.Server
2016-05-18 00:54:32 -04:00
2017-01-12 15:47:55 -05:00
app types.ABCIApplicationServer
2016-05-18 00:54:32 -04:00
}
2017-05-01 22:53:51 +07:00
//NewGRPCServer allows setting up a new gRPC ABCI server.
2017-01-23 20:26:17 -08:00
func NewGRPCServer(protoAddr string, app types.ABCIApplicationServer) (cmn.Service, error) {
2016-05-18 00:54:32 -04:00
parts := strings.SplitN(protoAddr, "://", 2)
proto, addr := parts[0], parts[1]
s := &GRPCServer{
proto: proto,
addr: addr,
listener: nil,
app: app,
}
2017-01-23 20:26:17 -08:00
s.BaseService = *cmn.NewBaseService(nil, "ABCIServer", s)
2016-05-18 00:54:32 -04:00
_, err := s.Start() // Just start it
return s, err
}
2017-05-09 12:40:18 +02:00
//Onstart registers a new gRPC service and tells that service to listen on the port that is set in NewGRPCServer.
2016-05-18 00:54:32 -04:00
func (s *GRPCServer) OnStart() error {
2016-10-28 12:06:40 -07:00
s.BaseService.OnStart()
2016-05-18 00:54:32 -04:00
ln, err := net.Listen(s.proto, s.addr)
if err != nil {
return err
}
s.listener = ln
s.server = grpc.NewServer()
2017-01-12 15:47:55 -05:00
types.RegisterABCIApplicationServer(s.server, s.app)
go s.server.Serve(s.listener)
2016-05-18 00:54:32 -04:00
return nil
}
2017-05-09 12:40:18 +02:00
//OnStop is called when a gRPC server is stopped.
2016-05-18 00:54:32 -04:00
func (s *GRPCServer) OnStop() {
2016-10-28 12:06:40 -07:00
s.BaseService.OnStop()
s.server.Stop()
2016-05-18 00:54:32 -04:00
}