diff options
Diffstat (limited to 'core/examples/http_bench.js')
-rw-r--r-- | core/examples/http_bench.js | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/core/examples/http_bench.js b/core/examples/http_bench.js deleted file mode 100644 index de6b5a9a4..000000000 --- a/core/examples/http_bench.js +++ /dev/null @@ -1,73 +0,0 @@ -// This is not a real HTTP server. We read blindly one time into 'requestBuf', -// then write this fixed 'responseBuf'. The point of this benchmark is to -// exercise the event loop in a simple yet semi-realistic way. -const requestBuf = new Uint8Array(64 * 1024); -const responseBuf = new Uint8Array( - "HTTP/1.1 200 OK\r\nContent-Length: 12\r\n\r\nHello World\n" - .split("") - .map((c) => c.charCodeAt(0)), -); - -/** Listens on 0.0.0.0:4500, returns rid. */ -function listen() { - const { rid } = Deno.core.jsonOpSync("listen", {}); - return rid; -} - -/** Accepts a connection, returns rid. */ -async function accept(serverRid) { - const { rid } = await Deno.core.jsonOpAsync("accept", { rid: serverRid }); - return rid; -} - -/** - * Reads a packet from the rid, presumably an http request. data is ignored. - * Returns bytes read. - */ -async function read(rid, data) { - const { nread } = await Deno.core.jsonOpAsync("read", { rid }, data); - return nread; -} - -/** Writes a fixed HTTP response to the socket rid. Returns bytes written. */ -async function write(rid, data) { - const { nwritten } = await Deno.core.jsonOpAsync("write", { rid }, data); - return nwritten; -} - -function close(rid) { - Deno.core.jsonOpSync("close", { rid }); -} - -async function serve(rid) { - while (true) { - const nread = await read(rid, requestBuf); - if (nread <= 0) { - break; - } - - const nwritten = await write(rid, responseBuf); - if (nwritten < 0) { - break; - } - } - close(rid); -} - -async function main() { - Deno.core.ops(); - - const listenerRid = listen(); - Deno.core.print(`listening http://127.0.0.1:4544/ rid=${listenerRid}\n`); - - for (;;) { - const rid = await accept(listenerRid); - if (rid < 0) { - Deno.core.print(`accept error ${rid}`); - return; - } - serve(rid); - } -} - -main(); |