diff options
Diffstat (limited to 'Net1090')
| -rw-r--r-- | Net1090/NetADSBDecoder.swift | 35 | ||||
| -rw-r--r-- | Net1090/main.swift | 13 |
2 files changed, 33 insertions, 15 deletions
diff --git a/Net1090/NetADSBDecoder.swift b/Net1090/NetADSBDecoder.swift index 335a303..36277ee 100644 --- a/Net1090/NetADSBDecoder.swift +++ b/Net1090/NetADSBDecoder.swift @@ -10,7 +10,9 @@ import Network import NIO protocol ADSBQueueDelegate: AnyObject { - var message_array:Array<String> {get set} + //var message_array:Array<String> {get set} + func push(_ message: String) + func pop() -> String? } class NetADSBHandlder: ChannelInboundHandler { @@ -40,15 +42,16 @@ class NetADSBHandlder: ChannelInboundHandler { if self.messageDelegate != nil { if received.count == 17 { let trimmed = received.trimmingCharacters(in: .newlines).lowercased() - messageDelegate?.message_array.append(String(trimmed)) + //messageDelegate?.message_array.append(String(trimmed)) + messageDelegate?.push(String(trimmed)) } else if received.count == 31 { let trimmed = received.trimmingCharacters(in: .newlines).lowercased() - messageDelegate?.message_array.append(String(trimmed)) + messageDelegate?.push(String(trimmed)) } else { for line in received.components(separatedBy: .newlines) { let trimmed = line.trimmingCharacters(in: .newlines).lowercased() - messageDelegate?.message_array.append(String(trimmed)) + messageDelegate?.push(String(trimmed)) } } } @@ -61,8 +64,28 @@ class NetADSBHandlder: ChannelInboundHandler { } } -class ADSBQueue: ADSBQueueDelegate { - var message_array:Array<String> = [] +final class ADSBQueue: ADSBQueueDelegate { + private var message_array:Array<String> = [] + private let lock = NSLock() + + func push(_ message: String) { + lock.lock() + message_array.append(message) + lock.unlock() + } + + func pop() -> String? { + lock.lock() + defer { lock.unlock() } + guard !message_array.isEmpty else { return nil } + return message_array.removeFirst() + } + + var count: Int { + lock.lock() + defer { lock.unlock() } + return message_array.count + } } class NetADSBDecoder { diff --git a/Net1090/main.swift b/Net1090/main.swift index 2620dca..deeae31 100644 --- a/Net1090/main.swift +++ b/Net1090/main.swift @@ -11,10 +11,9 @@ import NIO var timer: Timer? -let ADSBClient = NetADSBDecoder(host: "64.226.23.78", port: 30003) +let ADSBClient = NetADSBDecoder(host: "192.168.7.61", port: 12345) -print("Hello, World!") -print("Start listening client 2") +print("Net1090") //var timer:Timer? timer = Timer.scheduledTimer( @@ -22,12 +21,8 @@ timer = Timer.scheduledTimer( repeats: true ) { _ in print("Timer drain queue") - print("\(ADSBClient.msgarray.message_array.count)") - if ADSBClient.msgarray.message_array.count > 0 { - print(ADSBClient.msgarray.message_array.count) - for i in 0..<ADSBClient.msgarray.message_array.count { - print("adsb-message:\(ADSBClient.msgarray.message_array.popLast()!)") - } + while let msg = ADSBClient.msgarray.pop() { + print(msg) } } |
