github.com/koko1123/flow-go-1@v0.29.6/engine/common/splitter/network/example_test.go (about) 1 package network_test 2 3 import ( 4 "fmt" 5 "math/rand" 6 7 "github.com/rs/zerolog" 8 9 splitterNetwork "github.com/koko1123/flow-go-1/engine/common/splitter/network" 10 "github.com/koko1123/flow-go-1/model/flow" 11 "github.com/koko1123/flow-go-1/network/channels" 12 testnet "github.com/koko1123/flow-go-1/utils/unittest/network" 13 ) 14 15 func Example() { 16 // create a mock network 17 net := testnet.NewNetwork() 18 19 // create a splitter network 20 logger := zerolog.Nop() 21 splitterNet := splitterNetwork.NewNetwork(net, logger) 22 23 // generate a random origin ID 24 var id flow.Identifier 25 rand.Seed(0) 26 rand.Read(id[:]) 27 28 // create engines 29 engineProcessFunc := func(engineID int) testnet.EngineProcessFunc { 30 return func(channel channels.Channel, originID flow.Identifier, event interface{}) error { 31 fmt.Printf("Engine %d received message: channel=%v, originID=%v, event=%v\n", engineID, channel, originID, event) 32 return nil 33 } 34 } 35 engine1 := testnet.NewEngine().OnProcess(engineProcessFunc(1)) 36 engine2 := testnet.NewEngine().OnProcess(engineProcessFunc(2)) 37 engine3 := testnet.NewEngine().OnProcess(engineProcessFunc(3)) 38 39 // register engines with splitter network 40 channel := channels.Channel("foo-channel") 41 _, err := splitterNet.Register(channel, engine1) 42 if err != nil { 43 fmt.Println(err) 44 } 45 _, err = splitterNet.Register(channel, engine2) 46 if err != nil { 47 fmt.Println(err) 48 } 49 _, err = splitterNet.Register(channel, engine3) 50 if err != nil { 51 fmt.Println(err) 52 } 53 54 // send message to network 55 err = net.Send(channel, id, "foo") 56 if err != nil { 57 fmt.Println(err) 58 } 59 60 // Unordered output: 61 // Engine 1 received message: channel=foo-channel, originID=0194fdc2fa2ffcc041d3ff12045b73c86e4ff95ff662a5eee82abdf44a2d0b75, event=foo 62 // Engine 2 received message: channel=foo-channel, originID=0194fdc2fa2ffcc041d3ff12045b73c86e4ff95ff662a5eee82abdf44a2d0b75, event=foo 63 // Engine 3 received message: channel=foo-channel, originID=0194fdc2fa2ffcc041d3ff12045b73c86e4ff95ff662a5eee82abdf44a2d0b75, event=foo 64 }