file provider experiment

This commit is contained in:
Evgeny Poberezkin 2022-06-02 22:44:32 +01:00
parent b62f2acca7
commit 360553deeb
2 changed files with 18 additions and 9 deletions

View File

@ -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)")
})
}

View File

@ -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)")
}