remove: listener_channe, signal, taskgroup

This commit is contained in:
zhshch2002
2022-05-24 10:45:54 +08:00
parent 738ff949b1
commit 69388c956e
5 changed files with 2 additions and 135 deletions

View File

@@ -1,61 +0,0 @@
package listener_channel
import (
"golang.org/x/net/context"
"net"
"time"
)
type ReceivedMessage struct {
N *int
Peer net.Addr
Msg []byte
Err error
}
type ListenerChannel struct {
ctx context.Context
cancel context.CancelFunc
Conn net.PacketConn
Messages chan ReceivedMessage
}
func New(conn net.PacketConn) *ListenerChannel {
ctx, cancel := context.WithCancel(context.Background())
results := make(chan ReceivedMessage, 50)
return &ListenerChannel{Conn: conn, ctx: ctx, cancel: cancel, Messages: results}
}
func (l *ListenerChannel) Start() {
for {
select {
case <-l.ctx.Done():
return
default:
}
reply := make([]byte, 1500)
err := l.Conn.SetReadDeadline(time.Now().Add(2 * time.Second))
if err != nil {
l.Messages <- ReceivedMessage{Err: err}
continue
}
n, peer, err := l.Conn.ReadFrom(reply)
if err != nil {
l.Messages <- ReceivedMessage{Err: err}
continue
}
l.Messages <- ReceivedMessage{
N: &n,
Peer: peer,
Err: nil,
Msg: reply,
}
}
}
func (l *ListenerChannel) Stop() {
l.cancel()
}

View File

@@ -1,19 +0,0 @@
package signal
type Signal struct {
sigChan chan struct{}
}
func New() *Signal {
return &Signal{sigChan: make(chan struct{}, 1)}
}
func (s *Signal) Signal() {
if len(s.sigChan) == 0 {
s.sigChan <- struct{}{}
}
}
func (s *Signal) Chan() chan struct{} {
return s.sigChan
}

View File

@@ -1,45 +0,0 @@
package taskgroup
import (
"sync"
)
type TaskGroup struct {
count int
mu sync.Mutex
done []chan struct{}
}
func New() *TaskGroup {
return &TaskGroup{
count: 0,
mu: sync.Mutex{},
done: []chan struct{}{},
}
}
func (t *TaskGroup) Add() {
t.mu.Lock()
defer t.mu.Unlock()
t.count++
}
func (t *TaskGroup) Done() {
t.mu.Lock()
defer t.mu.Unlock()
if t.count-1 == 0 {
for _, doneChannel := range t.done {
doneChannel <- struct{}{}
}
t.done = []chan struct{}{}
}
t.count--
}
func (t *TaskGroup) Wait() {
doneChannel := make(chan struct{})
t.mu.Lock()
t.done = append(t.done, doneChannel)
t.mu.Unlock()
<-doneChannel
}

View File

@@ -10,7 +10,6 @@ import (
"github.com/google/gopacket"
"github.com/google/gopacket/layers"
"github.com/xgadget-lab/nexttrace/listener_channel"
"github.com/xgadget-lab/nexttrace/util"
"golang.org/x/net/context"
"golang.org/x/net/icmp"
@@ -110,10 +109,7 @@ func (t *TCPTracer) listenICMP() {
// @title listenTCP
// @description 监听TCP的响应数据包
func (t *TCPTracer) listenTCP() {
lc := listener_channel.New(t.tcp)
defer lc.Stop()
lc := NewPacketListener(t.tcp, t.ctx)
go lc.Start()
for {

View File

@@ -10,7 +10,6 @@ import (
"github.com/google/gopacket"
"github.com/google/gopacket/layers"
"github.com/xgadget-lab/nexttrace/listener_channel"
"github.com/xgadget-lab/nexttrace/util"
"golang.org/x/net/context"
"golang.org/x/net/icmp"
@@ -111,10 +110,7 @@ func (t *TCPTracerv6) listenICMP() {
// @title listenTCP
// @description 监听TCP的响应数据包
func (t *TCPTracerv6) listenTCP() {
lc := listener_channel.New(t.tcp)
defer lc.Stop()
lc := NewPacketListener(t.tcp, t.ctx)
go lc.Start()
for {