• Juan Batiz-Benet's avatar
    New Multiaddr interface · c90ef447
    Juan Batiz-Benet authored
    This commit changes the struct to a new Multiaddr interface:
    
    ```Go
    type Multiaddr interface {
      Equal(Multiaddr) bool
      Bytes() []byte
      String() string
      Protocols() []*Protocol
      Encapsulate(Multiaddr) Multiaddr
      Decapsulate(Multiaddr) Multiaddr
    }
    ```
    
    This means a few things have changed:
    
    - use Multiaddr interface, struct not exported
    - Bytes returns a copy of the internal bytes
    - Some methods no longer return errors (catch errors in NewMultiaddr)
      - String (panics if malformed)
      - Protocols (panics if malformed)
      - Decapsulate (no-op if not prefix)
    - Moved net-specific functions to package
      - Multiaddr.DialArgs() -> DialArgs(Multiaddr)
      - Multiaddr.IsThinWaist() -> IsThinWaist(Multiaddr)
    
    cc @whyrusleeping @perfmode
    c90ef447
multiaddr.go 2.62 KB