package profile
|
|
import (
|
"context"
|
"demo/deliver"
|
"fmt"
|
"time"
|
)
|
|
func Req(ctx context.Context, server bool, url string, num int) {
|
p := deliver.NewClient(deliver.ReqRep, url)
|
var err error
|
|
// msg := `hello, give me your data`
|
msg := make([]byte, dLen)
|
|
copy(msg, []byte("hello, give you this"))
|
fmt.Println("req msg len: ", len(msg))
|
|
var t int64
|
var elapse int64
|
count := 0
|
|
for {
|
select {
|
case <-ctx.Done():
|
return
|
default:
|
|
if err = p.Send([]byte(msg)); err != nil {
|
|
fmt.Printf("can't send message on push socket: %s\n", err.Error())
|
} else {
|
}
|
|
if buf, err := p.Recv(); err != nil {
|
fmt.Println("recv error: ", err)
|
} else {
|
if t == 0 {
|
t = time.Now().UnixNano()
|
}
|
elapse = time.Now().UnixNano() - t
|
|
count++
|
|
if elapse > 1e9 {
|
fmt.Printf("NODE: RECEIVED \"%d\" data len %d, use \"%d\" ns\n",
|
count, len(buf), elapse)
|
elapse = 0
|
count = 0
|
t = 0
|
}
|
|
}
|
// time.Sleep(10 * time.Millisecond)
|
}
|
|
}
|
|
}
|
|
func Rep(ctx context.Context, server bool, url string, num int) {
|
c := deliver.NewServer(deliver.ReqRep, url)
|
|
var msg []byte
|
var err error
|
|
buf := make([]byte, dLen)
|
|
for {
|
select {
|
case <-ctx.Done():
|
return
|
default:
|
|
msg, err = c.Recv()
|
if err != nil {
|
fmt.Println("recv error : ", err, " msg ", msg)
|
continue
|
}
|
|
c.Send(buf)
|
// time.Sleep(10 * time.Millisecond)
|
}
|
|
}
|
}
|