@yume-chan/adb 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +15 -0
- package/CHANGELOG.md +9 -1
- package/esm/adb.d.ts +5 -4
- package/esm/adb.d.ts.map +1 -1
- package/esm/adb.js +15 -10
- package/esm/adb.js.map +1 -1
- package/esm/commands/reverse.d.ts +7 -10
- package/esm/commands/reverse.d.ts.map +1 -1
- package/esm/commands/reverse.js +9 -15
- package/esm/commands/reverse.js.map +1 -1
- package/esm/commands/subprocess/protocols/none.d.ts +1 -1
- package/esm/commands/subprocess/protocols/none.d.ts.map +1 -1
- package/esm/commands/subprocess/protocols/none.js +6 -6
- package/esm/commands/subprocess/protocols/none.js.map +1 -1
- package/esm/commands/sync/pull.d.ts.map +1 -1
- package/esm/commands/sync/pull.js +6 -3
- package/esm/commands/sync/pull.js.map +1 -1
- package/esm/socket/dispatcher.d.ts +21 -14
- package/esm/socket/dispatcher.d.ts.map +1 -1
- package/esm/socket/dispatcher.js +78 -53
- package/esm/socket/dispatcher.js.map +1 -1
- package/esm/socket/socket.d.ts +11 -2
- package/esm/socket/socket.d.ts.map +1 -1
- package/esm/socket/socket.js +21 -16
- package/esm/socket/socket.js.map +1 -1
- package/esm/stream/transform.d.ts +17 -12
- package/esm/stream/transform.d.ts.map +1 -1
- package/esm/stream/transform.js +45 -81
- package/esm/stream/transform.js.map +1 -1
- package/package.json +4 -4
- package/src/adb.ts +18 -12
- package/src/commands/reverse.ts +13 -24
- package/src/commands/subprocess/protocols/none.ts +6 -6
- package/src/commands/sync/pull.ts +6 -3
- package/src/socket/dispatcher.ts +96 -65
- package/src/socket/socket.ts +36 -30
- package/src/stream/transform.ts +53 -92
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/stream/transform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/stream/transform.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yume-chan/adb",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"description": "TypeScript implementation of Android Debug Bridge (ADB) protocol.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adb",
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"types": "esm/index.d.ts",
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@yume-chan/async": "^2.1.4",
|
|
29
|
-
"@yume-chan/dataview-bigint-polyfill": "^0.0.
|
|
30
|
-
"@yume-chan/event": "^0.0.
|
|
31
|
-
"@yume-chan/struct": "^0.0.
|
|
29
|
+
"@yume-chan/dataview-bigint-polyfill": "^0.0.14",
|
|
30
|
+
"@yume-chan/event": "^0.0.14",
|
|
31
|
+
"@yume-chan/struct": "^0.0.14",
|
|
32
32
|
"tslib": "^2.3.1",
|
|
33
33
|
"web-streams-polyfill": "^3.2.0"
|
|
34
34
|
},
|
package/src/adb.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { AdbAuthenticationProcessor, ADB_DEFAULT_AUTHENTICATORS, type AdbCredent
|
|
|
5
5
|
import { AdbPower, AdbReverseCommand, AdbSubprocess, AdbSync, AdbTcpIpCommand, escapeArg, framebuffer, install, type AdbFrameBuffer } from './commands/index.js';
|
|
6
6
|
import { AdbFeatures } from './features.js';
|
|
7
7
|
import { AdbCommand, calculateChecksum, type AdbPacketData, type AdbPacketInit } from './packet.js';
|
|
8
|
-
import { AdbPacketDispatcher, type AdbSocket } from './socket/index.js';
|
|
8
|
+
import { AdbIncomingSocketHandler, AdbPacketDispatcher, type AdbSocket, type Closeable } from './socket/index.js';
|
|
9
9
|
import { AbortController, DecodeUtf8Stream, GatherStringStream, WritableStream, type ReadableWritablePair } from "./stream/index.js";
|
|
10
10
|
import { decodeUtf8, encodeUtf8 } from "./utils/index.js";
|
|
11
11
|
|
|
@@ -18,7 +18,7 @@ export enum AdbPropKey {
|
|
|
18
18
|
|
|
19
19
|
export const VERSION_OMIT_CHECKSUM = 0x01000001;
|
|
20
20
|
|
|
21
|
-
export class Adb {
|
|
21
|
+
export class Adb implements Closeable {
|
|
22
22
|
/**
|
|
23
23
|
* It's possible to call `authenticate` multiple times on a single connection,
|
|
24
24
|
* every time the device receives a `CNXN` packet, it resets its internal state,
|
|
@@ -53,7 +53,7 @@ export class Adb {
|
|
|
53
53
|
await sendPacket(response);
|
|
54
54
|
break;
|
|
55
55
|
default:
|
|
56
|
-
// Maybe the previous ADB
|
|
56
|
+
// Maybe the previous ADB client exited without reading all packets,
|
|
57
57
|
// so they are still waiting in OS internal buffer.
|
|
58
58
|
// Just ignore them.
|
|
59
59
|
// Because a `Connect` packet will reset the device,
|
|
@@ -78,15 +78,17 @@ export class Adb {
|
|
|
78
78
|
|
|
79
79
|
try {
|
|
80
80
|
// https://android.googlesource.com/platform/packages/modules/adb/+/79010dc6d5ca7490c493df800d4421730f5466ca/transport.cpp#1252
|
|
81
|
-
// There are some other feature constants, but some of them are only used by ADB server, not devices.
|
|
81
|
+
// There are some other feature constants, but some of them are only used by ADB server, not devices (daemons).
|
|
82
82
|
const features = [
|
|
83
83
|
AdbFeatures.ShellV2,
|
|
84
84
|
AdbFeatures.Cmd,
|
|
85
85
|
AdbFeatures.StatV2,
|
|
86
86
|
AdbFeatures.ListV2,
|
|
87
|
-
|
|
87
|
+
AdbFeatures.FixedPushMkdir,
|
|
88
88
|
'apex',
|
|
89
89
|
'abb',
|
|
90
|
+
// only tells the client the symlink timestamp issue in `adb push --sync` has been fixed.
|
|
91
|
+
// No special handling required.
|
|
90
92
|
'fixed_push_symlink_timestamp',
|
|
91
93
|
'abb_exec',
|
|
92
94
|
'remount_shell',
|
|
@@ -130,9 +132,9 @@ export class Adb {
|
|
|
130
132
|
}
|
|
131
133
|
}
|
|
132
134
|
|
|
133
|
-
private readonly
|
|
135
|
+
private readonly dispatcher: AdbPacketDispatcher;
|
|
134
136
|
|
|
135
|
-
public get disconnected() { return this.
|
|
137
|
+
public get disconnected() { return this.dispatcher.disconnected; }
|
|
136
138
|
|
|
137
139
|
private _protocolVersion: number | undefined;
|
|
138
140
|
public get protocolVersion() { return this._protocolVersion; }
|
|
@@ -172,7 +174,7 @@ export class Adb {
|
|
|
172
174
|
appendNullToServiceString = true;
|
|
173
175
|
}
|
|
174
176
|
|
|
175
|
-
this.
|
|
177
|
+
this.dispatcher = new AdbPacketDispatcher(
|
|
176
178
|
connection,
|
|
177
179
|
{
|
|
178
180
|
calculateChecksum,
|
|
@@ -185,7 +187,7 @@ export class Adb {
|
|
|
185
187
|
|
|
186
188
|
this.subprocess = new AdbSubprocess(this);
|
|
187
189
|
this.power = new AdbPower(this);
|
|
188
|
-
this.reverse = new AdbReverseCommand(this
|
|
190
|
+
this.reverse = new AdbReverseCommand(this);
|
|
189
191
|
this.tcpip = new AdbTcpIpCommand(this);
|
|
190
192
|
}
|
|
191
193
|
|
|
@@ -224,8 +226,12 @@ export class Adb {
|
|
|
224
226
|
}
|
|
225
227
|
}
|
|
226
228
|
|
|
229
|
+
public addIncomingSocketHandler(handler: AdbIncomingSocketHandler) {
|
|
230
|
+
return this.dispatcher.addIncomingSocketHandler(handler);
|
|
231
|
+
}
|
|
232
|
+
|
|
227
233
|
public async createSocket(service: string): Promise<AdbSocket> {
|
|
228
|
-
return this.
|
|
234
|
+
return this.dispatcher.createSocket(service);
|
|
229
235
|
}
|
|
230
236
|
|
|
231
237
|
public async createSocketAndWait(service: string): Promise<string> {
|
|
@@ -264,7 +270,7 @@ export class Adb {
|
|
|
264
270
|
return framebuffer(this);
|
|
265
271
|
}
|
|
266
272
|
|
|
267
|
-
public async
|
|
268
|
-
this.
|
|
273
|
+
public async close(): Promise<void> {
|
|
274
|
+
await this.dispatcher.close();
|
|
269
275
|
}
|
|
270
276
|
}
|
package/src/commands/reverse.ts
CHANGED
|
@@ -2,15 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import { AutoDisposable } from '@yume-chan/event';
|
|
4
4
|
import Struct from '@yume-chan/struct';
|
|
5
|
-
import type {
|
|
6
|
-
import type {
|
|
5
|
+
import type { Adb } from "../adb.js";
|
|
6
|
+
import type { AdbIncomingSocketHandler, AdbSocket } from '../socket/index.js';
|
|
7
7
|
import { AdbBufferedStream } from '../stream/index.js';
|
|
8
8
|
import { decodeUtf8 } from "../utils/index.js";
|
|
9
9
|
|
|
10
|
-
export interface AdbReverseHandler {
|
|
11
|
-
onSocket(packet: AdbPacketData, socket: AdbSocket): void;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
10
|
export interface AdbForwardListener {
|
|
15
11
|
deviceSerial: string;
|
|
16
12
|
|
|
@@ -32,37 +28,30 @@ const AdbReverseErrorResponse =
|
|
|
32
28
|
});
|
|
33
29
|
|
|
34
30
|
export class AdbReverseCommand extends AutoDisposable {
|
|
35
|
-
protected localPortToHandler = new Map<number,
|
|
31
|
+
protected localPortToHandler = new Map<number, AdbIncomingSocketHandler>();
|
|
36
32
|
|
|
37
33
|
protected deviceAddressToLocalPort = new Map<string, number>();
|
|
38
34
|
|
|
39
|
-
protected
|
|
35
|
+
protected adb: Adb;
|
|
40
36
|
|
|
41
37
|
protected listening = false;
|
|
42
38
|
|
|
43
|
-
public constructor(
|
|
39
|
+
public constructor(adb: Adb) {
|
|
44
40
|
super();
|
|
45
41
|
|
|
46
|
-
this.
|
|
47
|
-
this.addDisposable(this.
|
|
42
|
+
this.adb = adb;
|
|
43
|
+
this.addDisposable(this.adb.addIncomingSocketHandler(this.handleIncomingSocket));
|
|
48
44
|
}
|
|
49
45
|
|
|
50
|
-
protected handleIncomingSocket(
|
|
51
|
-
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const address = decodeUtf8(e.packet.payload);
|
|
46
|
+
protected handleIncomingSocket = async (socket: AdbSocket) => {
|
|
47
|
+
const address = socket.serviceString;
|
|
56
48
|
// Address format: `tcp:12345\0`
|
|
57
49
|
const port = Number.parseInt(address.substring(4));
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
e.handled = true;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
50
|
+
return !!(await this.localPortToHandler.get(port)?.(socket));
|
|
51
|
+
};
|
|
63
52
|
|
|
64
53
|
private async createBufferedStream(service: string) {
|
|
65
|
-
const socket = await this.
|
|
54
|
+
const socket = await this.adb.createSocket(service);
|
|
66
55
|
return new AdbBufferedStream(socket);
|
|
67
56
|
}
|
|
68
57
|
|
|
@@ -96,7 +85,7 @@ export class AdbReverseCommand extends AutoDisposable {
|
|
|
96
85
|
public async add(
|
|
97
86
|
deviceAddress: string,
|
|
98
87
|
localPort: number,
|
|
99
|
-
handler:
|
|
88
|
+
handler: AdbIncomingSocketHandler,
|
|
100
89
|
): Promise<string> {
|
|
101
90
|
const stream = await this.sendRequest(`reverse:forward:${deviceAddress};tcp:${localPort}`);
|
|
102
91
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Adb } from "../../../adb.js";
|
|
2
2
|
import type { AdbSocket } from "../../../socket/index.js";
|
|
3
|
-
import { DuplexStreamFactory,
|
|
3
|
+
import { DuplexStreamFactory, ReadableStream } from "../../../stream/index.js";
|
|
4
4
|
import type { AdbSubprocessProtocol } from "./types.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -19,9 +19,9 @@ export class AdbSubprocessNoneProtocol implements AdbSubprocessProtocol {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
public static async raw(adb: Adb, command: string) {
|
|
22
|
-
//
|
|
23
|
-
// But
|
|
24
|
-
return new AdbSubprocessNoneProtocol(await adb.createSocket(`
|
|
22
|
+
// `shell,raw:${command}` also triggers raw mode,
|
|
23
|
+
// But is not supported before Android 7.
|
|
24
|
+
return new AdbSubprocessNoneProtocol(await adb.createSocket(`exec:${command}`));
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
private readonly socket: AdbSocket;
|
|
@@ -53,8 +53,8 @@ export class AdbSubprocessNoneProtocol implements AdbSubprocessProtocol {
|
|
|
53
53
|
},
|
|
54
54
|
});
|
|
55
55
|
|
|
56
|
-
this._stdout = factory.
|
|
57
|
-
this._stderr = factory.
|
|
56
|
+
this._stdout = factory.wrapReadable(this.socket.readable);
|
|
57
|
+
this._stderr = factory.wrapReadable(new ReadableStream());
|
|
58
58
|
this._exit = factory.closed.then(() => 0);
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -9,7 +9,7 @@ export const AdbSyncDataResponse =
|
|
|
9
9
|
.uint8Array('data', { lengthField: 'dataLength' })
|
|
10
10
|
.extra({ id: AdbSyncResponseId.Data as const });
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const RESPONSE_TYPES = {
|
|
13
13
|
[AdbSyncResponseId.Data]: AdbSyncDataResponse,
|
|
14
14
|
[AdbSyncResponseId.Done]: new AdbSyncDoneResponse(AdbSyncDataResponse.size),
|
|
15
15
|
};
|
|
@@ -24,7 +24,7 @@ export function adbSyncPull(
|
|
|
24
24
|
await adbSyncWriteRequest(writer, AdbSyncRequestId.Receive, path);
|
|
25
25
|
},
|
|
26
26
|
async pull(controller) {
|
|
27
|
-
const response = await adbSyncReadResponse(stream,
|
|
27
|
+
const response = await adbSyncReadResponse(stream, RESPONSE_TYPES);
|
|
28
28
|
switch (response.id) {
|
|
29
29
|
case AdbSyncResponseId.Data:
|
|
30
30
|
controller.enqueue(response.data!);
|
|
@@ -35,7 +35,10 @@ export function adbSyncPull(
|
|
|
35
35
|
default:
|
|
36
36
|
throw new Error('Unexpected response id');
|
|
37
37
|
}
|
|
38
|
-
}
|
|
38
|
+
},
|
|
39
|
+
cancel() {
|
|
40
|
+
throw new Error(`Sync commands don't support cancel.`);
|
|
41
|
+
},
|
|
39
42
|
}, {
|
|
40
43
|
highWaterMark: 16 * 1024,
|
|
41
44
|
size(chunk) { return chunk.byteLength; }
|
package/src/socket/dispatcher.ts
CHANGED
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
import { AsyncOperationManager, PromiseResolver } from '@yume-chan/async';
|
|
2
|
-
import {
|
|
2
|
+
import type { RemoveEventListener } from '@yume-chan/event';
|
|
3
|
+
import type { ValueOrPromise } from "@yume-chan/struct";
|
|
4
|
+
|
|
3
5
|
import { AdbCommand, calculateChecksum, type AdbPacketData, type AdbPacketInit } from '../packet.js';
|
|
4
6
|
import { AbortController, WritableStream, WritableStreamDefaultWriter, type ReadableWritablePair } from '../stream/index.js';
|
|
5
7
|
import { decodeUtf8, encodeUtf8 } from '../utils/index.js';
|
|
6
8
|
import { AdbSocket, AdbSocketController } from './socket.js';
|
|
7
9
|
|
|
8
|
-
export interface AdbIncomingSocketEventArgs {
|
|
9
|
-
handled: boolean;
|
|
10
|
-
|
|
11
|
-
packet: AdbPacketData;
|
|
12
|
-
|
|
13
|
-
serviceString: string;
|
|
14
|
-
|
|
15
|
-
socket: AdbSocket;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
10
|
const EmptyUint8Array = new Uint8Array(0);
|
|
19
11
|
|
|
20
12
|
export interface AdbPacketDispatcherOptions {
|
|
@@ -29,7 +21,23 @@ export interface AdbPacketDispatcherOptions {
|
|
|
29
21
|
maxPayloadSize: number;
|
|
30
22
|
}
|
|
31
23
|
|
|
32
|
-
export
|
|
24
|
+
export type AdbIncomingSocketHandler = (socket: AdbSocket) => ValueOrPromise<boolean>;
|
|
25
|
+
|
|
26
|
+
export interface Closeable {
|
|
27
|
+
close(): ValueOrPromise<void>;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The dispatcher is the "dumb" part of the connection handling logic.
|
|
32
|
+
*
|
|
33
|
+
* Except some options to change some minor behaviors,
|
|
34
|
+
* its only job is forwarding packets between authenticated underlying streams
|
|
35
|
+
* and abstracted socket objects.
|
|
36
|
+
*
|
|
37
|
+
* The `Adb` class is responsible for doing the authentication,
|
|
38
|
+
* negotiating the options, and has shortcuts to high-level services.
|
|
39
|
+
*/
|
|
40
|
+
export class AdbPacketDispatcher implements Closeable {
|
|
33
41
|
// ADB socket id starts from 1
|
|
34
42
|
// (0 means open failed)
|
|
35
43
|
private readonly initializers = new AsyncOperationManager(1);
|
|
@@ -42,8 +50,7 @@ export class AdbPacketDispatcher extends AutoDisposable {
|
|
|
42
50
|
private _disconnected = new PromiseResolver<void>();
|
|
43
51
|
public get disconnected() { return this._disconnected.promise; }
|
|
44
52
|
|
|
45
|
-
private
|
|
46
|
-
public get onIncomingSocket() { return this.incomingSocketEvent.event; }
|
|
53
|
+
private _incomingSocketHandlers: Set<AdbIncomingSocketHandler> = new Set();
|
|
47
54
|
|
|
48
55
|
private _abortController = new AbortController();
|
|
49
56
|
|
|
@@ -51,41 +58,42 @@ export class AdbPacketDispatcher extends AutoDisposable {
|
|
|
51
58
|
connection: ReadableWritablePair<AdbPacketData, AdbPacketInit>,
|
|
52
59
|
options: AdbPacketDispatcherOptions
|
|
53
60
|
) {
|
|
54
|
-
super();
|
|
55
|
-
|
|
56
61
|
this.options = options;
|
|
57
62
|
|
|
58
63
|
connection.readable
|
|
59
64
|
.pipeTo(new WritableStream({
|
|
60
65
|
write: async (packet) => {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
// But won't close `readable` because of `preventCancel: true`
|
|
85
|
-
throw e;
|
|
66
|
+
switch (packet.command) {
|
|
67
|
+
case AdbCommand.OK:
|
|
68
|
+
this.handleOk(packet);
|
|
69
|
+
break;
|
|
70
|
+
case AdbCommand.Close:
|
|
71
|
+
await this.handleClose(packet);
|
|
72
|
+
break;
|
|
73
|
+
case AdbCommand.Write:
|
|
74
|
+
if (this.sockets.has(packet.arg1)) {
|
|
75
|
+
await this.sockets.get(packet.arg1)!.enqueue(packet.payload);
|
|
76
|
+
await this.sendPacket(AdbCommand.OK, packet.arg1, packet.arg0);
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
throw new Error(`Unknown local socket id: ${packet.arg1}`);
|
|
80
|
+
case AdbCommand.Open:
|
|
81
|
+
await this.handleOpen(packet);
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
// Junk data may only appear in the authentication phase,
|
|
85
|
+
// since the dispatcher only works after authentication,
|
|
86
|
+
// all packets should have a valid command.
|
|
87
|
+
// (although it's possible that Adb added new commands in the future)
|
|
88
|
+
throw new Error(`Unknown command: ${packet.command.toString(16)}`);
|
|
86
89
|
}
|
|
87
90
|
},
|
|
88
91
|
}), {
|
|
92
|
+
// There are multiple reasons for the pipe to stop,
|
|
93
|
+
// including device disconnection, protocol error, or user abort,
|
|
94
|
+
// if the underlying streams are still open,
|
|
95
|
+
// it's still possible to create another ADB connection.
|
|
96
|
+
// So don't close `readable` here.
|
|
89
97
|
preventCancel: false,
|
|
90
98
|
signal: this._abortController.signal,
|
|
91
99
|
})
|
|
@@ -125,13 +133,18 @@ export class AdbPacketDispatcher extends AutoDisposable {
|
|
|
125
133
|
* CLOSE() operations.
|
|
126
134
|
*/
|
|
127
135
|
|
|
128
|
-
//
|
|
136
|
+
// If the socket is still pending
|
|
129
137
|
if (packet.arg0 === 0 &&
|
|
130
138
|
this.initializers.reject(packet.arg1, new Error('Socket open failed'))) {
|
|
131
139
|
// Device failed to create the socket
|
|
140
|
+
// (unknown service string, failed to execute command, etc.)
|
|
141
|
+
// it doesn't break the connection,
|
|
142
|
+
// so only reject the socket creation promise,
|
|
143
|
+
// don't throw an error here.
|
|
132
144
|
return;
|
|
133
145
|
}
|
|
134
146
|
|
|
147
|
+
// Ignore `arg0` and search for the socket
|
|
135
148
|
const socket = this.sockets.get(packet.arg1);
|
|
136
149
|
if (socket) {
|
|
137
150
|
// The device want to close the socket
|
|
@@ -143,8 +156,18 @@ export class AdbPacketDispatcher extends AutoDisposable {
|
|
|
143
156
|
return;
|
|
144
157
|
}
|
|
145
158
|
|
|
146
|
-
//
|
|
147
|
-
//
|
|
159
|
+
// TODO: adb: is double closing an socket a catastrophic error?
|
|
160
|
+
// If the client sends two `CLSE` packets for one socket,
|
|
161
|
+
// the device may also respond with two `CLSE` packets.
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
public addIncomingSocketHandler(handler: AdbIncomingSocketHandler): RemoveEventListener {
|
|
165
|
+
this._incomingSocketHandlers.add(handler);
|
|
166
|
+
const remove = () => {
|
|
167
|
+
this._incomingSocketHandlers.delete(handler);
|
|
168
|
+
};
|
|
169
|
+
remove.dispose = remove;
|
|
170
|
+
return remove;
|
|
148
171
|
}
|
|
149
172
|
|
|
150
173
|
private async handleOpen(packet: AdbPacketData) {
|
|
@@ -164,20 +187,15 @@ export class AdbPacketDispatcher extends AutoDisposable {
|
|
|
164
187
|
serviceString,
|
|
165
188
|
});
|
|
166
189
|
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
this.incomingSocketEvent.fire(args);
|
|
174
|
-
|
|
175
|
-
if (args.handled) {
|
|
176
|
-
this.sockets.set(localId, controller);
|
|
177
|
-
await this.sendPacket(AdbCommand.OK, localId, remoteId);
|
|
178
|
-
} else {
|
|
179
|
-
await this.sendPacket(AdbCommand.Close, 0, remoteId);
|
|
190
|
+
for (const handler of this._incomingSocketHandlers) {
|
|
191
|
+
if (await handler(controller.socket)) {
|
|
192
|
+
this.sockets.set(localId, controller);
|
|
193
|
+
await this.sendPacket(AdbCommand.OK, localId, remoteId);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
180
196
|
}
|
|
197
|
+
|
|
198
|
+
await this.sendPacket(AdbCommand.Close, 0, remoteId);
|
|
181
199
|
}
|
|
182
200
|
|
|
183
201
|
public async createSocket(serviceString: string): Promise<AdbSocket> {
|
|
@@ -250,21 +268,34 @@ export class AdbPacketDispatcher extends AutoDisposable {
|
|
|
250
268
|
await this._writer.write(init as AdbPacketInit);
|
|
251
269
|
}
|
|
252
270
|
|
|
253
|
-
public
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
271
|
+
public async close() {
|
|
272
|
+
// Send `CLSE` packets for all sockets
|
|
273
|
+
await Promise.all(
|
|
274
|
+
Array.from(
|
|
275
|
+
this.sockets.values(),
|
|
276
|
+
socket => socket.close(),
|
|
277
|
+
)
|
|
278
|
+
);
|
|
258
279
|
|
|
280
|
+
// Stop receiving
|
|
281
|
+
// It's possible that we haven't received all `CLSE` confirm packets,
|
|
282
|
+
// but it doesn't matter, the next connection can cope with them.
|
|
259
283
|
try {
|
|
260
|
-
// Stop pipes
|
|
261
284
|
this._abortController.abort();
|
|
262
285
|
} catch { }
|
|
263
286
|
|
|
287
|
+
// Adb connection doesn't have a method to confirm closing,
|
|
288
|
+
// so call `dispose` immediately
|
|
289
|
+
this.dispose();
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
private dispose() {
|
|
293
|
+
for (const socket of this.sockets.values()) {
|
|
294
|
+
socket.dispose();
|
|
295
|
+
}
|
|
296
|
+
|
|
264
297
|
this._writer.releaseLock();
|
|
265
298
|
|
|
266
299
|
this._disconnected.resolve();
|
|
267
|
-
|
|
268
|
-
super.dispose();
|
|
269
300
|
}
|
|
270
301
|
}
|
package/src/socket/socket.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { PromiseResolver } from "@yume-chan/async";
|
|
2
|
+
import type { Disposable } from "@yume-chan/event";
|
|
2
3
|
import { AdbCommand } from '../packet.js';
|
|
3
|
-
import { ChunkStream, DuplexStreamFactory, pipeFrom, type PushReadableStreamController, type ReadableStream, type ReadableWritablePair, type WritableStream } from '../stream/index.js';
|
|
4
|
-
import type { AdbPacketDispatcher } from './dispatcher.js';
|
|
4
|
+
import { ChunkStream, DuplexStreamFactory, pipeFrom, PushReadableStream, type PushReadableStreamController, type ReadableStream, type ReadableWritablePair, type WritableStream } from '../stream/index.js';
|
|
5
|
+
import type { AdbPacketDispatcher, Closeable } from './dispatcher.js';
|
|
5
6
|
|
|
6
7
|
export interface AdbSocketInfo {
|
|
7
8
|
localId: number;
|
|
@@ -17,7 +18,7 @@ export interface AdbSocketConstructionOptions extends AdbSocketInfo {
|
|
|
17
18
|
highWaterMark?: number | undefined;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
export class AdbSocketController implements AdbSocketInfo, ReadableWritablePair<Uint8Array, Uint8Array
|
|
21
|
+
export class AdbSocketController implements AdbSocketInfo, ReadableWritablePair<Uint8Array, Uint8Array>, Closeable, Disposable {
|
|
21
22
|
private readonly dispatcher!: AdbPacketDispatcher;
|
|
22
23
|
|
|
23
24
|
public readonly localId!: number;
|
|
@@ -49,17 +50,32 @@ export class AdbSocketController implements AdbSocketInfo, ReadableWritablePair<
|
|
|
49
50
|
|
|
50
51
|
this._factory = new DuplexStreamFactory<Uint8Array, Uint8Array>({
|
|
51
52
|
close: async () => {
|
|
52
|
-
await this.
|
|
53
|
+
await this.dispatcher.sendPacket(
|
|
54
|
+
AdbCommand.Close,
|
|
55
|
+
this.localId,
|
|
56
|
+
this.remoteId
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
// Don't `dispose` here, we need to wait for `CLSE` response packet.
|
|
60
|
+
return false;
|
|
53
61
|
},
|
|
54
|
-
|
|
62
|
+
dispose: () => {
|
|
63
|
+
this._closed = true;
|
|
55
64
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
highWaterMark: options.highWaterMark ?? 16 * 1024,
|
|
60
|
-
size(chunk) { return chunk.byteLength; }
|
|
65
|
+
// Error out the pending writes
|
|
66
|
+
this._writePromise?.reject(new Error('Socket closed'));
|
|
67
|
+
},
|
|
61
68
|
});
|
|
62
69
|
|
|
70
|
+
this._readable = this._factory.wrapReadable(
|
|
71
|
+
new PushReadableStream(controller => {
|
|
72
|
+
this._readableController = controller;
|
|
73
|
+
}, {
|
|
74
|
+
highWaterMark: options.highWaterMark ?? 16 * 1024,
|
|
75
|
+
size(chunk) { return chunk.byteLength; }
|
|
76
|
+
})
|
|
77
|
+
);
|
|
78
|
+
|
|
63
79
|
this.writable = pipeFrom(
|
|
64
80
|
this._factory.createWritable({
|
|
65
81
|
write: async (chunk) => {
|
|
@@ -89,32 +105,22 @@ export class AdbSocketController implements AdbSocketInfo, ReadableWritablePair<
|
|
|
89
105
|
}
|
|
90
106
|
|
|
91
107
|
public async close(): Promise<void> {
|
|
92
|
-
|
|
93
|
-
this._writePromise?.reject(new Error('Socket closed'));
|
|
94
|
-
|
|
95
|
-
if (!this._closed) {
|
|
96
|
-
this._closed = true;
|
|
97
|
-
|
|
98
|
-
// Only send close packet when `close` is called before `dispose`
|
|
99
|
-
// (the client initiated the close)
|
|
100
|
-
await this.dispatcher.sendPacket(
|
|
101
|
-
AdbCommand.Close,
|
|
102
|
-
this.localId,
|
|
103
|
-
this.remoteId
|
|
104
|
-
);
|
|
105
|
-
}
|
|
108
|
+
this._factory.close();
|
|
106
109
|
}
|
|
107
110
|
|
|
108
111
|
public dispose() {
|
|
109
|
-
this.
|
|
110
|
-
|
|
111
|
-
this._factory.close();
|
|
112
|
-
|
|
113
|
-
// Close `writable` side
|
|
114
|
-
this.close();
|
|
112
|
+
this._factory.dispose();
|
|
115
113
|
}
|
|
116
114
|
}
|
|
117
115
|
|
|
116
|
+
/**
|
|
117
|
+
* AdbSocket is a duplex stream.
|
|
118
|
+
*
|
|
119
|
+
* To close it, call either `socket.close()`,
|
|
120
|
+
* `socket.readable.cancel()`, `socket.readable.getReader().cancel()`,
|
|
121
|
+
* `socket.writable.abort()`, `socket.writable.getWriter().abort()`,
|
|
122
|
+
* `socket.writable.close()` or `socket.writable.getWriter().close()`.
|
|
123
|
+
*/
|
|
118
124
|
export class AdbSocket implements AdbSocketInfo, ReadableWritablePair<Uint8Array, Uint8Array>{
|
|
119
125
|
private _controller: AdbSocketController;
|
|
120
126
|
|