1
0
mirror of https://github.com/fumiama/WireGold.git synced 2026-06-05 07:50:24 +08:00
This commit is contained in:
fumiama
2021-12-31 19:47:52 +08:00
parent 74b788fe7f
commit 2761865178
4 changed files with 20 additions and 6 deletions

View File

@@ -105,8 +105,23 @@ func (m *Me) listen() (conn *net.UDPConn, err error) {
// Read 接收所有发送给本机的报文
// 需要开启 nopipe
func (m *Me) Read() *head.Packet {
return <-m.pipe
func (m *Me) Read(p []byte) (n int, err error) {
if len(m.readptr) > 0 {
n = copy(p, m.readptr)
m.readptr = m.readptr[n:]
if n == len(p) {
return
}
p = p[n:]
}
data := (<-m.pipe).Data
c := copy(p, data)
n += c
if c == len(data) {
return
}
m.readptr = data[c:]
return
}
// 从 conn 读取 sz 字节数据

View File

@@ -39,6 +39,7 @@ type Me struct {
clock map[*head.Packet]uint8
// 本机上层配置
srcport, dstport, mtu uint16
readptr []byte
}
// NewMe 设置本机参数

View File

@@ -2,6 +2,7 @@ package lower
import (
"encoding/binary"
"io"
"os"
"os/exec"
"strconv"
@@ -49,8 +50,7 @@ func (nc *NIC) Start(m *link.Me) {
nc.hasstart = true
go func() { // 接收到 NIC
for nc.hasstart {
packet := m.Read()
n, err := nc.ifce.Write(packet.Data)
n, err := io.Copy(nc.ifce, m)
if err != nil {
logrus.Errorln("[lower] recv write to nic err:", err)
break

View File

@@ -32,11 +32,9 @@ type LogFormat struct{}
// Format implements logrus.Formatter
func (f LogFormat) Format(entry *logrus.Entry) ([]byte, error) {
buf := new(bytes.Buffer)
buf.WriteByte('[')
buf.WriteString(getLogLevelColorCode(entry.Level))
buf.WriteString(strings.ToUpper(entry.Level.String()))
buf.WriteString(colorReset)
buf.WriteString("] ")
buf.WriteString(entry.Message)
buf.WriteString(" \n")
return buf.Bytes(), nil