Fix issue with repeated links

This commit is contained in:
Ivan Danyliuk 2018-09-10 20:12:11 +03:00
parent 66831417cb
commit 0a792009b6
No known key found for this signature in database
GPG Key ID: 97ED33CE024E1DBF

View File

@ -80,12 +80,15 @@ func NewSimulator(data *graph.Graph) *Simulator {
sub := sim.network.Events().Subscribe(events) sub := sim.network.Events().Subscribe(events)
defer sub.Unsubscribe() defer sub.Unsubscribe()
count := 0
go func() { go func() {
log.Println("Connecting nodes...") log.Println("Connecting nodes...")
for _, link := range data.Links() { for _, link := range data.Links() {
err := sim.connectNodes(link.From, link.To) err := sim.connectNodes(link.From, link.To)
if err != nil && err != ErrLinkExists { if err != nil && err != ErrLinkExists {
log.Fatalf("[ERROR] Can't connect nodes %d and %d: %s", link.From, link.To, err) log.Fatalf("[ERROR] Can't connect nodes %d and %d: %s", link.From, link.To, err)
} else if err == nil {
count++
} }
} }
}() }()
@ -93,7 +96,7 @@ func NewSimulator(data *graph.Graph) *Simulator {
// wait for all nodes to establish connections // wait for all nodes to establish connections
var connected int var connected int
var subErr error var subErr error
for connected < len(data.Links()) && subErr == nil { for connected < count && subErr == nil {
select { select {
case event := <-events: case event := <-events:
if event.Type == simulations.EventTypeConn { if event.Type == simulations.EventTypeConn {