64bit alignment

pull/395/head v0.26.0
ffdfgdfg 2020-01-09 23:07:39 +08:00
parent a8c0f1653d
commit 0a65975b7e
2 changed files with 11 additions and 8 deletions

View File

@ -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

View File

@ -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) {