refactor(rpc): name the terminal.subscribe modules (#27444)

Co-authored-by: m4air <m4air@Mac.localdomain>
This commit is contained in:
OrcaWin
2026-10-11 03:36:09 -07:00
committed by GitHub
co-authored by m4air
parent 398cb846ff
commit 7263f4985b
7 changed files with 30 additions and 30 deletions
@@ -4,10 +4,10 @@ import {
decodeTerminalStreamText
} from '../../../../../shared/terminal-stream-protocol'
import { isTerminalInputLockedForClient, sendTerminalStreamInput } from './terminal-input-delivery'
import type { TerminalSubscriptionArgs } from './terminal-legacy-subscription-types'
import type { TerminalSubscriptionArgs } from './terminal-subscribe-types'
import { updateViewportForClient } from './terminal-viewport-update'
type LegacyBinaryControlState = {
type TerminalSubscribeBinaryControlState = {
isClosed: () => boolean
isBuffering: () => boolean
setRegisteredRemoteDesktopDriver: () => void
@@ -17,11 +17,11 @@ type LegacyBinaryControlState = {
sendFrame: (opcode: TerminalStreamOpcode, payload?: Uint8Array<ArrayBufferLike>) => void
}
export function registerLegacyBinaryControlFrames(
export function registerTerminalSubscribeBinaryControlFrames(
args: TerminalSubscriptionArgs,
streamId: number,
remoteDesktopSubscriptionKey: string,
controls: LegacyBinaryControlState
controls: TerminalSubscribeBinaryControlState
): () => void {
const {
params,
@@ -10,13 +10,13 @@ import {
} from './terminal-snapshot-publication'
import { updateViewportForClient } from './terminal-viewport-update'
import type {
LegacyBinarySubscriptionState,
TerminalSubscribeBinaryState,
TerminalSubscriptionArgs
} from './terminal-legacy-subscription-types'
} from './terminal-subscribe-types'
export function activateLegacyBinarySubscription(
export function activateTerminalSubscribeBinaryLive(
args: TerminalSubscriptionArgs,
state: LegacyBinarySubscriptionState
state: TerminalSubscribeBinaryState
): void {
const { params, runtime, emit, ptyId, clientId, isMobile, supportsDesktopViewportClaims } = args
const lateRendererReady = state.lateRendererReadyPromise
@@ -152,7 +152,7 @@ export function activateLegacyBinarySubscription(
).catch(() => {})
}
// Legacy fit-override-changed for non-mobile (desktop) subscribers
// fit-override-changed for non-mobile (desktop) subscribers
state.unsubscribeFit = !isMobile
? runtime.subscribeToFitOverrideChanges(ptyId, (event) => {
const mode =
@@ -11,15 +11,15 @@ import {
trimPendingOutputCoveredBySnapshot
} from './terminal-stream-replay'
import type {
LegacyBinarySubscriptionState,
TerminalSubscribeBinaryState,
TerminalSubscriptionArgs
} from './terminal-legacy-subscription-types'
} from './terminal-subscribe-types'
const MOBILE_RENDERER_MOUNT_READY_TIMEOUT_MS = 3_000
export async function publishLegacyBinaryInitialSnapshot(
export async function publishTerminalSubscribeBinarySnapshot(
args: TerminalSubscriptionArgs,
state: LegacyBinarySubscriptionState
state: TerminalSubscribeBinaryState
): Promise<void> {
const {
params,
@@ -38,7 +38,7 @@ export async function publishLegacyBinaryInitialSnapshot(
if (isMobile && clientId) {
await registration.addMobilePresence(ptyId, clientId, params.viewport)
} else if (clientId && params.viewport) {
// Why: legacy subscribe records geometry without taking ownership; only an explicit activity/claim frame may suppress the host.
// Why: terminal.subscribe records geometry without taking ownership; only an explicit activity/claim frame may suppress the host.
state.registeredRemoteDesktopDriver = true
state.pendingRemoteDesktopViewport = params.viewport
}
@@ -83,7 +83,7 @@ export async function publishLegacyBinaryInitialSnapshot(
!rendererReady &&
(rendererMountRequestedBeforePty || runtime.requestRendererTerminalTabMount(params.terminal))
if (mountRequested) {
// Why: an idle legacy PTY emits no later byte, so wait for a settle proving this remount completed before replaying its screen.
// Why: an idle PTY emits no later byte, so wait for a settle proving this remount completed before replaying its screen.
const mountWaitController = new AbortController()
const abortMountWait = (): void => mountWaitController.abort()
state.abortRendererMountWait = abortMountWait
@@ -16,13 +16,13 @@ import { createTerminalOutputBatcher, type TerminalOutputBatcher } from './termi
import { trimPendingOutputToBudget } from './terminal-stream-replay'
import { allocateTerminalSubscriptionStreamId } from './terminal-subscription-stream-id'
import type {
LegacyBinarySubscriptionState,
TerminalSubscribeBinaryState,
TerminalSubscriptionArgs
} from './terminal-legacy-subscription-types'
} from './terminal-subscribe-types'
import type { TerminalOutputChunk } from './terminal-stream-types'
import { publishLegacyBinaryInitialSnapshot } from './terminal-legacy-subscribe-snapshot'
import { activateLegacyBinarySubscription } from './terminal-legacy-subscribe-live'
import { registerLegacyBinaryControlFrames } from './terminal-legacy-binary-control-frames'
import { publishTerminalSubscribeBinarySnapshot } from './terminal-subscribe-binary-snapshot'
import { activateTerminalSubscribeBinaryLive } from './terminal-subscribe-binary-live'
import { registerTerminalSubscribeBinaryControlFrames } from './terminal-subscribe-binary-control-frames'
const TERMINAL_QUERY_REPLAY_MAX_CHARS = 16 * 1024
export async function runTerminalBinarySubscription(args: TerminalSubscriptionArgs): Promise<void> {
const { runtime, registration, sendBinary, ptyId, clientId, isMobile } = args
@@ -97,7 +97,7 @@ export async function runTerminalBinarySubscription(args: TerminalSubscriptionAr
sendFrame(chunk.opcode ?? TerminalStreamOpcode.Output, chunk.bytes, chunk.seq)
}
})
unregisterBinaryHandler = registerLegacyBinaryControlFrames(
unregisterBinaryHandler = registerTerminalSubscribeBinaryControlFrames(
args,
streamId,
remoteDesktopSubscriptionKey,
@@ -164,7 +164,7 @@ export async function runTerminalBinarySubscription(args: TerminalSubscriptionAr
releaseViewSubscriber()
unsubscribeStreamData()
}
const state: LegacyBinarySubscriptionState = {
const state: TerminalSubscribeBinaryState = {
streamId,
remoteDesktopSubscriptionKey,
get closed() {
@@ -257,10 +257,10 @@ export async function runTerminalBinarySubscription(args: TerminalSubscriptionAr
streamClosed,
sendFrame
}
await publishLegacyBinaryInitialSnapshot(args, state)
await publishTerminalSubscribeBinarySnapshot(args, state)
if (registration.released) {
return
}
activateLegacyBinarySubscription(args, state)
activateTerminalSubscribeBinaryLive(args, state)
await streamClosed
}
@@ -3,7 +3,7 @@ import type { TerminalOutputBatcher } from './terminal-output-batcher'
import { isTerminalReadPayloadIncomplete } from './terminal-stream-replay'
import { serializeBudgetedMobileSnapshot } from './terminal-snapshot-publication'
import { updateViewportForClient } from './terminal-viewport-update'
import type { TerminalSubscriptionArgs } from './terminal-legacy-subscription-types'
import type { TerminalSubscriptionArgs } from './terminal-subscribe-types'
import { allocateTerminalSubscriptionStreamId } from './terminal-subscription-stream-id'
export async function runTerminalLeaseSubscription(args: TerminalSubscriptionArgs): Promise<void> {
@@ -93,7 +93,7 @@ export async function runTerminalJsonSubscription(args: TerminalSubscriptionArgs
const unsubscribeStreamData = runtime.subscribeToTerminalData(ptyId, (data) => {
outputBatcher?.push(data)
})
// Why: the legacy JSON stream can feed a live xterm view, so register as a view subscriber; worst case is a withheld model reply, safer than a double reply.
// Why: the terminal.subscribe JSON stream can feed a live xterm view, so register as a view subscriber; worst case is a withheld model reply, safer than a double reply.
const releaseViewSubscriber = runtime.registerRemoteTerminalViewSubscriber(ptyId)
unsubscribeData = () => {
releaseViewSubscriber()
@@ -1,12 +1,12 @@
import { defineStreamingMethod } from '../../core'
import { TerminalSubscribe } from '../../../../../shared/rpc-contract/terminal-stream-params'
import { isTerminalReadPayloadIncomplete } from './terminal-stream-replay'
import { runTerminalBinarySubscription } from './terminal-legacy-subscribe-binary'
import { runTerminalBinarySubscription } from './terminal-subscribe-binary'
import {
runTerminalJsonSubscription,
runTerminalLeaseSubscription
} from './terminal-legacy-simple-subscriptions'
import type { TerminalSubscriptionArgs } from './terminal-legacy-subscription-types'
} from './terminal-subscribe-json-and-lease'
import type { TerminalSubscriptionArgs } from './terminal-subscribe-types'
import { registerTerminalSubscription } from './terminal-subscription-registration'
export const TERMINAL_SUBSCRIBE_METHODS = [
@@ -27,7 +27,7 @@ export type TerminalSubscriptionArgs = {
serializerGenerationBeforeMobileFit: number
}
export type LegacyBinarySubscriptionState = {
export type TerminalSubscribeBinaryState = {
readonly streamId: number
readonly remoteDesktopSubscriptionKey: string
closed: boolean