[terminal] IJPL-182482 Drop backend typing activity

Backend typing latency measurement will be reimplemented in the next commit.

GitOrigin-RevId: 4c1178a7c02d8740183883dca5b44e2199f27612
This commit is contained in:
Konstantin Hudyakov
2025-04-15 07:32:53 +00:00
committed by intellij-monorepo-bot
parent d3c53e874a
commit f612b74235
5 changed files with 0 additions and 90 deletions
@@ -7,8 +7,6 @@
<extensions defaultExtensionNs="com.intellij">
<platform.rpc.backend.remoteApiProvider implementation="com.intellij.terminal.backend.rpc.TerminalRemoteApiProvider"/>
<applicationService serviceInterface="org.jetbrains.plugins.terminal.fus.BackendLatencyService"
serviceImplementation="com.intellij.terminal.backend.fus.BackendLatencyServiceImpl"/>
<projectService serviceInterface="com.intellij.terminal.backend.TerminalPortForwardingManager"
serviceImplementation="com.intellij.terminal.backend.TerminalNoPortForwardingManager"/>
</extensions>
@@ -9,8 +9,6 @@ import kotlinx.coroutines.channels.ReceiveChannel
import kotlinx.coroutines.channels.SendChannel
import kotlinx.coroutines.launch
import org.jetbrains.plugins.terminal.block.ui.withLock
import org.jetbrains.plugins.terminal.fus.BackendLatencyService
import org.jetbrains.plugins.terminal.fus.ReworkedTerminalUsageCollector
import org.jetbrains.plugins.terminal.util.STOP_EMULATOR_TIMEOUT
import org.jetbrains.plugins.terminal.util.waitFor
import java.util.concurrent.CancellationException
@@ -52,7 +50,6 @@ private fun handleInputEvent(event: TerminalInputEvent, services: JediTermServic
when (event) {
is TerminalWriteBytesEvent -> {
BackendLatencyService.getInstance().tryStartBackendTypingActivity(event)
terminalStarter.sendBytes(event.bytes, false)
}
is TerminalResizeEvent -> {
@@ -6,11 +6,9 @@ import com.intellij.openapi.project.Project
import com.intellij.platform.util.coroutines.childScope
import com.intellij.terminal.JBTerminalSystemSettingsProviderBase
import com.intellij.terminal.TerminalExecutorServiceManagerImpl
import com.intellij.terminal.backend.fus.installFusListener
import com.intellij.terminal.session.TerminalSession
import com.intellij.terminal.session.TerminalSessionTerminatedEvent
import com.intellij.util.AwaitCancellationAndInvoke
import com.intellij.util.asDisposable
import com.intellij.util.awaitCancellationAndInvoke
import com.jediterm.core.typeahead.TerminalTypeAheadManager
import com.jediterm.core.util.TermSize
@@ -54,7 +52,6 @@ internal fun createTerminalSession(
coroutineScope: CoroutineScope,
): TerminalSession {
val observableTtyConnector = ttyConnector as? ObservableTtyConnector ?: ObservableTtyConnector(ttyConnector)
installFusListener(observableTtyConnector, parentDisposable = coroutineScope.asDisposable())
val maxHistoryLinesCount = AdvancedSettings.getInt("terminal.buffer.max.lines.count")
val services: JediTermServices = createJediTermServices(observableTtyConnector, initialSize, maxHistoryLinesCount, settings)
@@ -1,59 +0,0 @@
package com.intellij.terminal.backend.fus
import com.intellij.openapi.Disposable
import com.intellij.terminal.backend.ObservableTtyConnector
import com.intellij.terminal.backend.TtyConnectorListener
import com.intellij.terminal.session.TerminalWriteBytesEvent
import fleet.multiplatform.shims.ConcurrentHashMap
import org.jetbrains.plugins.terminal.fus.BackendLatencyService
import org.jetbrains.plugins.terminal.fus.BackendTypingActivity
import org.jetbrains.plugins.terminal.fus.ReworkedTerminalUsageCollector
import kotlin.time.TimeSource
internal class BackendLatencyServiceImpl : BackendLatencyService {
override fun tryStartBackendTypingActivity(event: TerminalWriteBytesEvent) {
val id = event.id
val bytes = event.bytes
val activity = BackendTypingActivityImpl(id, bytes)
backendTypingActivityByByteArray[bytes] = activity
}
override fun getBackendTypingActivityOrNull(bytes: ByteArray): BackendTypingActivity? {
return backendTypingActivityByByteArray[bytes]
}
}
internal fun installFusListener(
ttyConnector: ObservableTtyConnector,
parentDisposable: Disposable,
) {
ttyConnector.addListener(parentDisposable, object : TtyConnectorListener {
override fun bytesWritten(bytes: ByteArray) {
val typingActivity = BackendLatencyService.getInstance().getBackendTypingActivityOrNull(bytes) ?: return
try {
typingActivity.reportDuration()
}
finally {
typingActivity.finishBytesProcessing()
}
}
})
}
private val backendTypingActivityByByteArray = ConcurrentHashMap<ByteArray, BackendTypingActivityImpl>()
private class BackendTypingActivityImpl(override val id: Int, private val bytes: ByteArray) : BackendTypingActivity {
private val start = TimeSource.Monotonic.markNow()
override fun reportDuration() {
val duration = start.elapsedNow()
ReworkedTerminalUsageCollector.logBackendLatency(
inputEventId = id,
duration = duration,
)
}
override fun finishBytesProcessing() {
backendTypingActivityByByteArray.remove(bytes)
}
}
@@ -1,23 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.plugins.terminal.fus
import com.intellij.openapi.components.service
import com.intellij.terminal.session.TerminalWriteBytesEvent
import org.jetbrains.annotations.ApiStatus
@ApiStatus.Internal
interface BackendLatencyService {
companion object {
@JvmStatic
fun getInstance(): BackendLatencyService = service()
}
fun tryStartBackendTypingActivity(event: TerminalWriteBytesEvent)
fun getBackendTypingActivityOrNull(bytes: ByteArray): BackendTypingActivity?
}
@ApiStatus.Internal
interface BackendTypingActivity {
val id: Int
fun reportDuration()
fun finishBytesProcessing()
}