s3si.ts/src/jsonrpc/deno.ts

31 lines
777 B
TypeScript
Raw Normal View History

2024-01-30 02:38:39 -05:00
import { readLines } from "../utils.ts";
2023-03-05 07:01:48 -05:00
import { Transport } from "./types.ts";
export class DenoIO implements Transport {
lines: AsyncIterableIterator<string>;
2024-01-30 05:54:51 -05:00
writer: WritableStreamDefaultWriter<Uint8Array>;
2023-03-05 07:01:48 -05:00
constructor({ reader, writer }: {
2024-01-30 01:30:56 -05:00
reader: ReadableStream<Uint8Array>;
writer: WritableStream<Uint8Array>;
2023-03-05 07:01:48 -05:00
}) {
2024-01-30 02:38:39 -05:00
this.lines = readLines(reader);
2024-01-30 05:54:51 -05:00
this.writer = writer.getWriter();
2023-03-05 07:01:48 -05:00
}
async recv(): Promise<string | undefined> {
const result = await this.lines.next();
if (!result.done) {
2023-03-05 12:56:07 -05:00
return result.value;
2023-03-05 07:01:48 -05:00
}
return undefined;
}
async send(data: string) {
2024-01-30 05:54:51 -05:00
await this.writer.ready;
await this.writer.write(new TextEncoder().encode(data + "\n"));
2023-03-05 07:01:48 -05:00
}
async close() {
await this.writer.close();
}
}