Sfoglia il codice sorgente

Rewrite to WaitGroup.Go

tags/v2.1.10^2^2
9seconds 2 mesi fa
parent
commit
0440ccf4ff

+ 27
- 54
events/multi_observer.go Vedi File

@@ -12,14 +12,11 @@ type multiObserver struct {
12 12
 
13 13
 func (m multiObserver) EventStart(evt mtglib.EventStart) {
14 14
 	wg := &sync.WaitGroup{}
15
-	wg.Add(len(m.observers))
16 15
 
17 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 22
 	wg.Wait()
@@ -27,14 +24,11 @@ func (m multiObserver) EventStart(evt mtglib.EventStart) {
27 24
 
28 25
 func (m multiObserver) EventConnectedToDC(evt mtglib.EventConnectedToDC) {
29 26
 	wg := &sync.WaitGroup{}
30
-	wg.Add(len(m.observers))
31 27
 
32 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 34
 	wg.Wait()
@@ -42,14 +36,11 @@ func (m multiObserver) EventConnectedToDC(evt mtglib.EventConnectedToDC) {
42 36
 
43 37
 func (m multiObserver) EventDomainFronting(evt mtglib.EventDomainFronting) {
44 38
 	wg := &sync.WaitGroup{}
45
-	wg.Add(len(m.observers))
46 39
 
47 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 46
 	wg.Wait()
@@ -57,14 +48,11 @@ func (m multiObserver) EventDomainFronting(evt mtglib.EventDomainFronting) {
57 48
 
58 49
 func (m multiObserver) EventTraffic(evt mtglib.EventTraffic) {
59 50
 	wg := &sync.WaitGroup{}
60
-	wg.Add(len(m.observers))
61 51
 
62 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 58
 	wg.Wait()
@@ -72,14 +60,11 @@ func (m multiObserver) EventTraffic(evt mtglib.EventTraffic) {
72 60
 
73 61
 func (m multiObserver) EventFinish(evt mtglib.EventFinish) {
74 62
 	wg := &sync.WaitGroup{}
75
-	wg.Add(len(m.observers))
76 63
 
77 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 70
 	wg.Wait()
@@ -87,14 +72,11 @@ func (m multiObserver) EventFinish(evt mtglib.EventFinish) {
87 72
 
88 73
 func (m multiObserver) EventConcurrencyLimited(evt mtglib.EventConcurrencyLimited) {
89 74
 	wg := &sync.WaitGroup{}
90
-	wg.Add(len(m.observers))
91 75
 
92 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 82
 	wg.Wait()
@@ -102,14 +84,11 @@ func (m multiObserver) EventConcurrencyLimited(evt mtglib.EventConcurrencyLimite
102 84
 
103 85
 func (m multiObserver) EventIPBlocklisted(evt mtglib.EventIPBlocklisted) {
104 86
 	wg := &sync.WaitGroup{}
105
-	wg.Add(len(m.observers))
106 87
 
107 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 94
 	wg.Wait()
@@ -117,14 +96,11 @@ func (m multiObserver) EventIPBlocklisted(evt mtglib.EventIPBlocklisted) {
117 96
 
118 97
 func (m multiObserver) EventReplayAttack(evt mtglib.EventReplayAttack) {
119 98
 	wg := &sync.WaitGroup{}
120
-	wg.Add(len(m.observers))
121 99
 
122 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 106
 	wg.Wait()
@@ -132,14 +108,11 @@ func (m multiObserver) EventReplayAttack(evt mtglib.EventReplayAttack) {
132 108
 
133 109
 func (m multiObserver) EventIPListSize(evt mtglib.EventIPListSize) {
134 110
 	wg := &sync.WaitGroup{}
135
-	wg.Add(len(m.observers))
136 111
 
137 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 118
 	wg.Wait()

+ 4
- 10
internal/cli/access.go Vedi File

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

+ 4
- 7
ipblocklist/firehol.go Vedi File

@@ -112,18 +112,15 @@ func (f *Firehol) update() {
112 112
 	defer cancel()
113 113
 
114 114
 	wg := &sync.WaitGroup{}
115
-	wg.Add(len(f.blocklists))
116 115
 
117 116
 	mutex := &sync.Mutex{}
118 117
 	ranger := cidranger.NewPCTrieRanger()
119 118
 
120 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 124
 			if err != nil {
128 125
 				logger.WarningError("update has failed", err)
129 126
 
@@ -135,7 +132,7 @@ func (f *Firehol) update() {
135 132
 			if err := f.updateFromFile(mutex, ranger, bufio.NewScanner(fileContent)); err != nil {
136 133
 				logger.WarningError("update has failed", err)
137 134
 			}
138
-		}(v)
135
+		})
139 136
 	}
140 137
 
141 138
 	wg.Wait()

+ 7
- 10
network/circuit_breaker_internal_test.go Vedi File

@@ -52,17 +52,9 @@ func (suite *CircuitBreakerTestSuite) TestMultipleRunsOk() {
52 52
 		Return(suite.connMock, nil)
53 53
 
54 54
 	wg := &sync.WaitGroup{}
55
-	wg.Add(5)
56
-
57
-	go func() {
58
-		wg.Wait()
59
-		suite.ctxCancel()
60
-	}()
61 55
 
62 56
 	for range 5 {
63
-		go func() {
64
-			defer wg.Done()
65
-
57
+		wg.Go(func() {
66 58
 			conn, err := suite.d.DialContext(suite.ctx, "tcp", "127.0.0.1")
67 59
 
68 60
 			suite.mutex.Lock()
@@ -70,9 +62,14 @@ func (suite *CircuitBreakerTestSuite) TestMultipleRunsOk() {
70 62
 
71 63
 			suite.NoError(err)
72 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 73
 	suite.Eventually(func() bool {
77 74
 		_, ok := <-suite.ctx.Done()
78 75
 

+ 4
- 12
network/network.go Vedi File

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

Loading…
Annulla
Salva