tendermint/server/grpc_server.go

57 lines
1.0 KiB
Go
Raw Normal View History

2016-05-17 21:54:32 -07:00
package server
import (
"net"
"strings"
"google.golang.org/grpc"
. "github.com/tendermint/go-common"
"github.com/tendermint/tmsp/types"
)
// var maxNumberConnections = 2
type GRPCServer struct {
2016-10-28 12:06:40 -07:00
BaseService
2016-05-17 21:54:32 -07:00
proto string
addr string
listener net.Listener
server *grpc.Server
2016-05-17 21:54:32 -07:00
app types.TMSPApplicationServer
}
func NewGRPCServer(protoAddr string, app types.TMSPApplicationServer) (Service, error) {
parts := strings.SplitN(protoAddr, "://", 2)
proto, addr := parts[0], parts[1]
s := &GRPCServer{
proto: proto,
addr: addr,
listener: nil,
app: app,
}
2016-10-28 12:06:40 -07:00
s.BaseService = *NewBaseService(nil, "TMSPServer", s)
2016-05-17 21:54:32 -07:00
_, err := s.Start() // Just start it
return s, err
}
func (s *GRPCServer) OnStart() error {
2016-10-28 12:06:40 -07:00
s.BaseService.OnStart()
2016-05-17 21:54:32 -07:00
ln, err := net.Listen(s.proto, s.addr)
if err != nil {
return err
}
s.listener = ln
s.server = grpc.NewServer()
types.RegisterTMSPApplicationServer(s.server, s.app)
go s.server.Serve(s.listener)
2016-05-17 21:54:32 -07:00
return nil
}
func (s *GRPCServer) OnStop() {
2016-10-28 12:06:40 -07:00
s.BaseService.OnStop()
s.server.Stop()
2016-05-17 21:54:32 -07:00
}