forked from TrueCloudLab/frostfs-node
[#176] morph: Resolve funlen linter
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
382ecae96a
commit
91717d4b98
1 changed files with 37 additions and 31 deletions
|
@ -240,37 +240,7 @@ func (c *Client) restoreSubscriptions(cli *rpcclient.WSClient, endpoint string,
|
||||||
notificationRcv := make(chan *state.ContainedNotificationEvent)
|
notificationRcv := make(chan *state.ContainedNotificationEvent)
|
||||||
notaryReqRcv := make(chan *result.NotaryRequestEvent)
|
notaryReqRcv := make(chan *result.NotaryRequestEvent)
|
||||||
|
|
||||||
// neo-go WS client says to _always_ read notifications
|
c.startListen(stopCh, blockRcv, notificationRcv, notaryReqRcv, background)
|
||||||
// from its channel. Subscribing to any notification
|
|
||||||
// while not reading them in another goroutine may
|
|
||||||
// lead to a dead-lock, thus that async side notification
|
|
||||||
// listening while restoring subscriptions
|
|
||||||
go func() {
|
|
||||||
var e any
|
|
||||||
var ok bool
|
|
||||||
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case <-stopCh:
|
|
||||||
return
|
|
||||||
case e, ok = <-blockRcv:
|
|
||||||
case e, ok = <-notificationRcv:
|
|
||||||
case e, ok = <-notaryReqRcv:
|
|
||||||
}
|
|
||||||
|
|
||||||
if !ok {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if background {
|
|
||||||
// background client (test) switch, no need to send
|
|
||||||
// any notification, just preventing dead-lock
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
c.routeEvent(e)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
if background {
|
if background {
|
||||||
c.switchLock.RLock()
|
c.switchLock.RLock()
|
||||||
|
@ -334,6 +304,42 @@ func (c *Client) restoreSubscriptions(cli *rpcclient.WSClient, endpoint string,
|
||||||
return si, true
|
return si, true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Client) startListen(stopCh <-chan struct{}, blockRcv <-chan *block.Block,
|
||||||
|
notificationRcv <-chan *state.ContainedNotificationEvent, notaryReqRcv <-chan *result.NotaryRequestEvent, background bool) {
|
||||||
|
// neo-go WS client says to _always_ read notifications
|
||||||
|
// from its channel. Subscribing to any notification
|
||||||
|
// while not reading them in another goroutine may
|
||||||
|
// lead to a dead-lock, thus that async side notification
|
||||||
|
// listening while restoring subscriptions
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
var e any
|
||||||
|
var ok bool
|
||||||
|
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-stopCh:
|
||||||
|
return
|
||||||
|
case e, ok = <-blockRcv:
|
||||||
|
case e, ok = <-notificationRcv:
|
||||||
|
case e, ok = <-notaryReqRcv:
|
||||||
|
}
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if background {
|
||||||
|
// background client (test) switch, no need to send
|
||||||
|
// any notification, just preventing dead-lock
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
c.routeEvent(e)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
func copySubsMap(m map[util.Uint160]string) map[util.Uint160]string {
|
func copySubsMap(m map[util.Uint160]string) map[util.Uint160]string {
|
||||||
newM := make(map[util.Uint160]string, len(m))
|
newM := make(map[util.Uint160]string, len(m))
|
||||||
for k, v := range m {
|
for k, v := range m {
|
||||||
|
|
Loading…
Reference in a new issue