package profile import ( "context" "demo/deliver" "fmt" "time" ) func puller(ctx context.Context, d deliver.Deliver, index int) { var msg []byte var err error var t int64 var elapse int64 count := 0 for { msg, err = d.Recv() if err != nil { // fmt.Println("recv error : ", err) } if t == 0 { t = time.Now().UnixNano() } elapse = time.Now().UnixNano() - t count++ if elapse > 1e9 { fmt.Printf("NODE-%d: RECEIVED \"%d\" data len %d, use \"%d\" ns\n", index, count, len(msg), elapse) elapse = 0 count = 0 t = 0 } // time.Sleep(10 * time.Millisecond) } } func Pull(ctx context.Context, server bool, ipc string, count int) { if server { d := deliver.NewServer(deliver.PushPull, ipc) go puller(ctx, d, 0) } else { var cs []deliver.Deliver for i := 0; i < count; i++ { c := deliver.NewClient(deliver.PushPull, ipc) cs = append(cs, c) go puller(ctx, c, i) } } }