From ec325fee141c1e9757144a0a4094061b56839b78 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Fri, 12 May 2023 14:33:40 +0200 Subject: [chore] Update a bunch of database dependencies (#1772) * [chore] Update a bunch of database dependencies * fix lil thing --- .../jackc/pgx/v5/internal/nbconn/bufferqueue.go | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 vendor/github.com/jackc/pgx/v5/internal/nbconn/bufferqueue.go (limited to 'vendor/github.com/jackc/pgx/v5/internal/nbconn/bufferqueue.go') diff --git a/vendor/github.com/jackc/pgx/v5/internal/nbconn/bufferqueue.go b/vendor/github.com/jackc/pgx/v5/internal/nbconn/bufferqueue.go new file mode 100644 index 000000000..4bf25481c --- /dev/null +++ b/vendor/github.com/jackc/pgx/v5/internal/nbconn/bufferqueue.go @@ -0,0 +1,70 @@ +package nbconn + +import ( + "sync" +) + +const minBufferQueueLen = 8 + +type bufferQueue struct { + lock sync.Mutex + queue []*[]byte + r, w int +} + +func (bq *bufferQueue) pushBack(buf *[]byte) { + bq.lock.Lock() + defer bq.lock.Unlock() + + if bq.w >= len(bq.queue) { + bq.growQueue() + } + bq.queue[bq.w] = buf + bq.w++ +} + +func (bq *bufferQueue) pushFront(buf *[]byte) { + bq.lock.Lock() + defer bq.lock.Unlock() + + if bq.w >= len(bq.queue) { + bq.growQueue() + } + copy(bq.queue[bq.r+1:bq.w+1], bq.queue[bq.r:bq.w]) + bq.queue[bq.r] = buf + bq.w++ +} + +func (bq *bufferQueue) popFront() *[]byte { + bq.lock.Lock() + defer bq.lock.Unlock() + + if bq.r == bq.w { + return nil + } + + buf := bq.queue[bq.r] + bq.queue[bq.r] = nil // Clear reference so it can be garbage collected. + bq.r++ + + if bq.r == bq.w { + bq.r = 0 + bq.w = 0 + if len(bq.queue) > minBufferQueueLen { + bq.queue = make([]*[]byte, minBufferQueueLen) + } + } + + return buf +} + +func (bq *bufferQueue) growQueue() { + desiredLen := (len(bq.queue) + 1) * 3 / 2 + if desiredLen < minBufferQueueLen { + desiredLen = minBufferQueueLen + } + + newQueue := make([]*[]byte, desiredLen) + copy(newQueue, bq.queue) + bq.queue = newQueue +} -- cgit v1.2.3