@@ -15,18 +15,18 @@ import (
1515)
1616
1717type LoadBalancer struct {
18- Servers []* sv.Server
19- mu sync.RWMutex
20- Logger * log.Logger
21- wg sync.WaitGroup
22- shutdown bool
23- metrics * Metrics
24- maxRetries int
18+ Servers []* sv.Server
19+ mu sync.RWMutex
20+ Logger * log.Logger
21+ wg sync.WaitGroup
22+ shutdown bool
23+ metrics * Metrics
24+ maxRetries int
2525}
2626
2727type Metrics struct {
28- TotalRequests uint64
29- FailedRequests uint64
28+ TotalRequests uint64
29+ FailedRequests uint64
3030 ActiveConnections int64
3131}
3232
@@ -35,28 +35,28 @@ func NewLoadBalancer(logger *log.Logger) *LoadBalancer {
3535 logger = log .New (io .Discard , "" , log .LstdFlags )
3636 }
3737 return & LoadBalancer {
38- Logger : logger ,
39- metrics : & Metrics {},
38+ Logger : logger ,
39+ metrics : & Metrics {},
4040 maxRetries : 3 ,
4141 }
4242}
4343
4444func (lb * LoadBalancer ) AddServer (url string ) error {
4545 lb .mu .Lock ()
4646 defer lb .mu .Unlock ()
47-
47+
4848 // Validate server URL
4949 if url == "" {
5050 return errors .New ("server URL cannot be empty" )
5151 }
52-
52+
5353 // Check for duplicate servers
5454 for _ , server := range lb .Servers {
5555 if server .URL == url {
5656 return fmt .Errorf ("server %s already exists" , url )
5757 }
5858 }
59-
59+
6060 server := sv .NewServer (url , lb .Logger )
6161 lb .Servers = append (lb .Servers , server )
6262 lb .Logger .Println (utils .Colorize ("Added server " + url + " to the load balancer" , utils .GREEN ))
@@ -66,7 +66,7 @@ func (lb *LoadBalancer) AddServer(url string) error {
6666func (lb * LoadBalancer ) RemoveServer (url string ) error {
6767 lb .mu .Lock ()
6868 defer lb .mu .Unlock ()
69-
69+
7070 for i , server := range lb .Servers {
7171 if server .URL == url {
7272 // Wait for active connections to finish
@@ -75,21 +75,21 @@ func (lb *LoadBalancer) RemoveServer(url string) error {
7575 time .Sleep (100 * time .Millisecond )
7676 lb .mu .Lock ()
7777 }
78-
78+
7979 // Remove server
8080 lb .Servers = append (lb .Servers [:i ], lb .Servers [i + 1 :]... )
8181 lb .Logger .Println (utils .Colorize ("Removed server " + url , utils .YELLOW ))
8282 return nil
8383 }
8484 }
85-
85+
8686 return fmt .Errorf ("server %s not found" , url )
8787}
8888
8989func (lb * LoadBalancer ) GetMetrics () * Metrics {
9090 return & Metrics {
91- TotalRequests : atomic .LoadUint64 (& lb .metrics .TotalRequests ),
92- FailedRequests : atomic .LoadUint64 (& lb .metrics .FailedRequests ),
91+ TotalRequests : atomic .LoadUint64 (& lb .metrics .TotalRequests ),
92+ FailedRequests : atomic .LoadUint64 (& lb .metrics .FailedRequests ),
9393 ActiveConnections : atomic .LoadInt64 (& lb .metrics .ActiveConnections ),
9494 }
9595}
0 commit comments