add
This commit is contained in:
parent
15e53f1f52
commit
51bf1778c5
@ -72,7 +72,7 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if *tcpmode_maxwin*10 > pingtunnel.FRAME_MAX_ID {
|
if *tcpmode_maxwin*10 > pingtunnel.FRAME_MAX_ID {
|
||||||
fmt.Println("set tcp win to big max = " + strconv.Itoa(pingtunnel.FRAME_MAX_ID/10))
|
fmt.Println("set tcp win to big, max = " + strconv.Itoa(pingtunnel.FRAME_MAX_ID/10))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
17
framemgr.go
17
framemgr.go
@ -207,21 +207,24 @@ func (fm *FrameMgr) processRecvList(tmpreq map[int32]int, tmpack map[int32]int,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(tmpackto) > 0 {
|
if len(tmpackto) > 0 {
|
||||||
f := &Frame{Type: (int32)(Frame_ACK), Resend: false, Sendtime: 0,
|
tmp := make([]int32, len(tmpackto))
|
||||||
Id: 0,
|
|
||||||
Dataid: make([]int32, len(tmpackto))}
|
|
||||||
index := 0
|
index := 0
|
||||||
for id, rf := range tmpackto {
|
for id, rf := range tmpackto {
|
||||||
if fm.addToRecvWin(rf) {
|
if fm.addToRecvWin(rf) {
|
||||||
f.Dataid[index] = id
|
tmp[index] = id
|
||||||
index++
|
index++
|
||||||
loggo.Debug("add data to win %d %d", rf.Id, len(rf.Data))
|
loggo.Debug("add data to win %d %d", rf.Id, len(rf.Data))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if index > 0 {
|
||||||
|
f := &Frame{Type: (int32)(Frame_ACK), Resend: false, Sendtime: 0,
|
||||||
|
Id: 0,
|
||||||
|
Dataid: tmp[0:index]}
|
||||||
fm.sendlist.PushBack(f)
|
fm.sendlist.PushBack(f)
|
||||||
loggo.Debug("send ack %d %s", f.Id, common.Int32ArrayToString(f.Dataid, ","))
|
loggo.Debug("send ack %d %s", f.Id, common.Int32ArrayToString(f.Dataid, ","))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (fm *FrameMgr) addToRecvWin(rf *Frame) bool {
|
func (fm *FrameMgr) addToRecvWin(rf *Frame) bool {
|
||||||
|
|
||||||
@ -267,13 +270,11 @@ func (fm *FrameMgr) compareId(l int, r int) int {
|
|||||||
|
|
||||||
func (fm *FrameMgr) combineWindowToRecvBuffer() {
|
func (fm *FrameMgr) combineWindowToRecvBuffer() {
|
||||||
|
|
||||||
id := fm.recvid
|
|
||||||
|
|
||||||
for {
|
for {
|
||||||
done := false
|
done := false
|
||||||
for e := fm.recvwin.Front(); e != nil; e = e.Next() {
|
for e := fm.recvwin.Front(); e != nil; e = e.Next() {
|
||||||
f := e.Value.(*Frame)
|
f := e.Value.(*Frame)
|
||||||
if f.Id == (int32)(id) {
|
if f.Id == (int32)(fm.recvid) {
|
||||||
left := fm.recvb.Capacity() - fm.recvb.Size()
|
left := fm.recvb.Capacity() - fm.recvb.Size()
|
||||||
if left >= len(f.Data) {
|
if left >= len(f.Data) {
|
||||||
if len(f.Data) == 0 {
|
if len(f.Data) == 0 {
|
||||||
@ -301,7 +302,7 @@ func (fm *FrameMgr) combineWindowToRecvBuffer() {
|
|||||||
|
|
||||||
reqtmp := make(map[int]int)
|
reqtmp := make(map[int]int)
|
||||||
e := fm.recvwin.Front()
|
e := fm.recvwin.Front()
|
||||||
id = fm.recvid
|
id := fm.recvid
|
||||||
for len(reqtmp) < fm.windowsize && len(reqtmp)*4 < FRAME_MAX_SIZE/2 && e != nil {
|
for len(reqtmp) < fm.windowsize && len(reqtmp)*4 < FRAME_MAX_SIZE/2 && e != nil {
|
||||||
f := e.Value.(*Frame)
|
f := e.Value.(*Frame)
|
||||||
loggo.Debug("start add req id %d %d %d", fm.recvid, f.Id, id)
|
loggo.Debug("start add req id %d %d %d", fm.recvid, f.Id, id)
|
||||||
|
Loading…
Reference in New Issue
Block a user