import type { MaybePromiseLike } from "@yume-chan/async"; import type { ReadableStream, WritableStream, WritableStreamDefaultWriter, } from "@yume-chan/stream-extra"; import { MaybeConsumable } from "@yume-chan/stream-extra"; import type { AdbSocket } from "../../../adb.js"; import type { AdbPtyProcess } from "../pty.js"; export class AdbNoneProtocolPtyProcess implements AdbPtyProcess { readonly #socket: AdbSocket; readonly #writer: WritableStreamDefaultWriter>; readonly #input: MaybeConsumable.WritableStream; get input(): WritableStream> { return this.#input; } get output(): ReadableStream { return this.#socket.readable; } get exited(): Promise { return this.#socket.closed; } constructor(socket: AdbSocket) { this.#socket = socket; this.#writer = this.#socket.writable.getWriter(); this.#input = new MaybeConsumable.WritableStream({ write: (chunk) => this.#writer.write(chunk), }); } sigint() { return this.#writer.write(new Uint8Array([0x03])); } kill(): MaybePromiseLike { return this.#socket.close(); } }