Skip to content

Commit e6de1ab

Browse files
committed
optimize write peer
1 parent 336d758 commit e6de1ab

File tree

2 files changed

+21
-38
lines changed

2 files changed

+21
-38
lines changed

edge/cframe.go

Lines changed: 19 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ import (
1616
)
1717

1818
type Server struct {
19-
registry *Registry
20-
2119
// secret
2220
key string
2321

@@ -44,9 +42,6 @@ type sendReq struct {
4442

4543
type peerConn struct {
4644
addr string
47-
// conn *net.UDPConn
48-
// conn *kcp.UDPSession
49-
// conn net.Conn
5045
conn *smux.Stream
5146
cidr string
5247
}
@@ -60,25 +55,21 @@ func NewServer(laddr, key string, iface *Interface) *Server {
6055
sndq: make([]chan *sendReq, 1000),
6156
}
6257

58+
go s.readLocal()
6359
for i := 0; i < 1000; i++ {
6460
s.sndq[i] = make(chan *sendReq, 10000)
6561
go s.writePeer(s.sndq[i])
6662
}
6763
return s
6864
}
6965

70-
func (s *Server) SetRegistry(r *Registry) {
71-
s.registry = r
72-
}
73-
7466
func (s *Server) SetVPCInstance(vpcInstance vpc.IVPC) {
7567
if s.vpcInstance == nil {
7668
s.vpcInstance = vpcInstance
7769
}
7870
}
7971

8072
func (s *Server) ListenAndServe() error {
81-
go s.readLocal()
8273
lis, err := net.Listen("tcp", s.laddr)
8374
if err != nil {
8475
return err
@@ -185,18 +176,8 @@ func (s *Server) readLocal() {
185176
select {
186177
case s.sndq[idx] <- &sendReq{buf, peer}:
187178
default:
188-
peer.SetWriteDeadline(time.Now().Add(time.Second * 3))
189-
nw, err := peer.Write(buf)
190-
peer.SetWriteDeadline(time.Time{})
191-
if err != nil {
192-
log.Error("write to peer %s fail %v", dst, err)
193-
continue
194-
}
195-
196-
if nw != len(buf) {
197-
log.Error("stream write not full")
198-
continue
199-
}
179+
log.Warn("sndq[%d] is full", idx)
180+
s.write(buf, peer)
200181
}
201182
}
202183
}
@@ -205,18 +186,22 @@ func (s *Server) writePeer(sndq chan *sendReq) {
205186
for req := range sndq {
206187
peer := req.conn
207188
buf := req.buf
208-
peer.SetWriteDeadline(time.Now().Add(time.Second * 3))
209-
nw, err := peer.Write(buf)
210-
peer.SetWriteDeadline(time.Time{})
211-
if err != nil {
212-
log.Error("write to peer fail %v", err)
213-
continue
214-
}
189+
s.write(buf, peer)
190+
}
191+
}
215192

216-
if nw != len(buf) {
217-
log.Error("stream write not full")
218-
continue
219-
}
193+
func (s *Server) write(buf []byte, peer net.Conn) {
194+
peer.SetWriteDeadline(time.Now().Add(time.Second * 3))
195+
nw, err := peer.Write(buf)
196+
peer.SetWriteDeadline(time.Time{})
197+
if err != nil {
198+
log.Error("write to peer fail %v", err)
199+
return
200+
}
201+
202+
if nw != len(buf) {
203+
log.Error("stream write not full")
204+
return
220205
}
221206
}
222207

@@ -337,7 +322,7 @@ func (s *Server) addRoute(peer *codec.Edge) error {
337322
}
338323

339324
func (s *Server) deadlineCheck(peer *codec.Edge, sess *smux.Session) {
340-
tick := time.NewTicker(time.Second * 5)
325+
tick := time.NewTicker(time.Second * 1)
341326
for range tick.C {
342327
if !sess.IsClosed() {
343328
continue

edge/main.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import (
1010
func main() {
1111
logLevel := os.Getenv("LOG_LEVEL")
1212
if len(logLevel) == 0 {
13-
logLevel = "debug"
13+
logLevel = "info"
1414
}
15-
log.Init("log/edge.log", logLevel, 3)
15+
log.Init("edge.log", logLevel, 3)
1616

1717
iface, err := NewInterface()
1818
if err != nil {
@@ -61,7 +61,6 @@ func main() {
6161
if len(ns) <= 0 {
6262
log.Info("use default namespace")
6363
ns = "default"
64-
return
6564
}
6665

6766
s := NewServer(lisAddr, secret, iface)
@@ -75,6 +74,5 @@ func main() {
7574
}
7675
}()
7776

78-
s.SetRegistry(reg)
7977
s.ListenAndServe()
8078
}

0 commit comments

Comments
 (0)