Skip to content
This repository was archived by the owner on May 26, 2022. It is now read-only.

Commit f4a3833

Browse files
deprecate this repo (#63)
* deprecate this repo * release v0.4.0
1 parent ea7dd86 commit f4a3833

8 files changed

+383
-456
lines changed

README.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# DEPRECATION NOTICE
2+
3+
This package has moved into go-libp2p as a sub-package,
4+
`github.com/libp2p/go-libp2p/p2p/host/blank`.
5+
16
go-libp2p-blankhost
27
==================
38

blank.go

+12-221
Original file line numberDiff line numberDiff line change
@@ -1,241 +1,32 @@
1+
// Deprecated: This package has moved into go-libp2p as a sub-package, github.com/libp2p/go-libp2p/p2p/host/blank.
12
package blankhost
23

34
import (
4-
"context"
5-
"errors"
6-
"fmt"
7-
"io"
5+
blankhost "github.com/libp2p/go-libp2p/p2p/host/blank"
86

97
"github.com/libp2p/go-libp2p-core/connmgr"
108
"github.com/libp2p/go-libp2p-core/event"
11-
"github.com/libp2p/go-libp2p-core/host"
129
"github.com/libp2p/go-libp2p-core/network"
13-
"github.com/libp2p/go-libp2p-core/peer"
14-
"github.com/libp2p/go-libp2p-core/peerstore"
15-
"github.com/libp2p/go-libp2p-core/protocol"
16-
"github.com/libp2p/go-libp2p-core/record"
17-
18-
"github.com/libp2p/go-eventbus"
19-
20-
logging "github.com/ipfs/go-log/v2"
21-
22-
ma "github.com/multiformats/go-multiaddr"
23-
mstream "github.com/multiformats/go-multistream"
2410
)
2511

26-
var log = logging.Logger("blankhost")
27-
2812
// BlankHost is the thinnest implementation of the host.Host interface
29-
type BlankHost struct {
30-
n network.Network
31-
mux *mstream.MultistreamMuxer
32-
cmgr connmgr.ConnManager
33-
eventbus event.Bus
34-
emitters struct {
35-
evtLocalProtocolsUpdated event.Emitter
36-
}
37-
}
38-
39-
type config struct {
40-
cmgr connmgr.ConnManager
41-
eventBus event.Bus
42-
}
13+
// Deprecated: use github.com/libp2p/go-libp2p/p2p/host/blank.BlankHost instead.
14+
type BlankHost = blankhost.BlankHost
4315

44-
type Option = func(cfg *config)
16+
// Deprecated: use github.com/libp2p/go-libp2p/p2p/host/blank.Option instead.
17+
type Option = blankhost.Option
4518

19+
// Deprecated: use github.com/libp2p/go-libp2p/p2p/host/blank.WithConnectionManager instead.
4620
func WithConnectionManager(cmgr connmgr.ConnManager) Option {
47-
return func(cfg *config) {
48-
cfg.cmgr = cmgr
49-
}
21+
return blankhost.WithConnectionManager(cmgr)
5022
}
5123

24+
// Deprecated: use github.com/libp2p/go-libp2p/p2p/host/blank.WithEventBus instead.
5225
func WithEventBus(eventBus event.Bus) Option {
53-
return func(cfg *config) {
54-
cfg.eventBus = eventBus
55-
}
26+
return blankhost.WithEventBus(eventBus)
5627
}
5728

29+
// Deprecated: use github.com/libp2p/go-libp2p/p2p/host/blank.NewBlankHost instead.
5830
func NewBlankHost(n network.Network, options ...Option) *BlankHost {
59-
cfg := config{
60-
cmgr: &connmgr.NullConnMgr{},
61-
}
62-
for _, opt := range options {
63-
opt(&cfg)
64-
}
65-
66-
bh := &BlankHost{
67-
n: n,
68-
cmgr: cfg.cmgr,
69-
mux: mstream.NewMultistreamMuxer(),
70-
}
71-
if bh.eventbus == nil {
72-
bh.eventbus = eventbus.NewBus()
73-
}
74-
75-
// subscribe the connection manager to network notifications (has no effect with NullConnMgr)
76-
n.Notify(bh.cmgr.Notifee())
77-
78-
var err error
79-
if bh.emitters.evtLocalProtocolsUpdated, err = bh.eventbus.Emitter(&event.EvtLocalProtocolsUpdated{}); err != nil {
80-
return nil
81-
}
82-
evtPeerConnectednessChanged, err := bh.eventbus.Emitter(&event.EvtPeerConnectednessChanged{})
83-
if err != nil {
84-
return nil
85-
}
86-
n.Notify(newPeerConnectWatcher(evtPeerConnectednessChanged))
87-
88-
n.SetStreamHandler(bh.newStreamHandler)
89-
90-
// persist a signed peer record for self to the peerstore.
91-
if err := bh.initSignedRecord(); err != nil {
92-
log.Errorf("error creating blank host, err=%s", err)
93-
return nil
94-
}
95-
96-
return bh
97-
}
98-
99-
func (bh *BlankHost) initSignedRecord() error {
100-
cab, ok := peerstore.GetCertifiedAddrBook(bh.n.Peerstore())
101-
if !ok {
102-
log.Error("peerstore does not support signed records")
103-
return errors.New("peerstore does not support signed records")
104-
}
105-
rec := peer.PeerRecordFromAddrInfo(peer.AddrInfo{ID: bh.ID(), Addrs: bh.Addrs()})
106-
ev, err := record.Seal(rec, bh.Peerstore().PrivKey(bh.ID()))
107-
if err != nil {
108-
log.Errorf("failed to create signed record for self, err=%s", err)
109-
return fmt.Errorf("failed to create signed record for self, err=%s", err)
110-
}
111-
_, err = cab.ConsumePeerRecord(ev, peerstore.PermanentAddrTTL)
112-
if err != nil {
113-
log.Errorf("failed to persist signed record to peerstore,err=%s", err)
114-
return fmt.Errorf("failed to persist signed record for self, err=%s", err)
115-
}
116-
return err
117-
}
118-
119-
var _ host.Host = (*BlankHost)(nil)
120-
121-
func (bh *BlankHost) Addrs() []ma.Multiaddr {
122-
addrs, err := bh.n.InterfaceListenAddresses()
123-
if err != nil {
124-
log.Debug("error retrieving network interface addrs: ", err)
125-
return nil
126-
}
127-
128-
return addrs
129-
}
130-
131-
func (bh *BlankHost) Close() error {
132-
return bh.n.Close()
133-
}
134-
135-
func (bh *BlankHost) Connect(ctx context.Context, ai peer.AddrInfo) error {
136-
// absorb addresses into peerstore
137-
bh.Peerstore().AddAddrs(ai.ID, ai.Addrs, peerstore.TempAddrTTL)
138-
139-
cs := bh.n.ConnsToPeer(ai.ID)
140-
if len(cs) > 0 {
141-
return nil
142-
}
143-
144-
_, err := bh.Network().DialPeer(ctx, ai.ID)
145-
return err
146-
}
147-
148-
func (bh *BlankHost) Peerstore() peerstore.Peerstore {
149-
return bh.n.Peerstore()
150-
}
151-
152-
func (bh *BlankHost) ID() peer.ID {
153-
return bh.n.LocalPeer()
154-
}
155-
156-
func (bh *BlankHost) NewStream(ctx context.Context, p peer.ID, protos ...protocol.ID) (network.Stream, error) {
157-
s, err := bh.n.NewStream(ctx, p)
158-
if err != nil {
159-
return nil, err
160-
}
161-
162-
var protoStrs []string
163-
for _, pid := range protos {
164-
protoStrs = append(protoStrs, string(pid))
165-
}
166-
167-
selected, err := mstream.SelectOneOf(protoStrs, s)
168-
if err != nil {
169-
s.Reset()
170-
return nil, err
171-
}
172-
173-
selpid := protocol.ID(selected)
174-
s.SetProtocol(selpid)
175-
bh.Peerstore().AddProtocols(p, selected)
176-
177-
return s, nil
178-
}
179-
180-
func (bh *BlankHost) RemoveStreamHandler(pid protocol.ID) {
181-
bh.Mux().RemoveHandler(string(pid))
182-
bh.emitters.evtLocalProtocolsUpdated.Emit(event.EvtLocalProtocolsUpdated{
183-
Removed: []protocol.ID{pid},
184-
})
185-
}
186-
187-
func (bh *BlankHost) SetStreamHandler(pid protocol.ID, handler network.StreamHandler) {
188-
bh.Mux().AddHandler(string(pid), func(p string, rwc io.ReadWriteCloser) error {
189-
is := rwc.(network.Stream)
190-
is.SetProtocol(protocol.ID(p))
191-
handler(is)
192-
return nil
193-
})
194-
bh.emitters.evtLocalProtocolsUpdated.Emit(event.EvtLocalProtocolsUpdated{
195-
Added: []protocol.ID{pid},
196-
})
197-
}
198-
199-
func (bh *BlankHost) SetStreamHandlerMatch(pid protocol.ID, m func(string) bool, handler network.StreamHandler) {
200-
bh.Mux().AddHandlerWithFunc(string(pid), m, func(p string, rwc io.ReadWriteCloser) error {
201-
is := rwc.(network.Stream)
202-
is.SetProtocol(protocol.ID(p))
203-
handler(is)
204-
return nil
205-
})
206-
bh.emitters.evtLocalProtocolsUpdated.Emit(event.EvtLocalProtocolsUpdated{
207-
Added: []protocol.ID{pid},
208-
})
209-
}
210-
211-
// newStreamHandler is the remote-opened stream handler for network.Network
212-
func (bh *BlankHost) newStreamHandler(s network.Stream) {
213-
protoID, handle, err := bh.Mux().Negotiate(s)
214-
if err != nil {
215-
log.Infow("protocol negotiation failed", "error", err)
216-
s.Reset()
217-
return
218-
}
219-
220-
s.SetProtocol(protocol.ID(protoID))
221-
222-
go handle(protoID, s)
223-
}
224-
225-
// TODO: i'm not sure this really needs to be here
226-
func (bh *BlankHost) Mux() protocol.Switch {
227-
return bh.mux
228-
}
229-
230-
// TODO: also not sure this fits... Might be better ways around this (leaky abstractions)
231-
func (bh *BlankHost) Network() network.Network {
232-
return bh.n
233-
}
234-
235-
func (bh *BlankHost) ConnManager() connmgr.ConnManager {
236-
return bh.cmgr
237-
}
238-
239-
func (bh *BlankHost) EventBus() event.Bus {
240-
return bh.eventbus
31+
return blankhost.NewBlankHost(n, options...)
24132
}

codecov.yml

-3
This file was deleted.

go.mod

+18-66
Original file line numberDiff line numberDiff line change
@@ -3,89 +3,41 @@ module github.com/libp2p/go-libp2p-blankhost
33
go 1.17
44

55
require (
6-
github.com/ipfs/go-log/v2 v2.5.0
7-
github.com/libp2p/go-eventbus v0.2.1
8-
github.com/libp2p/go-libp2p-core v0.15.0
9-
github.com/libp2p/go-libp2p-swarm v0.10.0
10-
github.com/multiformats/go-multiaddr v0.5.0
11-
github.com/multiformats/go-multistream v0.2.1
12-
github.com/stretchr/testify v1.7.0
6+
github.com/ipfs/go-log/v2 v2.5.1 // indirect
7+
github.com/libp2p/go-eventbus v0.2.1 // indirect
8+
github.com/libp2p/go-libp2p v0.20.0
9+
github.com/libp2p/go-libp2p-core v0.16.1
10+
github.com/multiformats/go-multiaddr v0.5.0 // indirect
11+
github.com/multiformats/go-multistream v0.3.1 // indirect
1312
)
1413

1514
require (
16-
github.com/beorn7/perks v1.0.1 // indirect
17-
github.com/btcsuite/btcd v0.20.1-beta // indirect
18-
github.com/cespare/xxhash/v2 v2.1.1 // indirect
19-
github.com/cheekybits/genny v1.0.0 // indirect
20-
github.com/davecgh/go-spew v1.1.1 // indirect
21-
github.com/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018 // indirect
22-
github.com/francoispqt/gojay v1.2.13 // indirect
23-
github.com/fsnotify/fsnotify v1.4.9 // indirect
24-
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect
15+
github.com/btcsuite/btcd v0.22.1 // indirect
16+
github.com/btcsuite/btcd/btcec/v2 v2.1.3 // indirect
17+
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect
18+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
2519
github.com/gogo/protobuf v1.3.2 // indirect
26-
github.com/golang/protobuf v1.5.2 // indirect
27-
github.com/google/gopacket v1.1.19 // indirect
28-
github.com/ipfs/go-cid v0.0.7 // indirect
29-
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
30-
github.com/klauspost/compress v1.13.6 // indirect
31-
github.com/klauspost/cpuid/v2 v2.0.4 // indirect
20+
github.com/ipfs/go-cid v0.1.0 // indirect
21+
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
3222
github.com/libp2p/go-buffer-pool v0.0.2 // indirect
33-
github.com/libp2p/go-conn-security-multistream v0.3.0 // indirect
34-
github.com/libp2p/go-flow-metrics v0.0.3 // indirect
35-
github.com/libp2p/go-libp2p-peerstore v0.6.0 // indirect
36-
github.com/libp2p/go-libp2p-pnet v0.2.0 // indirect
37-
github.com/libp2p/go-libp2p-quic-transport v0.16.0 // indirect
38-
github.com/libp2p/go-libp2p-testing v0.7.0 // indirect
39-
github.com/libp2p/go-libp2p-tls v0.3.0 // indirect
40-
github.com/libp2p/go-libp2p-transport-upgrader v0.7.0 // indirect
41-
github.com/libp2p/go-libp2p-yamux v0.8.0 // indirect
42-
github.com/libp2p/go-msgio v0.0.6 // indirect
43-
github.com/libp2p/go-netroute v0.2.0 // indirect
4423
github.com/libp2p/go-openssl v0.0.7 // indirect
45-
github.com/libp2p/go-reuseport v0.1.0 // indirect
46-
github.com/libp2p/go-reuseport-transport v0.1.0 // indirect
47-
github.com/libp2p/go-stream-muxer-multistream v0.4.0 // indirect
48-
github.com/libp2p/go-tcp-transport v0.5.0 // indirect
49-
github.com/libp2p/go-yamux/v3 v3.0.1 // indirect
50-
github.com/lucas-clemente/quic-go v0.25.0 // indirect
51-
github.com/marten-seemann/qtls-go1-16 v0.1.4 // indirect
52-
github.com/marten-seemann/qtls-go1-17 v0.1.0 // indirect
53-
github.com/marten-seemann/qtls-go1-18 v0.1.0-beta.1 // indirect
54-
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
5524
github.com/mattn/go-isatty v0.0.14 // indirect
56-
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
57-
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
58-
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
5925
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 // indirect
6026
github.com/minio/sha256-simd v1.0.0 // indirect
6127
github.com/mr-tron/base58 v1.2.0 // indirect
6228
github.com/multiformats/go-base32 v0.0.3 // indirect
6329
github.com/multiformats/go-base36 v0.1.0 // indirect
64-
github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect
6530
github.com/multiformats/go-multibase v0.0.3 // indirect
6631
github.com/multiformats/go-multicodec v0.4.1 // indirect
67-
github.com/multiformats/go-multihash v0.0.15 // indirect
32+
github.com/multiformats/go-multihash v0.1.0 // indirect
6833
github.com/multiformats/go-varint v0.0.6 // indirect
69-
github.com/nxadm/tail v1.4.8 // indirect
70-
github.com/onsi/ginkgo v1.16.4 // indirect
71-
github.com/pmezard/go-difflib v1.0.0 // indirect
72-
github.com/prometheus/client_golang v1.10.0 // indirect
73-
github.com/prometheus/client_model v0.2.0 // indirect
74-
github.com/prometheus/common v0.18.0 // indirect
75-
github.com/prometheus/procfs v0.6.0 // indirect
7634
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect
77-
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 // indirect
35+
github.com/spaolacci/murmur3 v1.1.0 // indirect
7836
go.uber.org/atomic v1.7.0 // indirect
7937
go.uber.org/multierr v1.6.0 // indirect
8038
go.uber.org/zap v1.19.1 // indirect
81-
golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf // indirect
82-
golang.org/x/mod v0.4.2 // indirect
83-
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 // indirect
84-
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
85-
golang.org/x/tools v0.1.5 // indirect
86-
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
87-
google.golang.org/grpc v1.31.1 // indirect
88-
google.golang.org/protobuf v1.26.0 // indirect
89-
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
90-
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
39+
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect
40+
golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 // indirect
41+
gopkg.in/yaml.v2 v2.4.0 // indirect
42+
lukechampine.com/blake3 v1.1.6 // indirect
9143
)

0 commit comments

Comments
 (0)