1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package kafka
- import (
- "net"
- "strings"
- )
- // TCP constructs an address with the network set to "tcp".
- func TCP(address ...string) net.Addr { return makeNetAddr("tcp", address) }
- func makeNetAddr(network string, addresses []string) net.Addr {
- switch len(addresses) {
- case 0:
- return nil // maybe panic instead?
- case 1:
- return makeAddr(network, addresses[0])
- default:
- return makeMultiAddr(network, addresses)
- }
- }
- func makeAddr(network, address string) net.Addr {
- host, port, _ := net.SplitHostPort(address)
- if port == "" {
- port = "9092"
- }
- if host == "" {
- host = address
- }
- return &networkAddress{
- network: network,
- address: net.JoinHostPort(host, port),
- }
- }
- func makeMultiAddr(network string, addresses []string) net.Addr {
- multi := make(multiAddr, len(addresses))
- for i, address := range addresses {
- multi[i] = makeAddr(network, address)
- }
- return multi
- }
- type networkAddress struct {
- network string
- address string
- }
- func (a *networkAddress) Network() string { return a.network }
- func (a *networkAddress) String() string { return a.address }
- type multiAddr []net.Addr
- func (m multiAddr) Network() string { return m.join(net.Addr.Network) }
- func (m multiAddr) String() string { return m.join(net.Addr.String) }
- func (m multiAddr) join(f func(net.Addr) string) string {
- switch len(m) {
- case 0:
- return ""
- case 1:
- return f(m[0])
- }
- s := make([]string, len(m))
- for i, a := range m {
- s[i] = f(a)
- }
- return strings.Join(s, ",")
- }
|