mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-29 06:37:17 +00:00
43 lines
909 B
Go
43 lines
909 B
Go
|
package p2p
|
||
|
|
||
|
import "fmt"
|
||
|
|
||
|
// Feeds can tbe use to subscribe to any type of message.
|
||
|
func ExampleServer_Feed() {
|
||
|
s, err := NewServer()
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
// Let's wait for a puzzle from our peers then try to solve it.
|
||
|
type Puzzle struct {
|
||
|
Challenge string
|
||
|
Answer string
|
||
|
}
|
||
|
|
||
|
feed, err := s.Feed(Puzzle{})
|
||
|
if err != nil {
|
||
|
// This shouldn't happen, but we should handle it anyway.
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
ch := make(chan Message, 5) // Small buffer size. I don't expect many puzzles.
|
||
|
sub := feed.Subscribe(ch)
|
||
|
|
||
|
// Always close these resources.
|
||
|
defer sub.Unsubscribe()
|
||
|
defer close(ch)
|
||
|
|
||
|
// Wait until we have a puzzle to solve.
|
||
|
msg := <-ch
|
||
|
puzzle := msg.Data.(Puzzle)
|
||
|
|
||
|
fmt.Printf("Received puzzle %s from peer %v\n", puzzle, msg.Peer)
|
||
|
|
||
|
if puzzle.Answer == "fourteen" {
|
||
|
fmt.Println("I solved the puzzle!")
|
||
|
} else {
|
||
|
fmt.Println("The answer isn't \"fourteen\"... giving up")
|
||
|
}
|
||
|
}
|