Add ios command client

This commit is contained in:
problematicconsumer
2024-02-03 21:21:46 +03:30
parent d6bd161a75
commit b1d6c56a3e
5 changed files with 246 additions and 147 deletions

View File

@@ -1,16 +1,11 @@
//
// LogsEventHandler.swift
// Runner
//
// Created by GFWFighter on 10/24/23.
//
import Foundation
import Combine
public class LogsEventHandler: NSObject, FlutterPlugin, FlutterStreamHandler {
static let name = "\(Bundle.main.serviceIdentifier)/service.logs"
private var channel: FlutterEventChannel?
private var cancellable: AnyCancellable?
public static func register(with registrar: FlutterPluginRegistrar) {
let instance = LogsEventHandler()
@@ -19,13 +14,15 @@ public class LogsEventHandler: NSObject, FlutterPlugin, FlutterStreamHandler {
}
public func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {
if VPNManager.shared.logCallback {
events(VPNManager.shared.logList)
VPNManager.shared.logClient?.connect()
cancellable = VPNManager.shared.logClient?.$logList.sink { [events] logsList in
events(logsList)
}
return nil
}
public func onCancel(withArguments arguments: Any?) -> FlutterError? {
cancellable?.cancel()
return nil
}
}

View File

@@ -41,6 +41,7 @@ class VPNManager: ObservableObject {
@Published private(set) var elapsedTime: TimeInterval = 0
@Published private(set) var logList: [String] = []
@Published private(set) var logCallback = false
private(set) var logClient: CommandClient?
private var _connectTime: Date?
private var connectTime: Date? {
@@ -73,6 +74,8 @@ class VPNManager: ObservableObject {
updateStats()
elapsedTime = -1 * (connectTime?.timeIntervalSinceNow ?? 0)
}
logClient = CommandClient(.log)
}
deinit {