import { Datagram } from "../../Independents/Datagram/datagram-types.js"; import { Gateway } from "../Gateway.js"; import { HostName, HostNameTemplate } from "../../Independents/DNS/HostName.js"; import { Transport } from "./Transport.js"; import { GatewayProxy } from "../GatewayProxy.js"; import { CBurpastateWrapper } from "../../Engine/burpastate.js"; import { DatagramShort } from "../../Independents/Datagram/datagram.js"; export class LocalTransport extends Transport { otherTransport: Transport | null = null; close() { } get isClosed() { return false; } transmitDatagram(datagram: Datagram): void { this.employer.gateway.state.log("Local", DatagramShort(datagram)); console.log("SENDING ON LOCAL Transport"); (this.otherTransport as Transport).onReceiveDatagram(datagram); } } export class LocalTransportClient extends LocalTransport { constructor(employer: GatewayProxy) { super(employer); let parent = employer.gateway.alias.parent; let state = new CBurpastateWrapper(employer.gateway.whole) let otherGateway = state.findLocalHost(parent) as unknown as Gateway; console.log(`OTHER GATEWAY ${parent} IS`, otherGateway) this.otherTransport = new LocalTransport(new GatewayProxy({ [parent]: new HostName(parent) }, otherGateway, employer.hostTemplate, employer.secret)) } }