@@ -2,6 +2,7 @@ package main
22
33import (
44 "context"
5+ "encoding/json"
56 "flag"
67 "fmt"
78 "os"
@@ -10,9 +11,8 @@ import (
1011 "syscall"
1112 "time"
1213
13- "github.com/libp2p/go-libp2p/core/crypto"
14- "github.com/ordishs/gocore"
1514 p2p "github.com/bsv-blockchain/go-p2p-message-bus"
15+ "github.com/libp2p/go-libp2p/core/crypto"
1616)
1717
1818func main () {
@@ -23,10 +23,11 @@ func main() {
2323
2424 flag .Parse ()
2525
26- logger := gocore . Log ( "p2p_poc" )
26+ logger := & p2p. DefaultLogger {}
2727
2828 if * name == "" {
29- logger .Fatal ("--name flag is required" )
29+ logger .Errorf ("--name flag is required" )
30+ return
3031 }
3132
3233 ctx , cancel := context .WithCancel (context .Background ())
@@ -46,17 +47,19 @@ func main() {
4647 // Generate a new key
4748 privKey , err = p2p .GeneratePrivateKey ()
4849 if err != nil {
49- logger .Fatalf ("Failed to generate private key: %v" , err )
50+ logger .Errorf ("Failed to generate private key: %v" , err )
51+ return
5052 }
5153
5254 keyHex , _ = p2p .PrivateKeyToHex (privKey )
53- fmt . Printf ("Generated new private key: %s\n " , keyHex )
54- fmt . Println ("Save this key and use it next time with --key flag or P2P_PRIVATE_KEY env var" )
55+ logger . Infof ("Generated new private key: %s\n " , keyHex )
56+ logger . Infof ("Save this key and use it next time with --key flag or P2P_PRIVATE_KEY env var" )
5557 } else {
5658 // Load key from hex
5759 privKey , err = p2p .PrivateKeyFromHex (keyHex )
5860 if err != nil {
59- logger .Fatalf ("Failed to load private key: %v" , err )
61+ logger .Errorf ("Failed to load private key: %v" , err )
62+ return
6063 }
6164 }
6265
@@ -68,8 +71,10 @@ func main() {
6871 PeerCacheFile : "peer_cache.json" , // Enable peer persistence
6972 })
7073 if err != nil {
71- logger .Fatalf ("Failed to create P2P client: %v" , err )
74+ logger .Errorf ("Failed to create P2P client: %v" , err )
75+ return
7276 }
77+
7378 defer client .Close ()
7479
7580 // Parse topics list
@@ -78,8 +83,6 @@ func main() {
7883 topicList [i ] = strings .TrimSpace (t )
7984 }
8085
81- logger .Infof ("Subscribing to topics: %v" , topicList )
82-
8386 // Subscribe to all topics and merge messages into single channel
8487 allMsgChan := make (chan p2p.Message , 100 )
8588
@@ -92,14 +95,26 @@ func main() {
9295 allMsgChan <- msg
9396 }
9497 }(msgChan )
95-
96- logger .Infof ("Subscribed to topic: %s" , topic )
9798 }
9899
99100 // Start message receiver
100101 go func () {
101102 for msg := range allMsgChan {
102- fmt .Printf ("[%-52s] %s: %s (topic: %s)\n " , msg .FromID , msg .From , string (msg .Data ), msg .Topic )
103+ var data string
104+
105+ // Try to unmarshal and re-marshal for pretty printing
106+ var jsonObj interface {}
107+ if err := json .Unmarshal (msg .Data , & jsonObj ); err == nil {
108+ if jsonBytes , err := json .MarshalIndent (jsonObj , "" , " " ); err == nil {
109+ data = string (jsonBytes )
110+ } else {
111+ data = string (msg .Data )
112+ }
113+ } else {
114+ data = string (msg .Data )
115+ }
116+
117+ logger .Infof ("[%-52s] %s: (%s)\n %s" , msg .FromID , msg .From , msg .Topic , data )
103118 }
104119 }()
105120
@@ -123,7 +138,7 @@ func main() {
123138 return
124139 }
125140 }
126- fmt . Printf ("[%-52s] %s: %s\n " , "local" , * name , data )
141+ logger . Infof ("[%-52s] %s: %s\n " , "local" , * name , data )
127142 }
128143 }
129144 }()
@@ -141,26 +156,25 @@ func main() {
141156 case <- ticker .C :
142157 peers := client .GetPeers ()
143158 if len (peers ) > 0 {
144- fmt . Printf ("\n === Connected Peers: %d ===\n " , len (peers ))
159+ logger . Infof ("\n === Connected Peers: %d ===\n " , len (peers ))
145160 for _ , peer := range peers {
146- fmt . Printf (" - %s [%s]\n " , peer .Name , peer .ID )
161+ logger . Infof (" - %s [%s]\n " , peer .Name , peer .ID )
147162 for _ , addr := range peer .Addrs {
148- fmt . Printf (" %s\n " , addr )
163+ logger . Infof (" %s\n " , addr )
149164 }
150165 }
151- fmt .Println ()
152166 }
153167 }
154168 }
155169 }()
156170
157- fmt . Println ("P2P client started. Press Ctrl+C to exit" )
171+ logger . Infof ("P2P client started. Press Ctrl+C to exit" )
158172
159173 // Wait for shutdown signal
160174 sigChan := make (chan os.Signal , 1 )
161175 signal .Notify (sigChan , syscall .SIGINT , syscall .SIGTERM )
162176 <- sigChan
163177
164- fmt . Println ("\n Shutting down..." )
178+ logger . Infof ("\n Shutting down..." )
165179 cancel ()
166180}
0 commit comments