@@ -12,14 +12,18 @@ import (
1212 "github.com/ethersphere/bee/v2/pkg/swarm"
1313)
1414
15+ // Handler defines code to be executed upon reception of a GSOC sub message.
16+ // it is used as a parameter definition.
17+ type Handler func ([]byte )
18+
1519type Listener interface {
16- Subscribe (address [ 32 ] byte , handler Handler ) (cleanup func ())
20+ Subscribe (address swarm. Address , handler Handler ) (cleanup func ())
1721 Handle (c * soc.SOC )
1822 Close () error
1923}
2024
2125type listener struct {
22- handlers map [[ 32 ] byte ][]* Handler
26+ handlers map [string ][]* Handler
2327 handlersMu sync.Mutex
2428 quit chan struct {}
2529 logger log.Logger
@@ -29,26 +33,26 @@ type listener struct {
2933func New (logger log.Logger ) Listener {
3034 return & listener {
3135 logger : logger ,
32- handlers : make (map [[ 32 ] byte ][]* Handler ),
36+ handlers : make (map [string ][]* Handler ),
3337 quit : make (chan struct {}),
3438 }
3539}
3640
3741// Subscribe allows the definition of a Handler func on a specific GSOC address.
38- func (l * listener ) Subscribe (address [ 32 ] byte , handler Handler ) (cleanup func ()) {
42+ func (l * listener ) Subscribe (address swarm. Address , handler Handler ) (cleanup func ()) {
3943 l .handlersMu .Lock ()
4044 defer l .handlersMu .Unlock ()
4145
42- l .handlers [address ] = append (l .handlers [address ], & handler )
46+ l .handlers [address . ByteString () ] = append (l .handlers [address . ByteString () ], & handler )
4347
4448 return func () {
4549 l .handlersMu .Lock ()
4650 defer l .handlersMu .Unlock ()
4751
48- h := l .handlers [address ]
52+ h := l .handlers [address . ByteString () ]
4953 for i := 0 ; i < len (h ); i ++ {
5054 if h [i ] == & handler {
51- l .handlers [address ] = append (h [:i ], h [i + 1 :]... )
55+ l .handlers [address . ByteString () ] = append (h [:i ], h [i + 1 :]... )
5256 return
5357 }
5458 }
@@ -61,13 +65,11 @@ func (l *listener) Handle(c *soc.SOC) {
6165 if err != nil {
6266 return // no handler
6367 }
64- h := l .getHandlers ([ 32 ] byte ( addr . Bytes ()) )
68+ h := l .getHandlers (addr )
6569 if h == nil {
6670 return // no handler
6771 }
68- l .logger .Info ("new incoming GSOC message" ,
69- "GSOC Address" , addr ,
70- "wrapped chunk address" , c .WrappedChunk ().Address ())
72+ l .logger .Debug ("new incoming GSOC message" , "GSOC Address" , addr , "wrapped chunk address" , c .WrappedChunk ().Address ())
7173
7274 for _ , hh := range h {
7375 go func (hh Handler ) {
@@ -76,23 +78,19 @@ func (l *listener) Handle(c *soc.SOC) {
7678 }
7779}
7880
79- func (p * listener ) getHandlers (address [ 32 ] byte ) []* Handler {
81+ func (p * listener ) getHandlers (address swarm. Address ) []* Handler {
8082 p .handlersMu .Lock ()
8183 defer p .handlersMu .Unlock ()
8284
83- return p .handlers [address ]
85+ return p .handlers [address . ByteString () ]
8486}
8587
8688func (l * listener ) Close () error {
8789 close (l .quit )
8890 l .handlersMu .Lock ()
8991 defer l .handlersMu .Unlock ()
9092
91- l .handlers = make (map [[ 32 ] byte ][]* Handler ) //unset handlers on shutdown
93+ l .handlers = make (map [string ][]* Handler ) //unset handlers on shutdown
9294
9395 return nil
9496}
95-
96- // Handler defines code to be executed upon reception of a GSOC sub message.
97- // it is used as a parameter definition.
98- type Handler func ([]byte )
0 commit comments