Skip to content

Commit 34ca50e

Browse files
committed
feat(devin-lang): refactor process handling in RunConfigurationProfileState #101
Improve the process handling logic in RunConfigurationProfileState to use detaching instead of destroying the
1 parent 29480d5 commit 34ca50e

File tree

2 files changed

+9
-43
lines changed

2 files changed

+9
-43
lines changed

exts/devin-lang/src/main/kotlin/cc/unitmesh/devti/language/run/AutoDevRunConfigurationProducer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class AutoDevRunConfigurationProducer : LazyRunConfigurationProducer<AutoDevConf
3131
val psiLocation = context.psiLocation ?: return false
3232
val psiFile = psiLocation.containingFile as? DevInFile ?: return false
3333
val virtualFile = psiFile.virtualFile ?: return false
34-
val scriptPath = configuration.getScriptPath() ?: return false
34+
val scriptPath = configuration.getScriptPath()
3535

3636
return virtualFile.path == scriptPath
3737
}

exts/devin-lang/src/main/kotlin/cc/unitmesh/devti/language/run/DevInRunConfigurationProfileState.kt

Lines changed: 8 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,7 @@ import com.intellij.execution.runners.ProgramRunner
1414
import com.intellij.execution.ui.ConsoleView
1515
import com.intellij.execution.ui.ConsoleViewContentType
1616
import com.intellij.openapi.project.Project
17-
import com.intellij.openapi.util.io.StreamUtil
18-
import java.io.BufferedInputStream
19-
import java.io.BufferedOutputStream
20-
import java.io.InputStream
2117
import java.io.OutputStream
22-
import java.nio.channels.Channels
23-
import java.nio.channels.Pipe
2418

2519
open class DevInRunConfigurationProfileState(
2620
private val myProject: Project,
@@ -33,62 +27,34 @@ open class DevInRunConfigurationProfileState(
3327
val console: ConsoleView = ConsoleViewWrapperBase(ConsoleViewImpl(myProject, true))
3428

3529
console.attachToProcess(processHandler)
36-
processHandler.startNotify()
3730

3831
console.print("Hello, World!", ConsoleViewContentType.NORMAL_OUTPUT)
39-
processHandler.destroyProcess()
4032

41-
return DefaultExecutionResult(console, processHandler)
33+
// done!
34+
processHandler.detachProcess()
35+
36+
val result = DefaultExecutionResult(console, processHandler)
37+
38+
return result
4239
}
4340

4441
@Throws(ExecutionException::class)
4542
private fun createProcessHandler(myExecutionName: String): ProcessHandler {
4643
return object : BuildProcessHandler() {
47-
var myProcessInputWriter: OutputStream? = null
48-
var myProcessInputReader: InputStream? = null
49-
50-
init {
51-
val pipe = Pipe.open()
52-
53-
myProcessInputWriter = BufferedOutputStream(Channels.newOutputStream(pipe.sink()))
54-
myProcessInputReader = BufferedInputStream(Channels.newInputStream(pipe.source()))
55-
}
56-
5744
override fun detachIsDefault(): Boolean = false
5845

5946
override fun destroyProcessImpl() {
60-
try {
61-
// cancel myTask
62-
// myTask?.cancel()
63-
} finally {
64-
closeInput()
65-
}
66-
67-
// execute default process destroy
68-
super.destroyProcess()
6947
}
7048

7149
override fun detachProcessImpl() {
72-
try {
73-
notifyProcessDetached()
74-
} finally {
75-
closeInput()
76-
}
77-
78-
super.detachProcess()
50+
notifyProcessTerminated(0);
7951
}
8052

81-
override fun getProcessInput(): OutputStream? = myProcessInputWriter
53+
override fun getProcessInput(): OutputStream? = null
8254
override fun getExecutionName(): String = myExecutionName
8355

8456
protected fun closeInput() {
85-
val processInputWriter = myProcessInputWriter
86-
val processInputReader = myProcessInputReader
87-
myProcessInputWriter = null
88-
myProcessInputReader = null
8957

90-
processInputWriter?.close()
91-
processInputReader?.close()
9258
}
9359
}
9460
}

0 commit comments

Comments
 (0)