@@ -12,6 +12,7 @@ import (
1212 "time"
1313
1414 "github.com/cenkalti/backoff/v3"
15+ "github.com/libp2p/go-libp2p/core/peer"
1516 "github.com/waku-org/go-waku/waku/v2/protocol/pb"
1617 "github.com/waku-org/waku-go-bindings/waku/common"
1718 "google.golang.org/protobuf/proto"
@@ -94,7 +95,7 @@ func (n *WakuNode) CreateMessage(customMessage ...*pb.WakuMessage) *pb.WakuMessa
9495 Debug ("Using default message format on node %s" , n .nodeName )
9596 defaultMessage := & pb.WakuMessage {
9697 Payload : []byte ("This is a default Waku message payload" ),
97- ContentTopic : "test-content-topic" ,
98+ ContentTopic : DefaultContentTopic ,
9899 Version : proto .Uint32 (0 ),
99100 Timestamp : proto .Int64 (time .Now ().UnixNano ()),
100101 }
@@ -215,3 +216,42 @@ func SubscribeNodesToTopic(nodes []*WakuNode, topic string) error {
215216 }
216217 return nil
217218}
219+
220+ func (n * WakuNode ) GetStoredMessages (storeNode * WakuNode , storeRequest * common.StoreQueryRequest ) (* common.StoreQueryResponse , error ) {
221+ Debug ("Starting store query request" )
222+
223+ if storeRequest == nil {
224+ Debug ("Using DefaultStoreQueryRequest" )
225+ storeRequest = & DefaultStoreQueryRequest
226+ }
227+
228+ storeMultiaddr , err := storeNode .ListenAddresses ()
229+ if err != nil {
230+ Error ("Failed to retrieve listen addresses for store node: %v" , err )
231+ return nil , err
232+ }
233+
234+ if len (storeMultiaddr ) == 0 {
235+ Error ("Store node has no available listen addresses" )
236+ return nil , errors .New ("store node has no available listen addresses" )
237+ }
238+
239+ storeNodeAddrInfo , err := peer .AddrInfoFromString (storeMultiaddr [0 ].String ())
240+ if err != nil {
241+ Error ("Failed to convert store node address to AddrInfo: %v" , err )
242+ return nil , err
243+ }
244+
245+ ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
246+ defer cancel ()
247+
248+ Debug ("Querying store node for messages" )
249+ res , err := n .StoreQuery (ctx , storeRequest , * storeNodeAddrInfo )
250+ if err != nil {
251+ Error ("StoreQuery failed: %v" , err )
252+ return nil , err
253+ }
254+
255+ Debug ("Store query successful, retrieved %d messages" , len (* res .Messages ))
256+ return res , nil
257+ }
0 commit comments