| | |
| | | chReply chan TransInfo |
| | | } |
| | | |
| | | func recvRoutine(ctx context.Context, sock *DgramSocket, wg *sync.WaitGroup, ch chan<- TransInfo) { |
| | | const ( |
| | | routineSub = "sub" |
| | | routineReply = "reply" |
| | | ) |
| | | |
| | | func recvRoutine(ctx context.Context, sock *DgramSocket, wg *sync.WaitGroup, ch chan<- TransInfo, id string) { |
| | | for { |
| | | select { |
| | | case <-ctx.Done(): |
| | |
| | | info: &info, |
| | | port: peer, |
| | | } |
| | | |
| | | // if id == routineReply { |
| | | // fmt.Println("repley server recv:", info) |
| | | // } |
| | | } |
| | | } else { |
| | | // time.Sleep(10 * time.Millisecond) |
| | |
| | | // 启动接收线程 |
| | | |
| | | wg.Add(1) |
| | | go recvRoutine(ctx, sockReply, wg, chSub) |
| | | go recvRoutine(ctx, sockReply, wg, chReply, routineReply) |
| | | repS := &sockServer{ |
| | | sock: sockReply, |
| | | info: info.ProcInfo, |
| | |
| | | } |
| | | // 启动接收线程 |
| | | wg.Add(1) |
| | | go recvRoutine(ctx, sockSub, wg, chSub) |
| | | go recvRoutine(ctx, sockSub, wg, chSub, routineSub) |
| | | subC := &sockClient{ |
| | | sock: sockSub, |
| | | peer: -1, |
| | |
| | | return nil |
| | | } |
| | | } |
| | | } else { |
| | | try++ |
| | | if try > count { |
| | | return nil |
| | | } |
| | | } |
| | | } |
| | | } |