I'm trying to use d8 as a Native Messaging host, using the same or similar
algorithm I do for QuickJS, Deno, and Node.js hosts.
d8 is getting stuck somewhere in the process. I suspect trying to read and
write Uint32Array from stdin with readline() and write Uint32Array with
write().
Is there any way to make this work with d8 alone?
#!d8
function getMessage() {
const input = readline();
const uint8 = new Uint8Array(
[...input].map((s) =>
s.charCodeAt()
)
);
const view = new DataView(uint8.buffer);
const length = view.getUint32(0, true);
const content = new Uint8Array(length);
content.set(input.subarray(4));
return uint8.subarray();
}
function sendMessage(json) {
let header = Uint32Array.from(
{
length: 4,
},
(_, index) => (json.length >> (index * 8)) & 0xff
);
let output = new Uint8Array(header.length + json.length);
output.set(header, 0);
output.set(json, 4);
write(output);
}
function main() {
while (true) {
try {
const message = getMessage();
sendMessage(message);
break;
} catch (e) {
quit();
}
}
}
main();
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/v8-dev/cf191a42-3215-4297-a224-e1613c238dd9n%40googlegroups.com.