Selaa lähdekoodia

Rewrite to WaitGroup.Go

tags/v2.1.10^2^2
9seconds 2 kuukautta sitten
vanhempi
commit
0440ccf4ff

+ 27
- 54
events/multi_observer.go Näytä tiedosto

12
 
12
 
13
 func (m multiObserver) EventStart(evt mtglib.EventStart) {
13
 func (m multiObserver) EventStart(evt mtglib.EventStart) {
14
 	wg := &sync.WaitGroup{}
14
 	wg := &sync.WaitGroup{}
15
-	wg.Add(len(m.observers))
16
 
15
 
17
 	for _, v := range m.observers {
16
 	for _, v := range m.observers {
18
-		go func(obs Observer) {
19
-			defer wg.Done()
20
-
21
-			obs.EventStart(evt)
22
-		}(v)
17
+		wg.Go(func() {
18
+			v.EventStart(evt)
19
+		})
23
 	}
20
 	}
24
 
21
 
25
 	wg.Wait()
22
 	wg.Wait()
27
 
24
 
28
 func (m multiObserver) EventConnectedToDC(evt mtglib.EventConnectedToDC) {
25
 func (m multiObserver) EventConnectedToDC(evt mtglib.EventConnectedToDC) {
29
 	wg := &sync.WaitGroup{}
26
 	wg := &sync.WaitGroup{}
30
-	wg.Add(len(m.observers))
31
 
27
 
32
 	for _, v := range m.observers {
28
 	for _, v := range m.observers {
33
-		go func(obs Observer) {
34
-			defer wg.Done()
35
-
36
-			obs.EventConnectedToDC(evt)
37
-		}(v)
29
+		wg.Go(func() {
30
+			v.EventConnectedToDC(evt)
31
+		})
38
 	}
32
 	}
39
 
33
 
40
 	wg.Wait()
34
 	wg.Wait()
42
 
36
 
43
 func (m multiObserver) EventDomainFronting(evt mtglib.EventDomainFronting) {
37
 func (m multiObserver) EventDomainFronting(evt mtglib.EventDomainFronting) {
44
 	wg := &sync.WaitGroup{}
38
 	wg := &sync.WaitGroup{}
45
-	wg.Add(len(m.observers))
46
 
39
 
47
 	for _, v := range m.observers {
40
 	for _, v := range m.observers {
48
-		go func(obs Observer) {
49
-			defer wg.Done()
50
-
51
-			obs.EventDomainFronting(evt)
52
-		}(v)
41
+		wg.Go(func() {
42
+			v.EventDomainFronting(evt)
43
+		})
53
 	}
44
 	}
54
 
45
 
55
 	wg.Wait()
46
 	wg.Wait()
57
 
48
 
58
 func (m multiObserver) EventTraffic(evt mtglib.EventTraffic) {
49
 func (m multiObserver) EventTraffic(evt mtglib.EventTraffic) {
59
 	wg := &sync.WaitGroup{}
50
 	wg := &sync.WaitGroup{}
60
-	wg.Add(len(m.observers))
61
 
51
 
62
 	for _, v := range m.observers {
52
 	for _, v := range m.observers {
63
-		go func(obs Observer) {
64
-			defer wg.Done()
65
-
66
-			obs.EventTraffic(evt)
67
-		}(v)
53
+		wg.Go(func() {
54
+			v.EventTraffic(evt)
55
+		})
68
 	}
56
 	}
69
 
57
 
70
 	wg.Wait()
58
 	wg.Wait()
72
 
60
 
73
 func (m multiObserver) EventFinish(evt mtglib.EventFinish) {
61
 func (m multiObserver) EventFinish(evt mtglib.EventFinish) {
74
 	wg := &sync.WaitGroup{}
62
 	wg := &sync.WaitGroup{}
75
-	wg.Add(len(m.observers))
76
 
63
 
77
 	for _, v := range m.observers {
64
 	for _, v := range m.observers {
78
-		go func(obs Observer) {
79
-			defer wg.Done()
80
-
81
-			obs.EventFinish(evt)
82
-		}(v)
65
+		wg.Go(func() {
66
+			v.EventFinish(evt)
67
+		})
83
 	}
68
 	}
84
 
69
 
85
 	wg.Wait()
70
 	wg.Wait()
87
 
72
 
88
 func (m multiObserver) EventConcurrencyLimited(evt mtglib.EventConcurrencyLimited) {
73
 func (m multiObserver) EventConcurrencyLimited(evt mtglib.EventConcurrencyLimited) {
89
 	wg := &sync.WaitGroup{}
74
 	wg := &sync.WaitGroup{}
90
-	wg.Add(len(m.observers))
91
 
75
 
92
 	for _, v := range m.observers {
76
 	for _, v := range m.observers {
93
-		go func(obs Observer) {
94
-			defer wg.Done()
95
-
96
-			obs.EventConcurrencyLimited(evt)
97
-		}(v)
77
+		wg.Go(func() {
78
+			v.EventConcurrencyLimited(evt)
79
+		})
98
 	}
80
 	}
99
 
81
 
100
 	wg.Wait()
82
 	wg.Wait()
102
 
84
 
103
 func (m multiObserver) EventIPBlocklisted(evt mtglib.EventIPBlocklisted) {
85
 func (m multiObserver) EventIPBlocklisted(evt mtglib.EventIPBlocklisted) {
104
 	wg := &sync.WaitGroup{}
86
 	wg := &sync.WaitGroup{}
105
-	wg.Add(len(m.observers))
106
 
87
 
107
 	for _, v := range m.observers {
88
 	for _, v := range m.observers {
108
-		go func(obs Observer) {
109
-			defer wg.Done()
110
-
111
-			obs.EventIPBlocklisted(evt)
112
-		}(v)
89
+		wg.Go(func() {
90
+			v.EventIPBlocklisted(evt)
91
+		})
113
 	}
92
 	}
114
 
93
 
115
 	wg.Wait()
94
 	wg.Wait()
117
 
96
 
118
 func (m multiObserver) EventReplayAttack(evt mtglib.EventReplayAttack) {
97
 func (m multiObserver) EventReplayAttack(evt mtglib.EventReplayAttack) {
119
 	wg := &sync.WaitGroup{}
98
 	wg := &sync.WaitGroup{}
120
-	wg.Add(len(m.observers))
121
 
99
 
122
 	for _, v := range m.observers {
100
 	for _, v := range m.observers {
123
-		go func(obs Observer) {
124
-			defer wg.Done()
125
-
126
-			obs.EventReplayAttack(evt)
127
-		}(v)
101
+		wg.Go(func() {
102
+			v.EventReplayAttack(evt)
103
+		})
128
 	}
104
 	}
129
 
105
 
130
 	wg.Wait()
106
 	wg.Wait()
132
 
108
 
133
 func (m multiObserver) EventIPListSize(evt mtglib.EventIPListSize) {
109
 func (m multiObserver) EventIPListSize(evt mtglib.EventIPListSize) {
134
 	wg := &sync.WaitGroup{}
110
 	wg := &sync.WaitGroup{}
135
-	wg.Add(len(m.observers))
136
 
111
 
137
 	for _, v := range m.observers {
112
 	for _, v := range m.observers {
138
-		go func(obs Observer) {
139
-			defer wg.Done()
140
-
141
-			obs.EventIPListSize(evt)
142
-		}(v)
113
+		wg.Go(func() {
114
+			v.EventIPListSize(evt)
115
+		})
143
 	}
116
 	}
144
 
117
 
145
 	wg.Wait()
118
 	wg.Wait()

+ 4
- 10
internal/cli/access.go Näytä tiedosto

61
 	}
61
 	}
62
 
62
 
63
 	wg := &sync.WaitGroup{}
63
 	wg := &sync.WaitGroup{}
64
-	wg.Add(2)
65
-
66
-	go func() {
67
-		defer wg.Done()
68
 
64
 
65
+	wg.Go(func() {
69
 		ip := a.PublicIPv4
66
 		ip := a.PublicIPv4
70
 		if ip == nil {
67
 		if ip == nil {
71
 			ip = a.getIP(ntw, "tcp4")
68
 			ip = a.getIP(ntw, "tcp4")
76
 		}
73
 		}
77
 
74
 
78
 		resp.IPv4 = a.makeURLs(conf, ip)
75
 		resp.IPv4 = a.makeURLs(conf, ip)
79
-	}()
80
-
81
-	go func() {
82
-		defer wg.Done()
83
-
76
+	})
77
+	wg.Go(func() {
84
 		ip := a.PublicIPv6
78
 		ip := a.PublicIPv6
85
 		if ip == nil {
79
 		if ip == nil {
86
 			ip = a.getIP(ntw, "tcp6")
80
 			ip = a.getIP(ntw, "tcp6")
91
 		}
85
 		}
92
 
86
 
93
 		resp.IPv6 = a.makeURLs(conf, ip)
87
 		resp.IPv6 = a.makeURLs(conf, ip)
94
-	}()
88
+	})
95
 
89
 
96
 	wg.Wait()
90
 	wg.Wait()
97
 
91
 

+ 4
- 7
ipblocklist/firehol.go Näytä tiedosto

112
 	defer cancel()
112
 	defer cancel()
113
 
113
 
114
 	wg := &sync.WaitGroup{}
114
 	wg := &sync.WaitGroup{}
115
-	wg.Add(len(f.blocklists))
116
 
115
 
117
 	mutex := &sync.Mutex{}
116
 	mutex := &sync.Mutex{}
118
 	ranger := cidranger.NewPCTrieRanger()
117
 	ranger := cidranger.NewPCTrieRanger()
119
 
118
 
120
 	for _, v := range f.blocklists {
119
 	for _, v := range f.blocklists {
121
-		go func(file files.File) {
122
-			defer wg.Done()
120
+		wg.Go(func() {
121
+			logger := f.logger.BindStr("filename", v.String())
123
 
122
 
124
-			logger := f.logger.BindStr("filename", file.String())
125
-
126
-			fileContent, err := file.Open(ctx)
123
+			fileContent, err := v.Open(ctx)
127
 			if err != nil {
124
 			if err != nil {
128
 				logger.WarningError("update has failed", err)
125
 				logger.WarningError("update has failed", err)
129
 
126
 
135
 			if err := f.updateFromFile(mutex, ranger, bufio.NewScanner(fileContent)); err != nil {
132
 			if err := f.updateFromFile(mutex, ranger, bufio.NewScanner(fileContent)); err != nil {
136
 				logger.WarningError("update has failed", err)
133
 				logger.WarningError("update has failed", err)
137
 			}
134
 			}
138
-		}(v)
135
+		})
139
 	}
136
 	}
140
 
137
 
141
 	wg.Wait()
138
 	wg.Wait()

+ 7
- 10
network/circuit_breaker_internal_test.go Näytä tiedosto

52
 		Return(suite.connMock, nil)
52
 		Return(suite.connMock, nil)
53
 
53
 
54
 	wg := &sync.WaitGroup{}
54
 	wg := &sync.WaitGroup{}
55
-	wg.Add(5)
56
-
57
-	go func() {
58
-		wg.Wait()
59
-		suite.ctxCancel()
60
-	}()
61
 
55
 
62
 	for range 5 {
56
 	for range 5 {
63
-		go func() {
64
-			defer wg.Done()
65
-
57
+		wg.Go(func() {
66
 			conn, err := suite.d.DialContext(suite.ctx, "tcp", "127.0.0.1")
58
 			conn, err := suite.d.DialContext(suite.ctx, "tcp", "127.0.0.1")
67
 
59
 
68
 			suite.mutex.Lock()
60
 			suite.mutex.Lock()
70
 
62
 
71
 			suite.NoError(err)
63
 			suite.NoError(err)
72
 			suite.Equal("127.0.0.1:3128", conn.RemoteAddr().String())
64
 			suite.Equal("127.0.0.1:3128", conn.RemoteAddr().String())
73
-		}()
65
+		})
74
 	}
66
 	}
75
 
67
 
68
+	go func() {
69
+		wg.Wait()
70
+		suite.ctxCancel()
71
+	}()
72
+
76
 	suite.Eventually(func() bool {
73
 	suite.Eventually(func() bool {
77
 		_, ok := <-suite.ctx.Done()
74
 		_, ok := <-suite.ctx.Done()
78
 
75
 

+ 4
- 12
network/network.go Näytä tiedosto

81
 
81
 
82
 	switch protocol {
82
 	switch protocol {
83
 	case "tcp", "tcp4":
83
 	case "tcp", "tcp4":
84
-		wg.Add(1)
85
-
86
-		go func() {
87
-			defer wg.Done()
88
-
84
+		wg.Go(func() {
89
 			resolved := n.dns.LookupA(address)
85
 			resolved := n.dns.LookupA(address)
90
 
86
 
91
 			mutex.Lock()
87
 			mutex.Lock()
92
 			ips = append(ips, resolved...)
88
 			ips = append(ips, resolved...)
93
 			mutex.Unlock()
89
 			mutex.Unlock()
94
-		}()
90
+		})
95
 	}
91
 	}
96
 
92
 
97
 	switch protocol {
93
 	switch protocol {
98
 	case "tcp", "tcp6":
94
 	case "tcp", "tcp6":
99
-		wg.Add(1)
100
-
101
-		go func() {
102
-			defer wg.Done()
103
-
95
+		wg.Go(func() {
104
 			resolved := n.dns.LookupAAAA(address)
96
 			resolved := n.dns.LookupAAAA(address)
105
 
97
 
106
 			mutex.Lock()
98
 			mutex.Lock()
107
 			ips = append(ips, resolved...)
99
 			ips = append(ips, resolved...)
108
 			mutex.Unlock()
100
 			mutex.Unlock()
109
-		}()
101
+		})
110
 	}
102
 	}
111
 
103
 
112
 	wg.Wait()
104
 	wg.Wait()

Loading…
Peruuta
Tallenna