package main import ( "context" "time" "basic.com/valib/pubsub.git" ) func wait(ctx context.Context, c chan pubsub.Message, out chan<- []byte) { for { select { case <-ctx.Done(): return case msg := <-c: out <- msg.Msg default: time.Sleep(time.Second) } } } // Fetch Fetch from tcp://192.168.5.22:4005 func Fetch(ctx context.Context, url, heartBeatURL string, mode int, processID string, out chan<- []byte, fn func(...interface{})) { topics := []string{pubsub.Topic_Sdk} p, err := pubsub.NewSubscriber(url, heartBeatURL, mode, topics, processID) for { if err == nil { break } fn("libcomm.so, pubsub subscribe error: ", err) time.Sleep(time.Second) p, err = pubsub.NewSubscriber(url, heartBeatURL, mode, topics, processID) } c := p.Recv() go wait(ctx, c, out) }