summaryrefslogtreecommitdiff
path: root/Net1090/NetADSBDecoder.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Net1090/NetADSBDecoder.swift')
-rw-r--r--Net1090/NetADSBDecoder.swift46
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()