| "use strict";
|
| Object.defineProperty(exports, "__esModule", { value: true });
|
| exports.InMemoryTransport = void 0;
|
| |
| |
|
|
| class InMemoryTransport {
|
| constructor() {
|
| this._messageQueue = [];
|
| }
|
| |
| |
|
|
| static createLinkedPair() {
|
| const clientTransport = new InMemoryTransport();
|
| const serverTransport = new InMemoryTransport();
|
| clientTransport._otherTransport = serverTransport;
|
| serverTransport._otherTransport = clientTransport;
|
| return [clientTransport, serverTransport];
|
| }
|
| async start() {
|
|
|
| while (this._messageQueue.length > 0) {
|
| const queuedMessage = this._messageQueue.shift();
|
| this.onmessage?.(queuedMessage.message, queuedMessage.extra);
|
| }
|
| }
|
| async close() {
|
| const other = this._otherTransport;
|
| this._otherTransport = undefined;
|
| await other?.close();
|
| this.onclose?.();
|
| }
|
| |
| |
| |
|
|
| async send(message, options) {
|
| if (!this._otherTransport) {
|
| throw new Error('Not connected');
|
| }
|
| if (this._otherTransport.onmessage) {
|
| this._otherTransport.onmessage(message, { authInfo: options?.authInfo });
|
| }
|
| else {
|
| this._otherTransport._messageQueue.push({ message, extra: { authInfo: options?.authInfo } });
|
| }
|
| }
|
| }
|
| exports.InMemoryTransport = InMemoryTransport;
|
| |