测试
This commit is contained in:
parent
d1ed742281
commit
0a95455170
35
device.go
35
device.go
|
@ -11,6 +11,7 @@ import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
gen "slimming/proto/gen"
|
gen "slimming/proto/gen"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -31,6 +32,14 @@ type NetCard struct {
|
||||||
server *RPCServer
|
server *RPCServer
|
||||||
|
|
||||||
clientMap map[string]*RPCClient
|
clientMap map[string]*RPCClient
|
||||||
|
|
||||||
|
lock sync.Mutex
|
||||||
|
}
|
||||||
|
|
||||||
|
func (nc *NetCard) Lock(do func()) {
|
||||||
|
nc.lock.Lock()
|
||||||
|
defer nc.lock.Unlock()
|
||||||
|
do()
|
||||||
}
|
}
|
||||||
|
|
||||||
type RPCClient struct {
|
type RPCClient struct {
|
||||||
|
@ -176,11 +185,14 @@ func (nc *NetCard) runRead() {
|
||||||
var rframe ethernet.Frame
|
var rframe ethernet.Frame
|
||||||
rframe.Resize(1500)
|
rframe.Resize(1500)
|
||||||
|
|
||||||
n, err := ifce.Read([]byte(rframe))
|
nc.Lock(func() {
|
||||||
if err != nil {
|
n, err := ifce.Read([]byte(rframe))
|
||||||
log.Fatal(err)
|
if err != nil {
|
||||||
}
|
log.Fatal(err)
|
||||||
rframe = rframe[:n]
|
}
|
||||||
|
rframe = rframe[:n]
|
||||||
|
})
|
||||||
|
|
||||||
if !waterutil.IsIPv4(rframe) || waterutil.IPv4Source(rframe).Equal(net.IPv4(0, 0, 0, 0)) {
|
if !waterutil.IsIPv4(rframe) || waterutil.IPv4Source(rframe).Equal(net.IPv4(0, 0, 0, 0)) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -260,12 +272,15 @@ func (nc *NetCard) runWrite() {
|
||||||
|
|
||||||
log.Printf("get wframes decode len: %d", len(bufs[0]))
|
log.Printf("get wframes decode len: %d", len(bufs[0]))
|
||||||
|
|
||||||
for _, buf := range bufs {
|
nc.Lock(func() {
|
||||||
_, err := ifce.Write(buf)
|
for _, buf := range bufs {
|
||||||
if err != nil {
|
_, err := ifce.Write(buf)
|
||||||
log.Panic(err)
|
if err != nil {
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user