func decode_range_ack_chunk(srcAddr *string, r *bytes.Buffer, handler chunk_handler) { flowid := decode_vlu(r) bufAvail := decode_vlu(r) * 1024 cumAck := decode_vlu(r) recvRanges := make([]Range, 0) ackCursor := cumAck + 1 for r.Len() > 0 { pos := ackCursor + decode_vlu(r) + 1 len := decode_vlu(r) + 1 r := MakeRange(pos, pos+len) recvRanges = append(recvRanges, r) ackCursor = r.End() } //fmt.Printf("[RangeACK Chunk]flowid:%d bufAvail:%d cumAck:%d recvRanges:%v \n", // flowid, bufAvail, cumAck, RangeQueueFromArray(recvRanges).String()) if handler != nil { handler.recv_range_ack(srcAddr, flowid, bufAvail, cumAck, recvRanges) } }