mirror of https://github.com/ethereum/go-ethereum
parent
f5b8775bed
commit
dac4a8f113
@ -0,0 +1,42 @@ |
|||||||
|
package event |
||||||
|
|
||||||
|
import "fmt" |
||||||
|
|
||||||
|
func ExampleTypeMux() { |
||||||
|
type someEvent struct{ I int } |
||||||
|
type otherEvent struct{ S string } |
||||||
|
type yetAnotherEvent struct{ X, Y int } |
||||||
|
|
||||||
|
var mux TypeMux |
||||||
|
|
||||||
|
// Start a subscriber.
|
||||||
|
done := make(chan struct{}) |
||||||
|
sub := mux.Subscribe(someEvent{}, otherEvent{}) |
||||||
|
go func() { |
||||||
|
for event := range sub.Chan() { |
||||||
|
fmt.Printf("Received: %#v\n", event) |
||||||
|
} |
||||||
|
fmt.Println("done") |
||||||
|
close(done) |
||||||
|
}() |
||||||
|
|
||||||
|
// Post some events.
|
||||||
|
mux.Post(someEvent{5}) |
||||||
|
mux.Post(yetAnotherEvent{X: 3, Y: 4}) |
||||||
|
mux.Post(someEvent{6}) |
||||||
|
mux.Post(otherEvent{"whoa"}) |
||||||
|
|
||||||
|
// Stop closes all subscription channels.
|
||||||
|
// The subscriber goroutine will print "done"
|
||||||
|
// and exit.
|
||||||
|
mux.Stop() |
||||||
|
|
||||||
|
// Wait for subscriber to return.
|
||||||
|
<-done |
||||||
|
|
||||||
|
// Output:
|
||||||
|
// Received: event.someEvent{I:5}
|
||||||
|
// Received: event.someEvent{I:6}
|
||||||
|
// Received: event.otherEvent{S:"whoa"}
|
||||||
|
// done
|
||||||
|
} |
Loading…
Reference in new issue