OSDN Git Service

Merge pull request #201 from Bytom/v0.1
[bytom/vapor.git] / vendor / github.com / multiformats / go-multiaddr-net / registry.go
diff --git a/vendor/github.com/multiformats/go-multiaddr-net/registry.go b/vendor/github.com/multiformats/go-multiaddr-net/registry.go
deleted file mode 100644 (file)
index fc6561c..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-package manet
-
-import (
-       "fmt"
-       "net"
-       "sync"
-
-       ma "github.com/multiformats/go-multiaddr"
-)
-
-// FromNetAddrFunc is a generic function which converts a net.Addr to Multiaddress
-type FromNetAddrFunc func(a net.Addr) (ma.Multiaddr, error)
-
-// ToNetAddrFunc is a generic function which converts a Multiaddress to net.Addr
-type ToNetAddrFunc func(ma ma.Multiaddr) (net.Addr, error)
-
-var defaultCodecs = NewCodecMap()
-
-func init() {
-       defaultCodecs.RegisterFromNetAddr(parseTCPNetAddr, "tcp", "tcp4", "tcp6")
-       defaultCodecs.RegisterFromNetAddr(parseUDPNetAddr, "udp", "udp4", "udp6")
-       defaultCodecs.RegisterFromNetAddr(parseIPNetAddr, "ip", "ip4", "ip6")
-       defaultCodecs.RegisterFromNetAddr(parseIPPlusNetAddr, "ip+net")
-       defaultCodecs.RegisterFromNetAddr(parseUnixNetAddr, "unix")
-
-       defaultCodecs.RegisterToNetAddr(parseBasicNetMaddr, "tcp", "udp", "ip6", "ip4", "unix")
-}
-
-// CodecMap holds a map of NetCodecs indexed by their Protocol ID
-// along with parsers for the addresses they use.
-// It is used to keep a list of supported network address codecs (protocols
-// which addresses can be converted to and from multiaddresses).
-type CodecMap struct {
-       codecs       map[string]*NetCodec
-       addrParsers  map[string]FromNetAddrFunc
-       maddrParsers map[string]ToNetAddrFunc
-       lk           sync.Mutex
-}
-
-// NewCodecMap initializes and returns a CodecMap object.
-func NewCodecMap() *CodecMap {
-       return &CodecMap{
-               addrParsers:  make(map[string]FromNetAddrFunc),
-               maddrParsers: make(map[string]ToNetAddrFunc),
-       }
-}
-
-// NetCodec is used to identify a network codec, that is, a network type for
-// which we are able to translate multiaddresses into standard Go net.Addr
-// and back.
-//
-// Deprecated: Unfortunately, these mappings aren't one to one. This abstraction
-// assumes that multiple "networks" can map to a single multiaddr protocol but
-// not the reverse. For example, this abstraction supports `tcp6, tcp4, tcp ->
-// /tcp/` really well but doesn't support `ip -> {/ip4/, /ip6/}`.
-//
-// Please use `RegisterFromNetAddr` and `RegisterToNetAddr` directly.
-type NetCodec struct {
-       // NetAddrNetworks is an array of strings that may be returned
-       // by net.Addr.Network() calls on addresses belonging to this type
-       NetAddrNetworks []string
-
-       // ProtocolName is the string value for Multiaddr address keys
-       ProtocolName string
-
-       // ParseNetAddr parses a net.Addr belonging to this type into a multiaddr
-       ParseNetAddr FromNetAddrFunc
-
-       // ConvertMultiaddr converts a multiaddr of this type back into a net.Addr
-       ConvertMultiaddr ToNetAddrFunc
-
-       // Protocol returns the multiaddr protocol struct for this type
-       Protocol ma.Protocol
-}
-
-// RegisterNetCodec adds a new NetCodec to the default codecs.
-func RegisterNetCodec(a *NetCodec) {
-       defaultCodecs.RegisterNetCodec(a)
-}
-
-// RegisterNetCodec adds a new NetCodec to the CodecMap. This function is
-// thread safe.
-func (cm *CodecMap) RegisterNetCodec(a *NetCodec) {
-       cm.lk.Lock()
-       defer cm.lk.Unlock()
-       for _, n := range a.NetAddrNetworks {
-               cm.addrParsers[n] = a.ParseNetAddr
-       }
-
-       cm.maddrParsers[a.ProtocolName] = a.ConvertMultiaddr
-}
-
-// RegisterFromNetAddr registers a conversion from net.Addr instances to multiaddrs
-func (cm *CodecMap) RegisterFromNetAddr(from FromNetAddrFunc, networks ...string) {
-       cm.lk.Lock()
-       defer cm.lk.Unlock()
-
-       for _, n := range networks {
-               cm.addrParsers[n] = from
-       }
-}
-
-// RegisterToNetAddr registers a conversion from multiaddrs to net.Addr instances
-func (cm *CodecMap) RegisterToNetAddr(to ToNetAddrFunc, protocols ...string) {
-       cm.lk.Lock()
-       defer cm.lk.Unlock()
-
-       for _, p := range protocols {
-               cm.maddrParsers[p] = to
-       }
-}
-
-func (cm *CodecMap) getAddrParser(net string) (FromNetAddrFunc, error) {
-       cm.lk.Lock()
-       defer cm.lk.Unlock()
-
-       parser, ok := cm.addrParsers[net]
-       if !ok {
-               return nil, fmt.Errorf("unknown network %v", net)
-       }
-       return parser, nil
-}
-
-func (cm *CodecMap) getMaddrParser(name string) (ToNetAddrFunc, error) {
-       cm.lk.Lock()
-       defer cm.lk.Unlock()
-       p, ok := cm.maddrParsers[name]
-       if !ok {
-               return nil, fmt.Errorf("network not supported: %s", name)
-       }
-
-       return p, nil
-}