Browse Source

review feedback

pull/241/head
Jeromy 7 years ago
parent
commit
c937b88e45
  1. 18
      libp2p.go

18
libp2p.go

@ -20,6 +20,7 @@ import (
yamux "github.com/whyrusleeping/go-smux-yamux"
)
// Config describes a set of settings for a libp2p node
type Config struct {
Transports []transport.Transport
Muxer mux.Transport
@ -30,11 +31,18 @@ type Config struct {
Reporter metrics.Reporter
}
func Construct(ctx context.Context, cfg *Config) (host.Host, error) {
func New(ctx context.Context) (host.Host, error) {
return NewWithCfg(ctx, DefaultConfig())
}
// Construct instantiates a libp2p host using information from the given
// config. `nil` may be passed to use default options.
func NewWithCfg(ctx context.Context, cfg *Config) (host.Host, error) {
if cfg == nil {
cfg = DefaultConfig()
}
// If no key was given, generate a random 2048 bit RSA key
if cfg.PeerKey == nil {
priv, _, err := crypto.GenerateKeyPairWithReader(crypto.RSA, 2048, rand.Reader)
if err != nil {
@ -49,6 +57,7 @@ func Construct(ctx context.Context, cfg *Config) (host.Host, error) {
return nil, err
}
// Create a new blank peerstore if none was passed in
ps := cfg.Peerstore
if ps == nil {
ps = pstore.NewPeerstore()
@ -70,14 +79,17 @@ func Construct(ctx context.Context, cfg *Config) (host.Host, error) {
func DefaultMuxer() mux.Transport {
// Set up stream multiplexer
tpt := msmux.NewBlankTransport()
// By default, support yamux and multiplex
tpt.AddTransport("/yamux/1.0.0", yamux.DefaultTransport)
tpt.AddTransport("/mplex/6.3.0", mplex.DefaultTransport)
return tpt
}
func DefaultConfig() *Config {
// Create a multiaddress
addr, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/0")
// Create a multiaddress that listens on a random port on all interfaces
addr, err := ma.NewMultiaddr("/ip4/0.0.0.0/tcp/0")
if err != nil {
panic(err)
}

Loading…
Cancel
Save