add endpoint option in grpc server (#1488)

pull/1492/head
letian 3 years ago committed by GitHub
parent 039ce62778
commit db2122860d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      transport/grpc/server.go
  2. 9
      transport/grpc/server_test.go

@ -89,6 +89,13 @@ func Options(opts ...grpc.ServerOption) ServerOption {
} }
} }
// Endpoint with server endpoint.
func Endpoint(endpoint *url.URL) ServerOption {
return func(o *Server) {
o.endpoint = endpoint
}
}
// Server is a gRPC server wrapper. // Server is a gRPC server wrapper.
type Server struct { type Server struct {
*grpc.Server *grpc.Server
@ -151,6 +158,9 @@ func NewServer(opts ...ServerOption) *Server {
// grpc://127.0.0.1:9000?isSecure=false // grpc://127.0.0.1:9000?isSecure=false
func (s *Server) Endpoint() (*url.URL, error) { func (s *Server) Endpoint() (*url.URL, error) {
s.once.Do(func() { s.once.Do(func() {
if s.endpoint != nil {
return
}
lis, err := net.Listen(s.network, s.address) lis, err := net.Listen(s.network, s.address)
if err != nil { if err != nil {
s.err = err s.err = err

@ -82,6 +82,15 @@ func TestMiddleware(t *testing.T) {
assert.Equal(t, v, o.middleware) assert.Equal(t, v, o.middleware)
} }
func TestEndpoint(t *testing.T) {
u, err := url.Parse("grpc://hello/world")
assert.NoError(t, err)
o := &Server{}
Endpoint(u)(o)
assert.Equal(t, "hello", o.endpoint.Host)
assert.Equal(t, "grpc", o.endpoint.Scheme)
}
type mockLogger struct { type mockLogger struct {
level log.Level level log.Level
key string key string

Loading…
Cancel
Save