From 4cb3fd62e32393fc7cb533511cb1f85c8f934b48 Mon Sep 17 00:00:00 2001
From: Tony Chen <zhihui_chen@foxmail.com>
Date: Fri, 28 May 2021 15:30:55 +0800
Subject: [PATCH] rename Registry to Endpointer (#964)

---
 app.go                   |  2 +-
 transport/grpc/server.go |  4 ++--
 transport/http/server.go |  4 ++--
 transport/transport.go   | 10 +++++-----
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/app.go b/app.go
index 0d9e217f1..8658fad90 100644
--- a/app.go
+++ b/app.go
@@ -113,7 +113,7 @@ func (a *App) Stop() error {
 func buildInstance(o options) (*registry.ServiceInstance, error) {
 	if len(o.endpoints) == 0 {
 		for _, srv := range o.servers {
-			if r, ok := srv.(transport.Registry); ok {
+			if r, ok := srv.(transport.Endpointer); ok {
 				e, err := r.Endpoint()
 				if err != nil {
 					return nil, err
diff --git a/transport/grpc/server.go b/transport/grpc/server.go
index d1d08e2c5..18b9e4eca 100644
--- a/transport/grpc/server.go
+++ b/transport/grpc/server.go
@@ -20,7 +20,7 @@ import (
 )
 
 var _ transport.Server = (*Server)(nil)
-var _ transport.Registry = (*Server)(nil)
+var _ transport.Endpointer = (*Server)(nil)
 
 // ServerOption is gRPC server option.
 type ServerOption func(o *Server)
@@ -117,7 +117,7 @@ func NewServer(opts ...ServerOption) *Server {
 // examples:
 //   grpc://127.0.0.1:9000?isSecure=false
 func (s *Server) Endpoint() (string, error) {
-	if strings.HasSuffix(s.address, ":0") {
+	if s.lis == nil && strings.HasSuffix(s.address, ":0") {
 		lis, err := net.Listen(s.network, s.address)
 		if err != nil {
 			return "", err
diff --git a/transport/http/server.go b/transport/http/server.go
index 09faba865..4c97a8033 100644
--- a/transport/http/server.go
+++ b/transport/http/server.go
@@ -17,7 +17,7 @@ import (
 )
 
 var _ transport.Server = (*Server)(nil)
-var _ transport.Registry = (*Server)(nil)
+var _ transport.Endpointer = (*Server)(nil)
 
 // ServerOption is HTTP server option.
 type ServerOption func(*Server)
@@ -105,7 +105,7 @@ func (s *Server) ServeHTTP(res http.ResponseWriter, req *http.Request) {
 // examples:
 //   http://127.0.0.1:8000?isSecure=false
 func (s *Server) Endpoint() (string, error) {
-	if strings.HasSuffix(s.address, ":0") {
+	if s.lis == nil && strings.HasSuffix(s.address, ":0") {
 		lis, err := net.Listen(s.network, s.address)
 		if err != nil {
 			return "", err
diff --git a/transport/transport.go b/transport/transport.go
index 5624e1f2a..fb91b5c7e 100644
--- a/transport/transport.go
+++ b/transport/transport.go
@@ -10,17 +10,17 @@ import (
 	_ "github.com/go-kratos/kratos/v2/encoding/yaml"
 )
 
-// Registry is registry endpoint.
-type Registry interface {
-	Endpoint() (string, error)
-}
-
 // Server is transport server.
 type Server interface {
 	Start() error
 	Stop() error
 }
 
+// Endpointer is registry endpoint.
+type Endpointer interface {
+	Endpoint() (string, error)
+}
+
 // Transport is transport context value.
 type Transport struct {
 	Kind Kind