@@ -117,7 +117,6 @@ type orbitDB struct {
117
117
118
118
// emitters
119
119
emitters struct {
120
- newPeer event.Emitter
121
120
newHeads event.Emitter
122
121
}
123
122
@@ -395,11 +394,6 @@ func newOrbitDB(ctx context.Context, is coreapi.CoreAPI, identity *idp.Identity,
395
394
messageMarshaler : options .MessageMarshaler ,
396
395
}
397
396
398
- odb .emitters .newPeer , err = eventBus .Emitter (new (stores.EventNewPeer ))
399
- if err != nil {
400
- return nil , errors .Wrap (err , "unable to create global emitter" )
401
- }
402
-
403
397
// set new heads as stateful, so newly subscriber can replay last event in case they missed it
404
398
odb .emitters .newHeads , err = eventBus .Emitter (new (EventExchangeHeads ), eventbus .Stateful )
405
399
if err != nil {
@@ -850,10 +844,23 @@ func (o *orbitDB) pubSubChanListener(ctx context.Context, store Store, topic ifa
850
844
return err
851
845
}
852
846
847
+ newPeerEmitter , err := store .EventBus ().Emitter (new (stores.EventNewPeer ))
848
+ if err != nil {
849
+ return fmt .Errorf ("unable to init emitter: %w" , err )
850
+ }
851
+
853
852
go func () {
853
+ defer newPeerEmitter .Close ()
854
+
854
855
for e := range chPeers {
855
856
switch evt := e .(type ) {
856
857
case * iface.EventPubSubJoin :
858
+ // notify store that we have a new peers
859
+ if err := newPeerEmitter .Emit (stores .NewEventNewPeer (evt .Peer )); err != nil {
860
+ o .logger .Error ("unable to emit event new peer" , zap .Error (err ))
861
+ }
862
+
863
+ // handle new peers
857
864
go o .onNewPeerJoined (ctx , evt .Peer , store )
858
865
o .logger .Debug (fmt .Sprintf ("peer %s joined from %s self is %s" , evt .Peer .String (), addr , o .PeerID ()))
859
866
@@ -912,10 +919,6 @@ func (o *orbitDB) onNewPeerJoined(ctx context.Context, p peer.ID, store Store) {
912
919
}
913
920
return
914
921
}
915
-
916
- if err := o .emitters .newPeer .Emit (stores .NewEventNewPeer (p )); err != nil {
917
- o .logger .Error ("unable emit NewPeer event" , zap .Error (err ))
918
- }
919
922
}
920
923
921
924
func (o * orbitDB ) exchangeHeads (ctx context.Context , p peer.ID , store Store ) error {
0 commit comments