コード例 #1
0
func ExamplePublisher() {
	pub := pubsub.Publisher{}
	ch, _ := pub.SubChannel(nil)
	pub.Publish("msg 1")
	pub.Publish("msg 2")
	fmt.Println(<-ch)
	fmt.Println(<-ch)
	// Output:
	// msg 1
	// msg 2
}
コード例 #2
0
func ExamplePublisher_SubChannel() {
	pub := new(pubsub.Publisher)
	ch, _ := pub.SubChannel("close")
	pub.Publish("msg 1")
	pub.Publish("msg 2")
	pub.Publish("close")

	for msg := range ch {
		fmt.Println(msg)
	}
	// Output:
	// msg 1
	// msg 2
	// close
}
コード例 #3
0
func TestSubChannel(t *testing.T) {
	pub := pubsub.Publisher{}
	ch, last := pub.SubChannel(nil)
	if last != nil {
		t.Fatal("last message shuold be nil")
	}
	pub.Publish("msg 1")
	pub.Publish("msg 2")
	pub.Publish(nil)

	if "msg 1" != <-ch {
		t.Fatal("incorrect message received")
	}
	if "msg 2" != <-ch {
		t.Fatal("incorrect message received")
	}
	if nil != <-ch {
		t.Fatal("incorrect message received")
	}
	if _, ok := <-ch; ok {
		t.Fatal("channel should be closed")
	}
}