1
1
package org.utbot.cpp.clion.plugin
2
2
3
3
import com.intellij.ide.util.RunOnceUtil
4
+ import com.intellij.openapi.components.service
4
5
import com.intellij.openapi.project.Project
5
6
import com.intellij.openapi.startup.StartupActivity
6
7
import org.utbot.cpp.clion.plugin.client.Client
8
+ import org.utbot.cpp.clion.plugin.client.ClientManager
7
9
import org.utbot.cpp.clion.plugin.settings.pluginSettings
8
10
import org.utbot.cpp.clion.plugin.settings.settings
9
11
import org.utbot.cpp.clion.plugin.ui.wizard.UTBotWizard
@@ -12,8 +14,9 @@ import org.utbot.cpp.clion.plugin.utils.invokeOnEdt
12
14
13
15
class UTBotStartupActivity : StartupActivity {
14
16
override fun runActivity (project : Project ) {
15
-
16
- project.getCurrentClient()
17
+ // we initialize Client here, so that initialization will not happen when user issues first
18
+ // generation request which would cause a UI freeze
19
+ initializeClient(project)
17
20
guessPathsOnFirstProjectOpen(project)
18
21
showWizardOnFirstProjectOpen(project)
19
22
}
@@ -27,6 +30,13 @@ class UTBotStartupActivity : StartupActivity {
27
30
}
28
31
}
29
32
33
+ private fun initializeClient (project : Project ) {
34
+ // Here we address the service ClientManager for the first time so that it
35
+ // will be initialized by the ide and Client will be created.
36
+ // Client in turn will create a grpc channel and start heartbeating the server
37
+ project.service<ClientManager >()
38
+ }
39
+
30
40
private fun guessPathsOnFirstProjectOpen (project : Project ) {
31
41
RunOnceUtil .runOnceForProject(project, " Guess UTBot paths in settings" ) {
32
42
project.settings.predictPaths()
0 commit comments