MCPcopy Index your code
hub / github.com/getsentry/XcodeBuildMCP / createFrameReader

Function createFrameReader

src/daemon/framing.ts:18–51  ·  view source on GitHub ↗
(
  onMessage: (msg: unknown) => void,
  onError?: (err: Error) => void,
)

Source from the content-addressed store, hash-verified

16 * Returns a function to be used as the 'data' event handler.
17 */
18export function createFrameReader(
19 onMessage: (msg: unknown) => void,
20 onError?: (err: Error) => void,
21): (chunk: Buffer) => void {
22 let buffer = Buffer.alloc(0);
23
24 return (chunk: Buffer) => {
25 buffer = Buffer.concat([buffer, chunk]);
26
27 while (buffer.length >= 4) {
28 const len = buffer.readUInt32BE(0);
29
30 if (len > 100 * 1024 * 1024) {
31 onError?.(new Error(`Message too large: ${len} bytes`));
32 buffer = Buffer.alloc(0);
33 return;
34 }
35
36 if (buffer.length < 4 + len) {
37 return;
38 }
39
40 const payload = buffer.subarray(4, 4 + len);
41 buffer = buffer.subarray(4 + len);
42
43 try {
44 const msg = JSON.parse(payload.toString('utf8')) as unknown;
45 onMessage(msg);
46 } catch (err) {
47 onError?.(err instanceof Error ? err : new Error(String(err)));
48 }
49 }
50 };
51}

Callers 4

requestMethod · 0.90
invokeToolMethod · 0.90
startDaemonServerFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected