func echoN(r, w *poller.FD, n int) error { var err error for i := 0; i < n; i++ { var m msg err = r.SetReadDeadline(time.Now().Add(2 * time.Second)) if err != nil { err = fmt.Errorf("set R dl #%d: %v", i, err) break } m, err = rcvMsg(r) if err != nil { err = fmt.Errorf("cannot rcv #%d: %v", i, err) break } if m.Seq() != uint32(i) { err = fmt.Errorf("rcv seq %d != %d", m.Seq(), i) break } err = w.SetWriteDeadline(time.Now().Add(2 * time.Second)) if err != nil { err = fmt.Errorf("set W dl #%d: %v", i, err) break } err = m.Send(w) if err != nil { err = fmt.Errorf("cannot send #%d: %v", i, err) break } } return err }
func sendN(r, w *poller.FD, n int) error { var err error for i := 0; i < n; i++ { var ms, mr msg ms = randMsg(uint32(i)) err = w.SetWriteDeadline(time.Now().Add(2 * time.Second)) if err != nil { err = fmt.Errorf("set W dl #%d: %v", i, err) break } err = ms.Send(w) if err != nil { err = fmt.Errorf("cannot send #%d: %v", i, err) break } err = r.SetReadDeadline(time.Now().Add(2 * time.Second)) if err != nil { err = fmt.Errorf("set R dl #%d: %v", i, err) break } mr, err = rcvMsg(r) if err != nil { err = fmt.Errorf("cannot rcv #%d: %v", i, err) break } if mr.Seq() != uint32(i) { err = fmt.Errorf("rcv seq %d != %d", mr.Seq(), i) break } if !bytes.Equal(ms.Data(), mr.Data()) { err = fmt.Errorf("data not equal for #%d", i) break } } return err }