replace ArrayList with Queue

This commit is contained in:
Egge
2023-05-16 17:16:38 +02:00
parent 4184609a00
commit 5b15237b95

View File

@@ -3,6 +3,7 @@
import {verifySignature, validateEvent, type Event} from './event.ts' import {verifySignature, validateEvent, type Event} from './event.ts'
import {matchFilters, type Filter} from './filter.ts' import {matchFilters, type Filter} from './filter.ts'
import {getHex64, getSubscriptionId} from './fakejson.ts' import {getHex64, getSubscriptionId} from './fakejson.ts'
import { MessageQueue } from './utils.ts'
type RelayEvent = { type RelayEvent = {
connect: () => void | Promise<void> connect: () => void | Promise<void>
@@ -122,24 +123,24 @@ export function relayInit(
listeners.disconnect.forEach(cb => cb()) listeners.disconnect.forEach(cb => cb())
} }
let incomingMessageQueue: string[] = [] let incomingMessageQueue: MessageQueue = new MessageQueue()
let handleNextInterval: any let handleNextInterval: any
ws.onmessage = e => { ws.onmessage = e => {
incomingMessageQueue.push(e.data) incomingMessageQueue.enqueue(e.data)
if (!handleNextInterval) { if (!handleNextInterval) {
handleNextInterval = setInterval(handleNext, 0) handleNextInterval = setInterval(handleNext, 0)
} }
} }
function handleNext() { function handleNext() {
if (incomingMessageQueue.length === 0) { if (incomingMessageQueue.size === 0) {
clearInterval(handleNextInterval) clearInterval(handleNextInterval)
handleNextInterval = null handleNextInterval = null
return return
} }
var json = incomingMessageQueue.shift() var json = incomingMessageQueue.dequeue()
if (!json) return if (!json) return
let subid = getSubscriptionId(json) let subid = getSubscriptionId(json)