github.com/gogf/gf/v2@v2.7.4/net/gsvc/gsvc_endpoint.go (about)

     1  // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
     2  //
     3  // This Source Code Form is subject to the terms of the MIT License.
     4  // If a copy of the MIT was not distributed with this file,
     5  // You can obtain one at https://github.com/gogf/gf.
     6  
     7  // Package gsvc provides service registry and discovery definition.
     8  package gsvc
     9  
    10  import (
    11  	"fmt"
    12  
    13  	"github.com/gogf/gf/v2/errors/gcode"
    14  	"github.com/gogf/gf/v2/errors/gerror"
    15  	"github.com/gogf/gf/v2/text/gstr"
    16  	"github.com/gogf/gf/v2/util/gconv"
    17  )
    18  
    19  // LocalEndpoint implements interface Endpoint.
    20  type LocalEndpoint struct {
    21  	host string // host can be either IPv4 or IPv6 address.
    22  	port int    // port is port as commonly known.
    23  }
    24  
    25  // NewEndpoint creates and returns an Endpoint from address string of pattern "host:port",
    26  // eg: "192.168.1.100:80".
    27  func NewEndpoint(address string) Endpoint {
    28  	array := gstr.SplitAndTrim(address, EndpointHostPortDelimiter)
    29  	if len(array) != 2 {
    30  		panic(gerror.NewCodef(
    31  			gcode.CodeInvalidParameter,
    32  			`invalid address "%s" for creating endpoint, endpoint address is like "ip:port"`,
    33  			address,
    34  		))
    35  	}
    36  	return &LocalEndpoint{
    37  		host: array[0],
    38  		port: gconv.Int(array[1]),
    39  	}
    40  }
    41  
    42  // Host returns the IPv4/IPv6 address of a service.
    43  func (e *LocalEndpoint) Host() string {
    44  	return e.host
    45  }
    46  
    47  // Port returns the port of a service.
    48  func (e *LocalEndpoint) Port() int {
    49  	return e.port
    50  }
    51  
    52  // String formats and returns the Endpoint as a string, like: 192.168.1.100:80.
    53  func (e *LocalEndpoint) String() string {
    54  	return fmt.Sprintf(`%s:%d`, e.host, e.port)
    55  }