diff options
author | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2024-08-08 12:25:55 +0100 |
---|---|---|
committer | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2024-08-08 12:25:55 +0100 |
commit | 30a23711626c5afe7f86ca34fbc489d7979b71d9 (patch) | |
tree | 73d131c789c9e6a06d00dfd46ef258e41d704db1 /Net1090/NetADSBDecoder.swift | |
parent | 901397ffe83cbf1aed01e6a77e00db57e9440dac (diff) | |
download | ADSBDecoder-30a23711626c5afe7f86ca34fbc489d7979b71d9.tar.gz ADSBDecoder-30a23711626c5afe7f86ca34fbc489d7979b71d9.zip |
Live data works
Diffstat (limited to 'Net1090/NetADSBDecoder.swift')
-rw-r--r-- | Net1090/NetADSBDecoder.swift | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/Net1090/NetADSBDecoder.swift b/Net1090/NetADSBDecoder.swift index 065bf91..335a303 100644 --- a/Net1090/NetADSBDecoder.swift +++ b/Net1090/NetADSBDecoder.swift @@ -9,10 +9,16 @@ import Foundation import Network import NIO -class ADSBHandlder: ChannelInboundHandler { +protocol ADSBQueueDelegate: AnyObject { + var message_array:Array<String> {get set} +} + +class NetADSBHandlder: ChannelInboundHandler { typealias InboundIn = ByteBuffer typealias OutboundOut = ByteBuffer + var messageDelegate: ADSBQueueDelegate? + func channelActive(context: ChannelHandlerContext) { print("Channel is active") } @@ -21,7 +27,31 @@ class ADSBHandlder: ChannelInboundHandler { var buffer = unwrapInboundIn(data) let readableBytes = buffer.readableBytes if let received = buffer.readString(length: readableBytes) { - print(received,terminator: "") + //print(received,terminator: "") + /* + if let message_queue = message_queue { + message_queue.append(String(received)) + print("Add new messsge") + }*/ + //if self.message_array != nil { + // message_array?.append(String(received)) + // print("\(message_array?.count)") + //} + if self.messageDelegate != nil { + if received.count == 17 { + let trimmed = received.trimmingCharacters(in: .newlines).lowercased() + messageDelegate?.message_array.append(String(trimmed)) + + } else if received.count == 31 { + let trimmed = received.trimmingCharacters(in: .newlines).lowercased() + messageDelegate?.message_array.append(String(trimmed)) + } else { + for line in received.components(separatedBy: .newlines) { + let trimmed = line.trimmingCharacters(in: .newlines).lowercased() + messageDelegate?.message_array.append(String(trimmed)) + } + } + } } } @@ -31,14 +61,24 @@ class ADSBHandlder: ChannelInboundHandler { } } +class ADSBQueue: ADSBQueueDelegate { + var message_array:Array<String> = [] +} + class NetADSBDecoder { let group = MultiThreadedEventLoopGroup(numberOfThreads: 1) var host: String var port: Int + var msgarray = ADSBQueue() + var handler = NetADSBHandlder() + //var msg_array:Array<String> = [] + init(host: String, port: Int) { self.host = host self.port = port + //regiter delegate + handler.messageDelegate = msgarray } func start() throws { @@ -47,7 +87,7 @@ class NetADSBDecoder { .channelOption(ChannelOptions.socket(SocketOptionLevel(SOL_SOCKET), SO_REUSEADDR), value: 1) .channelInitializer{channel in //channel.pipeline.add(handler: ADSBHandlder()) - channel.pipeline.addHandlers([ADSBHandlder()]) + channel.pipeline.addHandlers([self.handler]) }.connect(host: self.host, port: self.port) .wait() try channel.closeFuture.wait() |