Skip to content

Commit 26d0baa

Browse files
authored
Merge pull request #14 from markya0616/return-keys
multiclient: return keys
2 parents 55d492d + 1ec77dc commit 26d0baa

2 files changed

Lines changed: 16 additions & 3 deletions

File tree

multiclient/client.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,15 @@ func New(ctx context.Context, opts ...Option) (*Client, error) {
5656
}
5757
}
5858

59-
clients := mc.rpcClientMap.Map()
60-
lens := len(clients)
59+
urls := mc.rpcClientMap.Keys()
60+
lens := len(urls)
6161
if lens == 0 {
6262
return nil, ErrNoEthClient
6363
}
6464

6565
log.Debug("Create multiclient", "urls", lens)
6666
errCh := make(chan error, lens)
67-
for rawURL := range clients {
67+
for _, rawURL := range urls {
6868
go func(ctx context.Context, rawURL string) {
6969
ctx, cancel := context.WithTimeout(ctx, dialTimeout)
7070
defer cancel()

multiclient/map.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,16 @@ func (m *Map) Map() map[string]*rpc.Client {
8989
}
9090
return newMap
9191
}
92+
93+
func (m *Map) Keys() []string {
94+
m.lock.RLock()
95+
defer m.lock.RUnlock()
96+
97+
urls := make([]string, len(m.m))
98+
index := 0
99+
for k := range m.m {
100+
urls[index] = k
101+
index++
102+
}
103+
return urls
104+
}

0 commit comments

Comments
 (0)