73 lines
1.0 KiB
Go
73 lines
1.0 KiB
Go
package dadis
|
|
|
|
import (
|
|
"context"
|
|
"dashboard/pkg/observe"
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
type baseObserver struct {
|
|
name string
|
|
conn chan interface{}
|
|
}
|
|
|
|
func newBaseObserver(name string) *baseObserver {
|
|
res := &baseObserver{
|
|
name: name,
|
|
conn: make(chan interface{}),
|
|
}
|
|
|
|
go res.getMsg()
|
|
|
|
return res
|
|
}
|
|
|
|
func (b *baseObserver) getMsg() {
|
|
for res := range b.conn {
|
|
fmt.Println(b.name, res)
|
|
}
|
|
}
|
|
|
|
func (b *baseObserver) OnChange(_ context.Context, e *observe.Event) error {
|
|
b.conn <- e
|
|
|
|
return nil
|
|
}
|
|
|
|
func Test_Dadis(t *testing.T) {
|
|
obA := newBaseObserver("A")
|
|
obB := newBaseObserver("B")
|
|
obC := newBaseObserver("C")
|
|
obD := newBaseObserver("D")
|
|
|
|
topic := "async"
|
|
dadis := NewDadis()
|
|
dadis.Sub(topic, obA)
|
|
dadis.Sub(topic, obB)
|
|
dadis.Sub(topic, obC)
|
|
dadis.Sub(topic, obD)
|
|
|
|
go func() {
|
|
for i := range 10 {
|
|
i := i
|
|
go func() {
|
|
key := fmt.Sprintf("%s,%d", "nohao", i)
|
|
dadis.Set(topic, key, 0)
|
|
}()
|
|
|
|
}
|
|
}()
|
|
|
|
go func() {
|
|
for range 10 {
|
|
go func() {
|
|
fmt.Println(dadis.Get(topic))
|
|
}()
|
|
}
|
|
}()
|
|
|
|
<-time.After(time.Second * 1)
|
|
}
|