@@ -12,7 +12,8 @@ import (
1212 "github.com/libp2p/go-libp2p/core/network"
1313 "github.com/pkg/errors"
1414 "github.com/rs/zerolog"
15- "github.com/rs/zerolog/log"
15+
16+ "github.com/zeta-chain/go-tss/logs"
1617)
1718
1819const (
@@ -32,52 +33,60 @@ func init() {
3233
3334type StreamMgr struct {
3435 unusedStreams map [string ][]network.Stream
35- streamLocker * sync.RWMutex
36+ mu * sync.RWMutex
3637 logger zerolog.Logger
3738}
3839
39- func NewStreamMgr () * StreamMgr {
40+ func NewStreamMgr (logger zerolog. Logger ) * StreamMgr {
4041 return & StreamMgr {
4142 unusedStreams : make (map [string ][]network.Stream ),
42- streamLocker : & sync.RWMutex {},
43- logger : log .With ().Str ("module" , "communication " ).Logger (),
43+ mu : & sync.RWMutex {},
44+ logger : logger .With ().Str (logs . Component , "stream_manager " ).Logger (),
4445 }
4546}
4647
4748func (sm * StreamMgr ) ReleaseStream (msgID string ) {
48- sm .streamLocker .RLock ()
49+ sm .mu .RLock ()
4950 usedStreams , okStream := sm .unusedStreams [msgID ]
5051 unknownStreams , okUnknown := sm .unusedStreams ["UNKNOWN" ]
5152 streams := append (usedStreams , unknownStreams ... )
52- sm .streamLocker .RUnlock ()
53- if okStream || okUnknown {
54- for _ , el := range streams {
55- err := el .Reset ()
56- if err != nil {
57- sm .logger .Error ().Err (err ).Msg ("fail to reset the stream,skip it" )
58- }
53+ sm .mu .RUnlock ()
54+
55+ // noop
56+ if ! (okStream || okUnknown ) {
57+ return
58+ }
59+
60+ for _ , stream := range streams {
61+ if err := stream .Reset (); err != nil {
62+ sm .logger .Error ().Err (err ).
63+ Str (logs .MsgID , msgID ).
64+ Str ("stream_id" , stream .ID ()).
65+ Msg ("Failed to reset the stream" )
5966 }
60- sm .streamLocker .Lock ()
61- delete (sm .unusedStreams , msgID )
62- delete (sm .unusedStreams , "UNKNOWN" )
63- sm .streamLocker .Unlock ()
6467 }
68+
69+ sm .mu .Lock ()
70+ delete (sm .unusedStreams , msgID )
71+ delete (sm .unusedStreams , "UNKNOWN" )
72+ sm .mu .Unlock ()
6573}
6674
6775func (sm * StreamMgr ) AddStream (msgID string , stream network.Stream ) {
6876 if stream == nil {
6977 return
7078 }
71- sm .streamLocker .Lock ()
72- defer sm .streamLocker .Unlock ()
79+
80+ sm .mu .Lock ()
81+ defer sm .mu .Unlock ()
82+
7383 entries , ok := sm .unusedStreams [msgID ]
7484 if ! ok {
75- entries := []network.Stream {stream }
76- sm .unusedStreams [msgID ] = entries
77- } else {
78- entries = append (entries , stream )
79- sm .unusedStreams [msgID ] = entries
85+ sm .unusedStreams [msgID ] = []network.Stream {stream }
86+ return
8087 }
88+
89+ sm .unusedStreams [msgID ] = append (entries , stream )
8190}
8291
8392// ReadStreamWithBuffer read data from the given stream
0 commit comments