Get started with a prettier server package
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
This commit is contained in:
committed by
Kirill Bulatov
co-authored by
Antonio Scandurra
parent
76191fe47d
commit
eced842dfc
@@ -0,0 +1,56 @@
|
||||
const { Buffer } = require('buffer');
|
||||
|
||||
let buffer = Buffer.alloc(0);
|
||||
process.stdin.resume();
|
||||
process.stdin.on('data', (data) => {
|
||||
buffer = Buffer.concat([buffer, data]);
|
||||
handleData();
|
||||
});
|
||||
process.stdin.on('end', () => {
|
||||
handleData();
|
||||
});
|
||||
|
||||
function handleData() {
|
||||
if (buffer.length < 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
const length = buffer.readUInt32LE(0);
|
||||
console.log(length);
|
||||
if (buffer.length < 4 + length) {
|
||||
return;
|
||||
}
|
||||
|
||||
const bytes = buffer.subarray(4, 4 + length);
|
||||
buffer = buffer.subarray(4 + length);
|
||||
|
||||
try {
|
||||
const message = JSON.parse(bytes);
|
||||
handleMessage(message);
|
||||
} catch (_) {
|
||||
sendResponse(makeError("Request JSON parse error"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// format
|
||||
// clear_cache
|
||||
// shutdown
|
||||
// error
|
||||
|
||||
function handleMessage(message) {
|
||||
console.log(message);
|
||||
sendResponse({ method: "hi", result: null });
|
||||
}
|
||||
|
||||
function makeError(message) {
|
||||
return { method: "error", message };
|
||||
}
|
||||
|
||||
function sendResponse(response) {
|
||||
let message = Buffer.from(JSON.stringify(response));
|
||||
let length = Buffer.alloc(4);
|
||||
length.writeUInt32LE(message.length);
|
||||
process.stdout.write(length);
|
||||
process.stdout.write(message);
|
||||
}
|
||||
Reference in New Issue
Block a user