mirror of https://github.com/ehang-io/nps
parent
a8c0f1653d
commit
0a65975b7e
|
@ -199,7 +199,7 @@ func (Self *window) CloseWindow() {
|
|||
|
||||
type ReceiveWindow struct {
|
||||
window
|
||||
bufQueue ReceiveWindowQueue
|
||||
bufQueue *ReceiveWindowQueue
|
||||
element *common.ListElement
|
||||
count int8
|
||||
bw *writeBandwidth
|
||||
|
@ -210,7 +210,7 @@ type ReceiveWindow struct {
|
|||
|
||||
func (Self *ReceiveWindow) New(mux *Mux) {
|
||||
// initial a window for receive
|
||||
Self.bufQueue.New()
|
||||
Self.bufQueue = NewReceiveWindowQueue()
|
||||
Self.element = common.ListElementPool.Get()
|
||||
Self.maxSizeDone = Self.pack(common.MAXIMUM_SEGMENT_SIZE*30, 0, false)
|
||||
Self.mux = mux
|
||||
|
|
|
@ -209,10 +209,10 @@ func NewListElement(buf []byte, l uint16, part bool) (element *common.ListElemen
|
|||
}
|
||||
|
||||
type ReceiveWindowQueue struct {
|
||||
lengthWait uint64
|
||||
chain *bufChain
|
||||
stopOp chan struct{}
|
||||
readOp chan struct{}
|
||||
lengthWait uint64 // really strange ???? need put here
|
||||
// https://golang.org/pkg/sync/atomic/#pkg-note-BUG
|
||||
// On non-Linux ARM, the 64-bit functions use instructions unavailable before the ARMv6k core.
|
||||
// On ARM, x86-32, and 32-bit MIPS, it is the caller's responsibility
|
||||
|
@ -221,11 +221,14 @@ type ReceiveWindowQueue struct {
|
|||
timeout time.Time
|
||||
}
|
||||
|
||||
func (Self *ReceiveWindowQueue) New() {
|
||||
Self.readOp = make(chan struct{})
|
||||
Self.chain = new(bufChain)
|
||||
Self.chain.new(64)
|
||||
Self.stopOp = make(chan struct{}, 2)
|
||||
func NewReceiveWindowQueue() *ReceiveWindowQueue {
|
||||
queue := ReceiveWindowQueue{
|
||||
chain: new(bufChain),
|
||||
stopOp: make(chan struct{}, 2),
|
||||
readOp: make(chan struct{}),
|
||||
}
|
||||
queue.chain.new(64)
|
||||
return &queue
|
||||
}
|
||||
|
||||
func (Self *ReceiveWindowQueue) Push(element *common.ListElement) {
|
||||
|
|
Loading…
Reference in New Issue