From bbe2c60aa325c243b45b61d937c432d536c07c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Sat, 17 Aug 2024 21:27:07 +0800 Subject: [PATCH] feat(me): concurrency send --- gold/link/me.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/gold/link/me.go b/gold/link/me.go index 221b9d0..15910c1 100644 --- a/gold/link/me.go +++ b/gold/link/me.go @@ -16,6 +16,7 @@ import ( "github.com/fumiama/WireGold/config" "github.com/fumiama/WireGold/gold/head" "github.com/fumiama/WireGold/gold/p2p" + "github.com/fumiama/WireGold/helper" "github.com/fumiama/WireGold/lower" ) @@ -245,9 +246,14 @@ func (m *Me) sendAllSameDst(packet []byte) (n int) { logrus.Warnln("[me] drop packet to", dst.String()+":"+strconv.Itoa(int(m.DstPort())), ": nil nexthop") return } - _, err := lnk.WriteAndPut(head.NewPacket(head.ProtoData, m.SrcPort(), lnk.peerip, m.DstPort(), packet), false) - if err != nil { - logrus.Warnln("[me] write to peer", lnk.peerip, "err:", err) - } + pcp := helper.MakeBytes(len(packet)) + copy(pcp, packet) + go func(packet []byte) { + defer helper.PutBytes(packet) + _, err := lnk.WriteAndPut(head.NewPacket(head.ProtoData, m.SrcPort(), lnk.peerip, m.DstPort(), packet), false) + if err != nil { + logrus.Warnln("[me] write to peer", lnk.peerip, "err:", err) + } + }(pcp) return }