summaryrefslogtreecommitdiff
path: root/Net1090/NetADSBDecoder.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Net1090/NetADSBDecoder.swift')
-rw-r--r--Net1090/NetADSBDecoder.swift69
1 files changed, 69 insertions, 0 deletions
diff --git a/Net1090/NetADSBDecoder.swift b/Net1090/NetADSBDecoder.swift
new file mode 100644
index 0000000..065bf91
--- /dev/null
+++ b/Net1090/NetADSBDecoder.swift
@@ -0,0 +1,69 @@
+//
+// NetADSBDecoder.swift
+// Net1090
+//
+// Created by Jacky Jack on 19/07/2024.
+//
+
+import Foundation
+import Network
+import NIO
+
+class ADSBHandlder: ChannelInboundHandler {
+ typealias InboundIn = ByteBuffer
+ typealias OutboundOut = ByteBuffer
+
+ func channelActive(context: ChannelHandlerContext) {
+ print("Channel is active")
+ }
+
+ func channelRead(context: ChannelHandlerContext, data: NIOAny) {
+ var buffer = unwrapInboundIn(data)
+ let readableBytes = buffer.readableBytes
+ if let received = buffer.readString(length: readableBytes) {
+ print(received,terminator: "")
+ }
+ }
+
+ func errorCaught(context: ChannelHandlerContext, error: any Error) {
+ print("error: \(error.localizedDescription)")
+ context.close(promise: nil)
+ }
+}
+
+class NetADSBDecoder {
+ let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
+ var host: String
+ var port: Int
+
+ init(host: String, port: Int) {
+ self.host = host
+ self.port = port
+ }
+
+ func start() throws {
+ do {
+ let channel = try ClientBootstrap(group: group)
+ .channelOption(ChannelOptions.socket(SocketOptionLevel(SOL_SOCKET), SO_REUSEADDR), value: 1)
+ .channelInitializer{channel in
+ //channel.pipeline.add(handler: ADSBHandlder())
+ channel.pipeline.addHandlers([ADSBHandlder()])
+ }.connect(host: self.host, port: self.port)
+ .wait()
+ try channel.closeFuture.wait()
+ } catch let error {
+ print(error)
+ throw error
+ }
+ }
+
+ func stop() {
+ do {
+ try group.syncShutdownGracefully()
+ } catch let error {
+ print("Error shutting down \(error.localizedDescription)")
+ exit(0)
+ }
+ print("Connection closed")
+ }
+}