appium-ios-remotexpc 2.2.1 → 2.2.2
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.md +6 -0
- package/build/src/services/ios/afc/codec.d.ts +13 -4
- package/build/src/services/ios/afc/codec.d.ts.map +1 -1
- package/build/src/services/ios/afc/codec.js +57 -32
- package/build/src/services/ios/afc/codec.js.map +1 -1
- package/build/src/services/ios/afc/constants.d.ts +2 -2
- package/build/src/services/ios/afc/constants.d.ts.map +1 -1
- package/build/src/services/ios/afc/constants.js +4 -5
- package/build/src/services/ios/afc/constants.js.map +1 -1
- package/build/src/services/ios/afc/demux.d.ts +40 -0
- package/build/src/services/ios/afc/demux.d.ts.map +1 -0
- package/build/src/services/ios/afc/demux.js +174 -0
- package/build/src/services/ios/afc/demux.js.map +1 -0
- package/build/src/services/ios/afc/index.d.ts +3 -5
- package/build/src/services/ios/afc/index.d.ts.map +1 -1
- package/build/src/services/ios/afc/index.js +34 -40
- package/build/src/services/ios/afc/index.js.map +1 -1
- package/build/src/services/ios/afc/stream-utils.d.ts +10 -11
- package/build/src/services/ios/afc/stream-utils.d.ts.map +1 -1
- package/build/src/services/ios/afc/stream-utils.js +7 -8
- package/build/src/services/ios/afc/stream-utils.js.map +1 -1
- package/build/src/services/ios/testmanagerd/index.js +2 -2
- package/build/src/services/ios/testmanagerd/index.js.map +1 -1
- package/package.json +2 -1
- package/src/services/ios/afc/codec.ts +73 -37
- package/src/services/ios/afc/constants.ts +4 -6
- package/src/services/ios/afc/demux.ts +225 -0
- package/src/services/ios/afc/index.ts +48 -67
- package/src/services/ios/afc/stream-utils.ts +21 -24
- package/src/services/ios/testmanagerd/index.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [2.2.2](https://github.com/appium/appium-ios-remotexpc/compare/v2.2.1...v2.2.2) (2026-05-30)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* Add response demux and improve write framing for RSD AFC uploads ([#227](https://github.com/appium/appium-ios-remotexpc/issues/227)) ([0e2f163](https://github.com/appium/appium-ios-remotexpc/commit/0e2f16315c77172eb776bc463242a7414003b1aa))
|
|
6
|
+
|
|
1
7
|
## [2.2.1](https://github.com/appium/appium-ios-remotexpc/compare/v2.2.0...v2.2.1) (2026-05-26)
|
|
2
8
|
|
|
3
9
|
### Miscellaneous Chores
|
|
@@ -26,9 +26,13 @@ export declare function readUInt64LE(buf: Buffer, offset?: number): bigint;
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function cstr(str: string): Buffer;
|
|
28
28
|
/**
|
|
29
|
-
* Build an AFC packet header
|
|
29
|
+
* Build an AFC packet header with explicit entire_length and this_length values.
|
|
30
30
|
*/
|
|
31
|
-
export declare function
|
|
31
|
+
export declare function encodeHeaderExplicit(op: AfcOpcode, packetNum: bigint, entireLen: number, thisLen: number): Buffer;
|
|
32
|
+
/**
|
|
33
|
+
* Build an AFC packet header for a single contiguous payload after the header.
|
|
34
|
+
*/
|
|
35
|
+
export declare function encodeHeader(op: AfcOpcode, packetNum: bigint, payloadLen: number): Buffer;
|
|
32
36
|
/**
|
|
33
37
|
* Tear down buffered-reader state and destroy the socket after a fatal read error.
|
|
34
38
|
* Late-arriving bytes must not be left for a subsequent readExact on the same socket.
|
|
@@ -48,9 +52,14 @@ export declare function readAfcHeader(socket: net.Socket, timeoutMs?: number): P
|
|
|
48
52
|
*/
|
|
49
53
|
export declare function readAfcResponse(socket: net.Socket, timeoutMs?: number): Promise<AfcResponse>;
|
|
50
54
|
/**
|
|
51
|
-
*
|
|
55
|
+
* Write a buffer to the socket, waiting for drain only when the kernel buffer is full.
|
|
56
|
+
*/
|
|
57
|
+
export declare function writeBufferToSocket(socket: net.Socket, data: Buffer): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Send an AFC packet as three socket writes: header, optional header payload, optional body.
|
|
60
|
+
* For FILE_WRITE, headerPayload is the 8-byte handle and content is file bytes (no memcpy).
|
|
52
61
|
*/
|
|
53
|
-
export declare function sendAfcPacket(socket: net.Socket, op: AfcOpcode, packetNum: bigint,
|
|
62
|
+
export declare function sendAfcPacket(socket: net.Socket, op: AfcOpcode, packetNum: bigint, headerPayload?: Buffer, content?: Buffer): Promise<void>;
|
|
54
63
|
/**
|
|
55
64
|
* Split a null-terminated UTF-8 buffer into string entries.
|
|
56
65
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/afc/codec.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/afc/codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import net from 'node:net';
|
|
2
2
|
import { createPlist } from '../../../lib/plist/plist-creator.js';
|
|
3
3
|
import { parsePlist } from '../../../lib/plist/unified-plist-parser.js';
|
|
4
|
-
import { AFCMAGIC, AFC_HEADER_SIZE, AFC_OPERATION_TIMEOUT_MS, NULL_BYTE, } from './constants.js';
|
|
4
|
+
import { AFCMAGIC, AFC_HEADER_SIZE, AFC_OPERATION_TIMEOUT_MS, MAXIMUM_READ_SIZE, NULL_BYTE, } from './constants.js';
|
|
5
5
|
import { AfcError, AfcOpcode } from './enums.js';
|
|
6
6
|
import { AfcConnectionError } from './errors.js';
|
|
7
7
|
/**
|
|
@@ -26,24 +26,24 @@ export function cstr(str) {
|
|
|
26
26
|
return Buffer.concat([s, NULL_BYTE]);
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
* Build an AFC packet header
|
|
29
|
+
* Build an AFC packet header with explicit entire_length and this_length values.
|
|
30
30
|
*/
|
|
31
|
-
export function
|
|
32
|
-
const entireLen = BigInt(AFC_HEADER_SIZE + payloadLen);
|
|
33
|
-
const thisLen = BigInt(thisLenOverride ?? AFC_HEADER_SIZE + payloadLen);
|
|
31
|
+
export function encodeHeaderExplicit(op, packetNum, entireLen, thisLen) {
|
|
34
32
|
const header = Buffer.alloc(AFC_HEADER_SIZE);
|
|
35
|
-
// magic
|
|
36
33
|
AFCMAGIC.copy(header, 0);
|
|
37
|
-
|
|
38
|
-
writeUInt64LE(
|
|
39
|
-
// this_length
|
|
40
|
-
writeUInt64LE(thisLen).copy(header, 16);
|
|
41
|
-
// packet_num
|
|
34
|
+
writeUInt64LE(BigInt(entireLen)).copy(header, 8);
|
|
35
|
+
writeUInt64LE(BigInt(thisLen)).copy(header, 16);
|
|
42
36
|
writeUInt64LE(packetNum).copy(header, 24);
|
|
43
|
-
// operation
|
|
44
37
|
writeUInt64LE(BigInt(op)).copy(header, 32);
|
|
45
38
|
return header;
|
|
46
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Build an AFC packet header for a single contiguous payload after the header.
|
|
42
|
+
*/
|
|
43
|
+
export function encodeHeader(op, packetNum, payloadLen) {
|
|
44
|
+
const entireLen = AFC_HEADER_SIZE + payloadLen;
|
|
45
|
+
return encodeHeaderExplicit(op, packetNum, entireLen, entireLen);
|
|
46
|
+
}
|
|
47
47
|
const SOCKET_STATES = new WeakMap();
|
|
48
48
|
const FATAL_SOCKETS = new WeakSet();
|
|
49
49
|
/**
|
|
@@ -127,29 +127,53 @@ export async function readAfcResponse(socket, timeoutMs = AFC_OPERATION_TIMEOUT_
|
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
130
|
-
*
|
|
130
|
+
* Write a buffer to the socket, waiting for drain only when the kernel buffer is full.
|
|
131
131
|
*/
|
|
132
|
-
export async function
|
|
133
|
-
|
|
132
|
+
export async function writeBufferToSocket(socket, data) {
|
|
133
|
+
assertSocketReadable(socket);
|
|
134
|
+
if (!data.length) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (socket.write(data)) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
134
140
|
await new Promise((resolve, reject) => {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
141
|
+
const onDrain = () => {
|
|
142
|
+
cleanup();
|
|
143
|
+
resolve();
|
|
144
|
+
};
|
|
145
|
+
const onError = (err) => {
|
|
146
|
+
cleanup();
|
|
147
|
+
reject(err);
|
|
148
|
+
};
|
|
149
|
+
const onClosed = () => {
|
|
150
|
+
cleanup();
|
|
151
|
+
reject(new AfcConnectionError('AFC socket closed while waiting for drain'));
|
|
152
|
+
};
|
|
153
|
+
const cleanup = () => {
|
|
154
|
+
socket.off('drain', onDrain);
|
|
155
|
+
socket.off('error', onError);
|
|
156
|
+
socket.off('close', onClosed);
|
|
157
|
+
socket.off('end', onClosed);
|
|
158
|
+
};
|
|
159
|
+
socket.once('drain', onDrain);
|
|
160
|
+
socket.once('error', onError);
|
|
161
|
+
socket.once('close', onClosed);
|
|
162
|
+
socket.once('end', onClosed);
|
|
151
163
|
});
|
|
152
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Send an AFC packet as three socket writes: header, optional header payload, optional body.
|
|
167
|
+
* For FILE_WRITE, headerPayload is the 8-byte handle and content is file bytes (no memcpy).
|
|
168
|
+
*/
|
|
169
|
+
export async function sendAfcPacket(socket, op, packetNum, headerPayload = Buffer.alloc(0), content = Buffer.alloc(0)) {
|
|
170
|
+
const thisLen = AFC_HEADER_SIZE + headerPayload.length;
|
|
171
|
+
const entireLen = thisLen + content.length;
|
|
172
|
+
const header = encodeHeaderExplicit(op, packetNum, entireLen, thisLen);
|
|
173
|
+
await writeBufferToSocket(socket, header);
|
|
174
|
+
await writeBufferToSocket(socket, headerPayload);
|
|
175
|
+
await writeBufferToSocket(socket, content);
|
|
176
|
+
}
|
|
153
177
|
/**
|
|
154
178
|
* Split a null-terminated UTF-8 buffer into string entries.
|
|
155
179
|
*/
|
|
@@ -279,6 +303,7 @@ export async function createRawServiceSocket(host, port, options = {}) {
|
|
|
279
303
|
const socket = await new Promise((resolve, reject) => {
|
|
280
304
|
const conn = net.createConnection({ host, port }, () => {
|
|
281
305
|
conn.setKeepAlive(true);
|
|
306
|
+
conn.setNoDelay(true);
|
|
282
307
|
resolve(conn);
|
|
283
308
|
});
|
|
284
309
|
conn.setTimeout(timeoutMs, () => {
|
|
@@ -299,7 +324,7 @@ export async function createRawServiceSocket(host, port, options = {}) {
|
|
|
299
324
|
*/
|
|
300
325
|
export function nextReadChunkSize(left) {
|
|
301
326
|
const leftNum = typeof left === 'bigint' ? Number(left) : left;
|
|
302
|
-
return leftNum;
|
|
327
|
+
return Math.min(leftNum, MAXIMUM_READ_SIZE);
|
|
303
328
|
}
|
|
304
329
|
/**
|
|
305
330
|
* Convert nanoseconds to milliseconds for Date construction
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../../../../src/services/ios/afc/codec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../../../../src/services/ios/afc/codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,10 @@ import { AfcFopenMode } from './enums.js';
|
|
|
4
4
|
*/
|
|
5
5
|
export declare const AFCMAGIC: Buffer<ArrayBuffer>;
|
|
6
6
|
export declare const MAXIMUM_READ_SIZE: number;
|
|
7
|
+
export declare const MAXIMUM_WRITE_SIZE: number;
|
|
7
8
|
export declare const AFC_FOPEN_TEXTUAL_MODES: Record<string, AfcFopenMode>;
|
|
8
9
|
export declare const AFC_HEADER_SIZE = 40;
|
|
9
|
-
export declare const AFC_OPERATION_TIMEOUT_MS =
|
|
10
|
-
export declare const AFC_WRITE_THIS_LENGTH = 48;
|
|
10
|
+
export declare const AFC_OPERATION_TIMEOUT_MS = 30000;
|
|
11
11
|
export declare const NULL_BYTE: Buffer<ArrayBuffer>;
|
|
12
12
|
export declare const AFC_LOCK_SH: number;
|
|
13
13
|
export declare const AFC_LOCK_EX: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/afc/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AAGH,eAAO,MAAM,QAAQ,qBAAmC,CAAC;AAGzD,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/afc/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AAGH,eAAO,MAAM,QAAQ,qBAAmC,CAAC;AAGzD,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAC7C,eAAO,MAAM,kBAAkB,QAAc,CAAC;AAG9C,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAOhE,CAAC;AAGF,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,eAAO,MAAM,SAAS,qBAAmB,CAAC;AAG1C,eAAO,MAAM,WAAW,QAAQ,CAAC;AACjC,eAAO,MAAM,WAAW,QAAQ,CAAC;AACjC,eAAO,MAAM,WAAW,QAAQ,CAAC"}
|
|
@@ -4,8 +4,9 @@ import { AfcFopenMode } from './enums.js';
|
|
|
4
4
|
*/
|
|
5
5
|
// Magic bytes at start of every AFC header
|
|
6
6
|
export const AFCMAGIC = Buffer.from('CFA6LPAA', 'ascii');
|
|
7
|
-
// IO chunk sizes
|
|
8
|
-
export const MAXIMUM_READ_SIZE =
|
|
7
|
+
// IO chunk sizes (split writes avoid memcpy)
|
|
8
|
+
export const MAXIMUM_READ_SIZE = 1024 * 1024;
|
|
9
|
+
export const MAXIMUM_WRITE_SIZE = 1024 * 1024;
|
|
9
10
|
// Mapping of textual fopen modes to AFC modes
|
|
10
11
|
export const AFC_FOPEN_TEXTUAL_MODES = {
|
|
11
12
|
r: AfcFopenMode.RDONLY,
|
|
@@ -17,9 +18,7 @@ export const AFC_FOPEN_TEXTUAL_MODES = {
|
|
|
17
18
|
};
|
|
18
19
|
// Header size: magic (8) + entire_length (8) + this_length (8) + packet_num (8) + operation (8)
|
|
19
20
|
export const AFC_HEADER_SIZE = 40;
|
|
20
|
-
export const AFC_OPERATION_TIMEOUT_MS =
|
|
21
|
-
// Override for WRITE packets' this_length
|
|
22
|
-
export const AFC_WRITE_THIS_LENGTH = 48;
|
|
21
|
+
export const AFC_OPERATION_TIMEOUT_MS = 30_000;
|
|
23
22
|
export const NULL_BYTE = Buffer.from([0]);
|
|
24
23
|
// File lock operation constants
|
|
25
24
|
export const AFC_LOCK_SH = 1 | 4; // 5: Shared lock (multiple readers)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/services/ios/afc/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AAEH,2CAA2C;AAC3C,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAEzD,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/services/ios/afc/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AAEH,2CAA2C;AAC3C,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAEzD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,8CAA8C;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAiC;IACnE,CAAC,EAAE,YAAY,CAAC,MAAM;IACtB,IAAI,EAAE,YAAY,CAAC,EAAE;IACrB,CAAC,EAAE,YAAY,CAAC,MAAM;IACtB,IAAI,EAAE,YAAY,CAAC,EAAE;IACrB,CAAC,EAAE,YAAY,CAAC,MAAM;IACtB,IAAI,EAAE,YAAY,CAAC,QAAQ;CAC5B,CAAC;AAEF,gGAAgG;AAChG,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1C,gCAAgC;AAChC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type net from 'node:net';
|
|
2
|
+
import { AfcError, AfcOpcode } from './enums.js';
|
|
3
|
+
/**
|
|
4
|
+
* Routes inbound AFC packets to the matching request by packet_num.
|
|
5
|
+
* A background reader task demultiplexes responses so callers can overlap
|
|
6
|
+
* sends while each operation is matched to its reply.
|
|
7
|
+
*/
|
|
8
|
+
export declare class AfcPacketDemux {
|
|
9
|
+
private readonly getSocket;
|
|
10
|
+
private readonly onFatalError;
|
|
11
|
+
private readonly pending;
|
|
12
|
+
private packetNum;
|
|
13
|
+
private readerSocket;
|
|
14
|
+
private readerActive;
|
|
15
|
+
private readonly sendLock;
|
|
16
|
+
private stopped;
|
|
17
|
+
constructor(getSocket: () => Promise<net.Socket>, onFatalError: (err: Error) => void);
|
|
18
|
+
ensureReaderStarted(socket: net.Socket): void;
|
|
19
|
+
/**
|
|
20
|
+
* Register a waiter, send one packet, then await its response.
|
|
21
|
+
* packet_num assignment, waiter registration, and send are serialized;
|
|
22
|
+
* awaiting the response happens outside the send lock.
|
|
23
|
+
*/
|
|
24
|
+
sendAndWait(op: AfcOpcode, headerPayload?: Buffer, content?: Buffer, timeoutMs?: number): Promise<{
|
|
25
|
+
status: AfcError;
|
|
26
|
+
data: Buffer;
|
|
27
|
+
}>;
|
|
28
|
+
resetForNewSocket(): void;
|
|
29
|
+
/** Graceful shutdown; does not notify the owning service. */
|
|
30
|
+
stop(): void;
|
|
31
|
+
private _runReaderLoop;
|
|
32
|
+
private _sendLocked;
|
|
33
|
+
private _registerPending;
|
|
34
|
+
private _clearPending;
|
|
35
|
+
private _readerLoop;
|
|
36
|
+
/** True while this socket owns the background reader task. */
|
|
37
|
+
private _isCurrentReader;
|
|
38
|
+
private _failPending;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=demux.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demux.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/afc/demux.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAWhC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAUjD;;;;GAIG;AACH,qBAAa,cAAc;IASvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAT/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,OAAO,CAAS;gBAGL,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EACpC,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI;IAGrD,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI;IAY7C;;;;OAIG;IACG,WAAW,CACf,EAAE,EAAE,SAAS,EACb,aAAa,GAAE,MAAwB,EACvC,OAAO,GAAE,MAAwB,EACjC,SAAS,SAA2B,GACnC,OAAO,CAAC;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAuB9C,iBAAiB,IAAI,IAAI;IAOzB,6DAA6D;IAC7D,IAAI,IAAI,IAAI;YAOE,cAAc;IAkB5B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB;IAiCxB,OAAO,CAAC,aAAa;YAIP,WAAW;IAmDzB,8DAA8D;IAC9D,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,YAAY;CASrB"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import AsyncLock from 'async-lock';
|
|
2
|
+
import { getLogger } from '../../../lib/logger.js';
|
|
3
|
+
import { fatalizeAfcSocket, readAfcHeader, readExact, readUInt64LE, sendAfcPacket, } from './codec.js';
|
|
4
|
+
import { AFC_HEADER_SIZE, AFC_OPERATION_TIMEOUT_MS } from './constants.js';
|
|
5
|
+
import { AfcError, AfcOpcode } from './enums.js';
|
|
6
|
+
import { AfcConnectionError } from './errors.js';
|
|
7
|
+
const log = getLogger('AfcService');
|
|
8
|
+
/**
|
|
9
|
+
* Routes inbound AFC packets to the matching request by packet_num.
|
|
10
|
+
* A background reader task demultiplexes responses so callers can overlap
|
|
11
|
+
* sends while each operation is matched to its reply.
|
|
12
|
+
*/
|
|
13
|
+
export class AfcPacketDemux {
|
|
14
|
+
getSocket;
|
|
15
|
+
onFatalError;
|
|
16
|
+
pending = new Map();
|
|
17
|
+
packetNum = 0n;
|
|
18
|
+
readerSocket = null;
|
|
19
|
+
readerActive = false;
|
|
20
|
+
sendLock = new AsyncLock();
|
|
21
|
+
stopped = false;
|
|
22
|
+
constructor(getSocket, onFatalError) {
|
|
23
|
+
this.getSocket = getSocket;
|
|
24
|
+
this.onFatalError = onFatalError;
|
|
25
|
+
}
|
|
26
|
+
ensureReaderStarted(socket) {
|
|
27
|
+
if (this.stopped) {
|
|
28
|
+
throw new AfcConnectionError('AFC demux is stopped');
|
|
29
|
+
}
|
|
30
|
+
if (this.readerActive && this.readerSocket === socket) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.readerSocket = socket;
|
|
34
|
+
this.readerActive = true;
|
|
35
|
+
void this._runReaderLoop(socket);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Register a waiter, send one packet, then await its response.
|
|
39
|
+
* packet_num assignment, waiter registration, and send are serialized;
|
|
40
|
+
* awaiting the response happens outside the send lock.
|
|
41
|
+
*/
|
|
42
|
+
async sendAndWait(op, headerPayload = Buffer.alloc(0), content = Buffer.alloc(0), timeoutMs = AFC_OPERATION_TIMEOUT_MS) {
|
|
43
|
+
if (this.stopped) {
|
|
44
|
+
throw new AfcConnectionError('AFC demux is stopped');
|
|
45
|
+
}
|
|
46
|
+
const socket = await this.getSocket();
|
|
47
|
+
this.ensureReaderStarted(socket);
|
|
48
|
+
const responsePromise = await this._sendLocked(async () => {
|
|
49
|
+
const num = this.packetNum++;
|
|
50
|
+
const waiter = this._registerPending(num, timeoutMs, op);
|
|
51
|
+
try {
|
|
52
|
+
await sendAfcPacket(socket, op, num, headerPayload, content);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
this._clearPending(num);
|
|
56
|
+
throw err;
|
|
57
|
+
}
|
|
58
|
+
return waiter;
|
|
59
|
+
});
|
|
60
|
+
return await responsePromise;
|
|
61
|
+
}
|
|
62
|
+
resetForNewSocket() {
|
|
63
|
+
this._failPending(new AfcConnectionError('AFC socket replaced'), false);
|
|
64
|
+
this.readerSocket = null;
|
|
65
|
+
this.readerActive = false;
|
|
66
|
+
this.stopped = false;
|
|
67
|
+
}
|
|
68
|
+
/** Graceful shutdown; does not notify the owning service. */
|
|
69
|
+
stop() {
|
|
70
|
+
this.stopped = true;
|
|
71
|
+
this._failPending(new AfcConnectionError('AFC demux stopped'), false);
|
|
72
|
+
this.readerSocket = null;
|
|
73
|
+
this.readerActive = false;
|
|
74
|
+
}
|
|
75
|
+
async _runReaderLoop(socket) {
|
|
76
|
+
try {
|
|
77
|
+
await this._readerLoop(socket);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
if (!this._isCurrentReader(socket)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
this._failPending(err instanceof Error ? err : new Error(String(err)), true);
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
if (this.readerSocket === socket) {
|
|
87
|
+
this.readerActive = false;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
_sendLocked(fn) {
|
|
92
|
+
return this.sendLock.acquire('afc-send', fn);
|
|
93
|
+
}
|
|
94
|
+
_registerPending(pktNum, timeoutMs, op) {
|
|
95
|
+
return new Promise((resolve, reject) => {
|
|
96
|
+
const timer = setTimeout(() => {
|
|
97
|
+
if (!this.pending.has(pktNum)) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
this._clearPending(pktNum);
|
|
101
|
+
reject(new AfcConnectionError(`AFC operation ${AfcOpcode[op] ?? op} timed out after ${timeoutMs}ms (packet ${pktNum})`));
|
|
102
|
+
}, timeoutMs);
|
|
103
|
+
this.pending.set(pktNum, {
|
|
104
|
+
resolve: (value) => {
|
|
105
|
+
clearTimeout(timer);
|
|
106
|
+
resolve(value);
|
|
107
|
+
},
|
|
108
|
+
reject: (err) => {
|
|
109
|
+
clearTimeout(timer);
|
|
110
|
+
reject(err);
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
_clearPending(pktNum) {
|
|
116
|
+
this.pending.delete(pktNum);
|
|
117
|
+
}
|
|
118
|
+
async _readerLoop(socket) {
|
|
119
|
+
try {
|
|
120
|
+
while (!this.stopped && !socket.destroyed) {
|
|
121
|
+
const header = await readAfcHeader(socket, AFC_OPERATION_TIMEOUT_MS);
|
|
122
|
+
const payloadLen = Number(header.entireLength - BigInt(AFC_HEADER_SIZE));
|
|
123
|
+
const payload = payloadLen > 0
|
|
124
|
+
? await readExact(socket, payloadLen, AFC_OPERATION_TIMEOUT_MS)
|
|
125
|
+
: Buffer.alloc(0);
|
|
126
|
+
let status = AfcError.SUCCESS;
|
|
127
|
+
let data = payload;
|
|
128
|
+
const op = Number(header.operation);
|
|
129
|
+
if (op === AfcOpcode.STATUS) {
|
|
130
|
+
if (payloadLen !== 8) {
|
|
131
|
+
log.error(`AFC STATUS response length != 8 (${payloadLen})`);
|
|
132
|
+
}
|
|
133
|
+
status = Number(readUInt64LE(payload.subarray(0, 8)));
|
|
134
|
+
data = Buffer.alloc(0);
|
|
135
|
+
}
|
|
136
|
+
else if (op !== AfcOpcode.DATA) {
|
|
137
|
+
log.debug(`Unexpected AFC response opcode ${op} for packet ${header.packetNum}`);
|
|
138
|
+
}
|
|
139
|
+
const waiter = this.pending.get(header.packetNum);
|
|
140
|
+
if (waiter) {
|
|
141
|
+
this.pending.delete(header.packetNum);
|
|
142
|
+
waiter.resolve({ status, data });
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
log.warn(`AFC response with no waiter (packet ${header.packetNum}, op ${op})`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
if (!this._isCurrentReader(socket)) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const error = err instanceof Error ? err : new AfcConnectionError(String(err));
|
|
154
|
+
if (!socket.destroyed) {
|
|
155
|
+
fatalizeAfcSocket(socket, error);
|
|
156
|
+
}
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/** True while this socket owns the background reader task. */
|
|
161
|
+
_isCurrentReader(socket) {
|
|
162
|
+
return !this.stopped && this.readerSocket === socket;
|
|
163
|
+
}
|
|
164
|
+
_failPending(err, notifyService) {
|
|
165
|
+
for (const [, waiter] of this.pending) {
|
|
166
|
+
waiter.reject(err);
|
|
167
|
+
}
|
|
168
|
+
this.pending.clear();
|
|
169
|
+
if (notifyService) {
|
|
170
|
+
this.onFatalError(err);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=demux.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demux.js","sourceRoot":"","sources":["../../../../../src/services/ios/afc/demux.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,7 +51,7 @@ export declare class AfcService {
|
|
|
51
51
|
private readonly address;
|
|
52
52
|
static readonly RSD_SERVICE_NAME = "com.apple.afc.shim.remote";
|
|
53
53
|
private socket;
|
|
54
|
-
private
|
|
54
|
+
private demux;
|
|
55
55
|
private silent;
|
|
56
56
|
/** Set when the AFC byte stream is no longer safe to reuse on this instance. */
|
|
57
57
|
private connectionError;
|
|
@@ -148,12 +148,10 @@ export declare class AfcService {
|
|
|
148
148
|
private _assertConnectionAlive;
|
|
149
149
|
private _markConnectionDead;
|
|
150
150
|
private _withAfcConnection;
|
|
151
|
+
private _getDemux;
|
|
152
|
+
private _sendAndWait;
|
|
151
153
|
private _connect;
|
|
152
154
|
private _resolvePath;
|
|
153
|
-
private _lockFile;
|
|
154
|
-
private _unlockFile;
|
|
155
|
-
private _dispatch;
|
|
156
|
-
private _receive;
|
|
157
155
|
/**
|
|
158
156
|
* Send a single-operation request and parse result.
|
|
159
157
|
* Throws if status != SUCCESS.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/afc/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/afc/index.ts"],"names":[],"mappings":"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"}
|