diff options
author | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2024-07-16 06:45:43 +0100 |
---|---|---|
committer | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2024-07-16 06:45:43 +0100 |
commit | b32ecfab276fb8e1dff0e1d72ed819b548323328 (patch) | |
tree | c6b5b70754252520fd0b32513e76bb439b5bbfa5 /Net1090 | |
parent | 96cd6ab4bc219810779fe57158dfdf7627c5a5a0 (diff) | |
download | ADSBDecoder-b32ecfab276fb8e1dff0e1d72ed819b548323328.tar.gz ADSBDecoder-b32ecfab276fb8e1dff0e1d72ed819b548323328.zip |
Working implementation of ADSB loaded from file. Net1090 can read from dump1090 socket
Diffstat (limited to 'Net1090')
-rw-r--r-- | Net1090/main.swift | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Net1090/main.swift b/Net1090/main.swift new file mode 100644 index 0000000..93ff716 --- /dev/null +++ b/Net1090/main.swift @@ -0,0 +1,75 @@ +// +// main.swift +// Net1090 +// +// Created by Jacky Jack on 11/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 TCPClient { + 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() { + + } +} + +print("Hello, World!") +print("Start listening client") + +let ADSBClient = TCPClient(host: "192.168.4.201", port: 30002) +do { + try ADSBClient.start() +} catch let error { + print("Error: \(error.localizedDescription)") + ADSBClient.stop() +} + |