Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion p2p/simulations/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ func NewEvent(v interface{}) *Event {
switch v := v.(type) {
case *Node:
event.Type = EventTypeNode
event.Node = v
node := *v
event.Node = &node
case *Conn:
event.Type = EventTypeConn
conn := *v
Expand Down
15 changes: 10 additions & 5 deletions p2p/simulations/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,6 @@ func (net *Network) Start(id enode.ID) error {
// snapshots
func (net *Network) startWithSnapshots(id enode.ID, snapshots map[string][]byte) error {
net.lock.Lock()
defer net.lock.Unlock()

node := net.getNode(id)
if node == nil {
Expand All @@ -184,8 +183,10 @@ func (net *Network) startWithSnapshots(id enode.ID, snapshots map[string][]byte)
}
node.Up = true
log.Info("Started node", "id", id)
ev := NewEvent(node)
net.lock.Unlock()

net.events.Send(NewEvent(node))
net.events.Send(ev)

// subscribe to peer events
client, err := node.Client()
Expand All @@ -209,13 +210,14 @@ func (net *Network) watchPeerEvents(id enode.ID, events chan *p2p.PeerEvent, sub

// assume the node is now down
net.lock.Lock()
defer net.lock.Unlock()
node := net.getNode(id)
if node == nil {
return
}
node.Up = false
net.events.Send(NewEvent(node))
ev := NewEvent(node)
net.lock.Unlock()
net.events.Send(ev)
}()
for {
select {
Expand Down Expand Up @@ -270,7 +272,10 @@ func (net *Network) Stop(id enode.ID) error {
return err
}
log.Info("Stopped node", "id", id, "err", err)
net.events.Send(ControlEvent(node))
net.lock.Lock()
ev := ControlEvent(node)
net.lock.Unlock()
net.events.Send(ev)
return nil
}

Expand Down