fix(stream): remove UnwrapStream, it doesn't work

This commit is contained in:
Simon Chan 2024-10-13 01:54:22 +08:00
parent d862077c34
commit 6a18fa293b
No known key found for this signature in database
GPG key ID: A8B69F750B9BCEDD
6 changed files with 13 additions and 37 deletions

View file

@ -6,8 +6,6 @@ import {
MaybeConsumable, MaybeConsumable,
PushReadableStream, PushReadableStream,
tryClose, tryClose,
WrapWritableStream,
WritableStream,
} from "@yume-chan/stream-extra"; } from "@yume-chan/stream-extra";
import type { ValueOrPromise } from "@yume-chan/struct"; import type { ValueOrPromise } from "@yume-chan/struct";
@ -36,7 +34,7 @@ function nodeSocketToConnection(
tryClose(controller); tryClose(controller);
}); });
}), }),
writable: new WritableStream<Uint8Array>({ writable: new MaybeConsumable.WritableStream<Uint8Array>({
write: (chunk) => { write: (chunk) => {
return new Promise<void>((resolve, reject) => { return new Promise<void>((resolve, reject) => {
socket.write(chunk, (err) => { socket.write(chunk, (err) => {
@ -100,9 +98,7 @@ export class AdbServerNodeTcpConnector
await handler({ await handler({
service: address!, service: address!,
readable: connection.readable, readable: connection.readable,
writable: new WrapWritableStream( writable: connection.writable,
connection.writable,
).bePipedThroughFrom(new MaybeConsumable.UnwrapStream()),
get closed() { get closed() {
return connection.closed; return connection.closed;
}, },

View file

@ -41,8 +41,8 @@ async function pipeFileData(
file.pipeThrough(new DistributionStream(packetSize, true)) file.pipeThrough(new DistributionStream(packetSize, true))
.pipeTo( .pipeTo(
new MaybeConsumable.WritableStream({ new MaybeConsumable.WritableStream({
write: async (chunk) => { write(chunk) {
await adbSyncWriteRequest( return adbSyncWriteRequest(
locked, locked,
AdbSyncRequestId.Data, AdbSyncRequestId.Data,
chunk, chunk,

View file

@ -35,9 +35,9 @@ export class AdbSyncSocketLocked implements AsyncExactReadable {
this.#combiner = new BufferCombiner(bufferSize); this.#combiner = new BufferCombiner(bufferSize);
} }
async #write(buffer: Uint8Array) { #write(buffer: Uint8Array) {
// `#combiner` will reuse the buffer, so we need to use the Consumable pattern // `#combiner` will reuse the buffer, so we need to use the Consumable pattern
await Consumable.WritableStream.write(this.#writer, buffer); return Consumable.WritableStream.write(this.#writer, buffer);
} }
async flush() { async flush() {

View file

@ -6,11 +6,10 @@ import type {
AbortSignal, AbortSignal,
ReadableWritablePair, ReadableWritablePair,
WritableStreamDefaultWriter, WritableStreamDefaultWriter,
MaybeConsumable,
} from "@yume-chan/stream-extra"; } from "@yume-chan/stream-extra";
import { import {
BufferedReadableStream, BufferedReadableStream,
MaybeConsumable,
WrapWritableStream,
tryCancel, tryCancel,
tryClose, tryClose,
} from "@yume-chan/stream-extra"; } from "@yume-chan/stream-extra";
@ -211,8 +210,8 @@ export class AdbServerClient {
readonly wireless = new AdbServerClient.WirelessCommands(this); readonly wireless = new AdbServerClient.WirelessCommands(this);
readonly mDns = new AdbServerClient.MDnsCommands(this); readonly mDns = new AdbServerClient.MDnsCommands(this);
constructor(connection: AdbServerClient.ServerConnector) { constructor(connector: AdbServerClient.ServerConnector) {
this.connector = connection; this.connector = connector;
} }
async createConnection( async createConnection(
@ -437,9 +436,7 @@ export class AdbServerClient {
transportId, transportId,
service, service,
readable: socket.readable, readable: socket.readable,
writable: new WrapWritableStream( writable: socket.writable,
socket.writable,
).bePipedThroughFrom(new MaybeConsumable.UnwrapStream()),
get closed() { get closed() {
return socket.closed; return socket.closed;
}, },
@ -567,7 +564,7 @@ export namespace AdbServerClient {
} }
export interface ServerConnection export interface ServerConnection
extends ReadableWritablePair<Uint8Array, Uint8Array>, extends ReadableWritablePair<Uint8Array, MaybeConsumable<Uint8Array>>,
Closeable { Closeable {
get closed(): Promise<void>; get closed(): Promise<void>;
} }

View file

@ -76,9 +76,7 @@ export class AdbServerTransport implements AdbTransport {
async connect(service: string): Promise<AdbSocket> { async connect(service: string): Promise<AdbSocket> {
return await this.#client.createDeviceConnection( return await this.#client.createDeviceConnection(
{ { transportId: this.transportId },
transportId: this.transportId,
},
service, service,
); );
} }

View file

@ -4,10 +4,7 @@ import type {
QueuingStrategy, QueuingStrategy,
WritableStreamDefaultController, WritableStreamDefaultController,
} from "./stream.js"; } from "./stream.js";
import { import { WritableStream as NativeWritableStream } from "./stream.js";
WritableStream as NativeWritableStream,
TransformStream,
} from "./stream.js";
export function getValue<T>(value: MaybeConsumable<T>): T { export function getValue<T>(value: MaybeConsumable<T>): T {
return value instanceof Consumable ? value.value : value; return value instanceof Consumable ? value.value : value;
@ -24,18 +21,6 @@ export function tryConsume<T, R>(
} }
} }
export class UnwrapStream<T> extends TransformStream<MaybeConsumable<T>, T> {
constructor() {
super({
transform(chunk, controller) {
tryConsume(chunk, (chunk) => {
controller.enqueue(chunk as T);
});
},
});
}
}
export interface WritableStreamSink<in T> { export interface WritableStreamSink<in T> {
start?( start?(
controller: WritableStreamDefaultController, controller: WritableStreamDefaultController,