ref: 44ac90449fa714efd31996e60d7e578e02ac91e5
dir: /Sources/NineSwift/Queue.swift/
//
// Queue.swift
// Altid
//
// Created by halfwit on 2024-01-22.
//
import Foundation
import Network
public struct Queue<T> {
private var elements: [T] = []
mutating func enqueue(_ value: T) {
elements.append(value)
}
mutating func dequeue() -> T? {
guard !elements.isEmpty else {
return nil
}
return elements.removeFirst()
}
var size: Int {
get {
return elements.count
}
}
}
@available(macOS 10.15, *)
public protocol QueueableMessage {
var encodedData: Data {get}
var minReceiveLength: Int {get}
var context: NWConnection.ContentContext {get}
}
@available(macOS 10.15, *)
public struct Enqueued {
let message: QueueableMessage
let action: (NWProtocolFramer.Message, Data?, NWError?) -> Void
init(message: QueueableMessage, action: @escaping (NWProtocolFramer.Message, Data?, NWError?) -> Void) {
self.message = message
self.action = action
}
}