From 360553deeb4c7192d06be727ea45ff21229d2409 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Thu, 2 Jun 2022 22:44:32 +0100 Subject: [PATCH] file provider experiment --- apps/ios/Shared/SimpleXApp.swift | 9 ++++++--- .../FileProviderExtension.swift | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/apps/ios/Shared/SimpleXApp.swift b/apps/ios/Shared/SimpleXApp.swift index 4591d76b4f..2f2f6589ad 100644 --- a/apps/ios/Shared/SimpleXApp.swift +++ b/apps/ios/Shared/SimpleXApp.swift @@ -14,12 +14,15 @@ let logger = Logger() let machMessenger = MachMessenger(APP_MACH_PORT, callback: receivedMachMessage) func receivedMachMessage(msgId: Int32, msg: String) -> String? { -// logger.debug("MachMessenger: receivedMachMessage \"\(msg)\" from NSE, replying") + logger.debug("MachMessenger: receivedMachMessage from FPS") // return "reply from App to: \(msg)" if let data = msg.data(using: .utf8) { + logger.debug("receivedMachMessage has data") let endpoint = try! NSKeyedUnarchiver.unarchivedObject(ofClass: NSXPCListenerEndpoint.self, from: data)! + logger.debug("receivedMachMessage has endpoint") let connection = NSXPCConnection(listenerEndpoint: endpoint) + logger.debug("receivedMachMessage has connection") connection.remoteObjectInterface = NSXPCInterface(with: SimpleXFPServiceProtocol.self) // Start the connection. @@ -36,9 +39,9 @@ func receivedMachMessage(msgId: Int32, msg: String) -> String? { fatalError("*** Unable to cast \(rawProxy) to a DesiredProtocol instance ***") } - logger.debug("testFPService calling service") + logger.debug("receivedMachMessage calling service") proxy.upperCaseString("hello to service", withReply: { reply in - logger.debug("testFPService reply from service \(reply)") + logger.debug("receivedMachMessage reply from service \(reply)") }) } diff --git a/apps/ios/SimpleX Service/FileProviderExtension.swift b/apps/ios/SimpleX Service/FileProviderExtension.swift index 1321449893..604742809e 100644 --- a/apps/ios/SimpleX Service/FileProviderExtension.swift +++ b/apps/ios/SimpleX Service/FileProviderExtension.swift @@ -11,7 +11,7 @@ import OSLog import SimpleXChat let logger = Logger() -let serviceListener = NSXPCListener.service() +let serviceListener = NSXPCListener.anonymous() let listenerDelegate = SimpleXFPServiceDelegate() var machMessenger = MachMessenger(FPS_MACH_PORT, callback: receivedAppMachMessage) @@ -28,13 +28,19 @@ class FileProviderExtension: NSFileProviderExtension { super.init() machMessenger.start() serviceListener.delegate = listenerDelegate + Task { serviceListener.resume() } do { - let endPointData = try NSKeyedArchiver.archivedData(withRootObject: serviceListener.endpoint, requiringSecureCoding: true) - let err = machMessenger.sendMessage(APP_MACH_PORT, data: endPointData) - logger.debug("FileProviderExtension.MachMessenger.sendMessage with endpoint res \(String(describing: err), privacy: .public)") - // let res = machMessenger.sendMessageWithReply(APP_MACH_PORT, msg: "machMessenger in FileProviderExtension") - // logger.debug("FileProviderExtension MachMessenger app reply \(String(describing: res), privacy: .public)") +// logger.debug("FileProviderExtension.endPointData...") +// let data = NSMutableData() +// let coder = NSXPCCoder() +// coder.encodeRootObject(serviceListener.endpoint) // serviceListener.endpoint.encode(with: <#T##NSCoder#>) +// let endPointData = try NSKeyedArchiver.archivedData(withRootObject: serviceListener.endpoint, requiringSecureCoding: true) +// logger.debug("FileProviderExtension.endPointData ok") +// let err = machMessenger.sendMessage(APP_MACH_PORT, data: endPointData) +// logger.debug("FileProviderExtension.MachMessenger.sendMessage with endpoint res \(String(describing: err), privacy: .public)") +// let res = machMessenger.sendMessageWithReply(APP_MACH_PORT, msg: "machMessenger in FileProviderExtension") +// logger.debug("FileProviderExtension MachMessenger app reply \(String(describing: res), privacy: .public)") } catch let err { logger.debug("FileProviderExtension.MachMessenger.sendMessage error \(String(describing: err), privacy: .public)") }