mirror of
https://github.com/yume-chan/ya-webadb.git
synced 2025-10-03 09:49:24 +02:00
fix(stream): remove UnwrapStream
, it doesn't work
This commit is contained in:
parent
d862077c34
commit
6a18fa293b
6 changed files with 13 additions and 37 deletions
|
@ -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;
|
||||||
},
|
},
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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>;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue