@interopio/gateway-server
Version:
## `@glue42/gateway-ent` compatibility
35 lines (28 loc) • 1.1 kB
text/typescript
import {Gateway, GatewayClient, GatewayMessage} from '@interopio/gateway-server/gateway-ent';
import {GatewayServer} from '@interopio/gateway-server';
export class ServerDelegate implements Gateway {
private server?: GatewayServer.Server;
constructor(private readonly config: GatewayServer.ServerConfig) {
}
async connect(cb: (client: GatewayClient, msg: GatewayMessage) => void): Promise<GatewayClient> {
if (!this.server) {
throw new Error(`not started`);
}
const client = await this.server.gateway.connect((c, m) => cb(c as unknown as GatewayClient, m as GatewayMessage));
return client as unknown as GatewayClient;
}
info(): { endpoint: string } {
return this.server?.gateway.info() as { endpoint: string };
}
async start(): Promise<Gateway> {
if (!this.server) {
this.server = await GatewayServer.Factory(this.config);
}
return this;
}
async stop(): Promise<Gateway> {
await this.server?.close();
delete this.server;
return this;
}
}