@@ -18,9 +18,10 @@ public enum XPCExtensionServiceError: Swift.Error, LocalizedError {
1818 }
1919}
2020
21- @XPCServiceActor
2221public class XPCExtensionService {
22+ @XPCServiceActor
2323 var service : XPCService ?
24+ @XPCServiceActor
2425 var connection : NSXPCConnection ? { service? . connection }
2526 let logger : Logger
2627 let bridge : XPCCommunicationBridge
@@ -33,6 +34,7 @@ public class XPCExtensionService {
3334
3435 /// Launches the extension service if it's not running, returns true if the service has finished
3536 /// launching and the communication becomes available.
37+ @XPCServiceActor
3638 public func launchIfNeeded( ) async throws -> Bool {
3739 try await bridge. launchExtensionServiceIfNeeded ( ) != nil
3840 }
@@ -203,24 +205,30 @@ public class XPCExtensionService {
203205
204206extension XPCExtensionService : XPCServiceDelegate {
205207 public func connectionDidInterrupt( ) async {
206- service = nil
208+ Task { @XPCServiceActor in
209+ service = nil
210+ }
207211 }
208212
209213 public func connectionDidInvalidate( ) async {
210- service = nil
214+ Task { @XPCServiceActor in
215+ service = nil
216+ }
211217 }
212218}
213219
214220extension XPCExtensionService {
221+ @XPCServiceActor
215222 private func updateEndpoint( _ endpoint: NSXPCListenerEndpoint ) {
216223 service = XPCService (
217224 kind: . anonymous( endpoint: endpoint) ,
218225 interface: NSXPCInterface ( with: XPCServiceProtocol . self) ,
219- logger: logger
226+ logger: logger,
227+ delegate: self
220228 )
221- service? . delegate = self
222229 }
223230
231+ @XPCServiceActor
224232 private func withXPCServiceConnected< T> (
225233 _ fn: @escaping ( XPCServiceProtocol , AutoFinishContinuation < T > ) -> Void
226234 ) async throws -> T {
@@ -247,6 +255,7 @@ extension XPCExtensionService {
247255 }
248256 }
249257
258+ @XPCServiceActor
250259 private func suggestionRequest(
251260 _ editorContent: EditorContent ,
252261 _ fn: @escaping ( any XPCServiceProtocol ) -> ( Data , @escaping ( Data ? , Error ? ) -> Void )
0 commit comments