Skip to content

Commit e2d1955

Browse files
committed
Add handler for termination
1 parent 202f30f commit e2d1955

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

Tool/Sources/CodeiumService/CodeiumService.swift

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class CodeiumService {
4848
var cancellationCounter: UInt64 = 0
4949
let openedDocumentPool = OpenedDocumentPool()
5050
let onServiceLaunched: () -> Void
51+
let onServiceTerminated: () -> Void
5152

5253
let languageServerURL: URL
5354
let supportURL: URL
@@ -63,13 +64,19 @@ public class CodeiumService {
6364
projectRootURL = URL(fileURLWithPath: "/")
6465
server = designatedServer
6566
onServiceLaunched = {}
67+
onServiceTerminated = {}
6668
languageServerURL = URL(fileURLWithPath: "/")
6769
supportURL = URL(fileURLWithPath: "/")
6870
}
6971

70-
public init(projectRootURL: URL, onServiceLaunched: @escaping () -> Void) throws {
72+
public init(
73+
projectRootURL: URL,
74+
onServiceLaunched: @escaping () -> Void,
75+
onServiceTerminated: @escaping () -> Void
76+
) throws {
7177
self.projectRootURL = projectRootURL
7278
self.onServiceLaunched = onServiceLaunched
79+
self.onServiceTerminated = onServiceTerminated
7380
let urls = try CodeiumService.createFoldersIfNeeded()
7481
languageServerURL = urls.executableURL.appendingPathComponent("language_server")
7582
supportURL = urls.supportURL
@@ -117,6 +124,7 @@ public class CodeiumService {
117124
self?.heartbeatTask?.cancel()
118125
self?.requestCounter = 0
119126
self?.cancellationCounter = 0
127+
self?.onServiceTerminated()
120128
Logger.codeium.info("Language server is terminated, will be restarted when needed.")
121129
}
122130

@@ -186,7 +194,7 @@ extension CodeiumService {
186194
throw E()
187195
}
188196
var ideVersion = await XcodeInspector.shared.safe.latestActiveXcode?.version
189-
?? fallbackXcodeVersion
197+
?? fallbackXcodeVersion
190198
let versionNumberSegmentCount = ideVersion.split(separator: ".").count
191199
if versionNumberSegmentCount == 2 {
192200
ideVersion += ".0"
@@ -237,8 +245,8 @@ extension CodeiumService: CodeiumSuggestionServiceType {
237245
let relativePath = getRelativePath(of: fileURL)
238246

239247
let task = Task {
240-
let request = await CodeiumRequest.GetCompletion(requestBody: .init(
241-
metadata: try getMetadata(),
248+
let request = try await CodeiumRequest.GetCompletion(requestBody: .init(
249+
metadata: getMetadata(),
242250
document: .init(
243251
absolute_path: fileURL.path,
244252
relative_path: relativePath,
@@ -266,7 +274,7 @@ extension CodeiumService: CodeiumSuggestionServiceType {
266274

267275
try Task.checkCancellation()
268276

269-
let result = try await (try await setupServerIfNeeded()).sendRequest(request)
277+
let result = try await (await setupServerIfNeeded()).sendRequest(request)
270278

271279
try Task.checkCancellation()
272280

Tool/Sources/CodeiumService/CodeiumWorkspacePlugin.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ public final class CodeiumWorkspacePlugin: WorkspacePlugin {
2828
onServiceLaunched: {
2929
[weak self] in
3030
self?.finishLaunchingService()
31+
},
32+
onServiceTerminated: {
33+
// start handled in the service.
3134
}
3235
)
3336
_codeiumService = newService

0 commit comments

Comments
 (0)