diff --git a/plugins/terminal/backend/resources/intellij.terminal.backend.xml b/plugins/terminal/backend/resources/intellij.terminal.backend.xml index a8dc10198ac1..2aa17a550144 100644 --- a/plugins/terminal/backend/resources/intellij.terminal.backend.xml +++ b/plugins/terminal/backend/resources/intellij.terminal.backend.xml @@ -7,8 +7,6 @@ - diff --git a/plugins/terminal/backend/src/com/intellij/terminal/backend/BackendTerminalInput.kt b/plugins/terminal/backend/src/com/intellij/terminal/backend/BackendTerminalInput.kt index b714e8d61922..38f190b89d43 100644 --- a/plugins/terminal/backend/src/com/intellij/terminal/backend/BackendTerminalInput.kt +++ b/plugins/terminal/backend/src/com/intellij/terminal/backend/BackendTerminalInput.kt @@ -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 -> { diff --git a/plugins/terminal/backend/src/com/intellij/terminal/backend/TerminalSessionStart.kt b/plugins/terminal/backend/src/com/intellij/terminal/backend/TerminalSessionStart.kt index bad030804f24..cdd4622c0698 100644 --- a/plugins/terminal/backend/src/com/intellij/terminal/backend/TerminalSessionStart.kt +++ b/plugins/terminal/backend/src/com/intellij/terminal/backend/TerminalSessionStart.kt @@ -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) diff --git a/plugins/terminal/backend/src/com/intellij/terminal/backend/fus/BackendLatencyServiceImpl.kt b/plugins/terminal/backend/src/com/intellij/terminal/backend/fus/BackendLatencyServiceImpl.kt deleted file mode 100644 index f1103a8a4b72..000000000000 --- a/plugins/terminal/backend/src/com/intellij/terminal/backend/fus/BackendLatencyServiceImpl.kt +++ /dev/null @@ -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() - -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) - } -} \ No newline at end of file diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/fus/BackendLatencyService.kt b/plugins/terminal/src/org/jetbrains/plugins/terminal/fus/BackendLatencyService.kt deleted file mode 100644 index 2114a05fb31d..000000000000 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/fus/BackendLatencyService.kt +++ /dev/null @@ -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() -}