{"version":3,"sources":["../../../packages/core/rpc/rpc-outbound.ts"],"names":[],"mappings":"AACA,OAAO,EACH,eAAe,EACf,OAAO,EAEP,mBAAmB,EAEnB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EAEb,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C;;;GAGG;AACH,qBAAa,WAAY,SAAQ,OAAO;IACpC;;;;;;OAMG;gBACS,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAQhE;;;;OAIG;IACI,WAAW,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAQtD;;;;;OAKG;IACI,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAKtD;;;;;OAKG;IACI,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAKtD;;;;;OAKG;IACI,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD;;;;;OAKG;IACI,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAM3D;;;;;OAKG;IACI,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKlE;;;;;OAKG;IACI,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAKtD;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CAGvB","file":"rpc-outbound.d.ts","sourcesContent":["import { NativeQ } from '../data/native-q';\r\nimport {\r\n    RpcActivateData,\r\n    RpcBase,\r\n    rpcCommandVersion,\r\n    RpcDeactivateResult,\r\n    RpcInboundCommands,\r\n    RpcInboundHandlers,\r\n    RpcInitData,\r\n    RpcInitResult,\r\n    RpcOpenData,\r\n    RpcOpenResult,\r\n    RpcOutboundCommands,\r\n    RpcPingData,\r\n    RpcPingResult,\r\n    RpcShutdownData,\r\n    RpcShutdownResult,\r\n    RpcType\r\n} from './rpc-base';\r\nimport { RpcChannel } from './rpc-channel';\r\n\r\n/**\r\n * RpcToModule class.\r\n * - Shell uses the instance to communicate to the Module (tool).\r\n */\r\nexport class RpcOutbound extends RpcBase {\r\n    /**\r\n     * Initiates a new instance of the RpcToModule class.\r\n     *\r\n     * @param rpcChannel the rpc channel.\r\n     * @param name the public name of the module.\r\n     * @param origin the origin url.\r\n     */\r\n    constructor(rpcChannel: RpcChannel, name: string, origin: string) {\r\n        super(rpcChannel, name, origin, RpcType.Outbound);\r\n        const commands = Object.keys(RpcInboundCommands);\r\n        commands.forEach((command) => {\r\n            this.register(command, this.emptyHandler);\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Registers all handlers at once.\r\n     *\r\n     * @param handlers the module handlers.\r\n     */\r\n    public registerAll(handlers: RpcInboundHandlers): void {\r\n        const handlerNames = Object.keys(handlers);\r\n        handlerNames.forEach((handlerName) => {\r\n            const command = RpcBase.handlerToCommandName(handlerName);\r\n            this.register(command, handlers[handlerName]);\r\n        });\r\n    }\r\n\r\n    /**\r\n     * The init command.\r\n     *\r\n     * @param data the RpcInitData data.\r\n     * @return Promise<void> the promise object.\r\n     */\r\n    public init(data: RpcInitData): Promise<RpcInitResult> {\r\n        return this.rpcChannel.post<RpcInitData, RpcInitResult>(\r\n            this, { command: RpcOutboundCommands[RpcOutboundCommands.Init], version: rpcCommandVersion, data: data });\r\n    }\r\n\r\n    /**\r\n     * The open command. (30 seconds waiting time)\r\n     *\r\n     * @param data the RpcOpenData object.\r\n     * @return Promise<RpcOpenResult> the promise object of RpcOpenResult.\r\n     */\r\n    public open(data: RpcOpenData): Promise<RpcOpenResult> {\r\n        return this.rpcChannel.post<RpcOpenData, RpcOpenResult>(\r\n            this, { command: RpcOutboundCommands[RpcOutboundCommands.Open], version: rpcCommandVersion, data: data }, 30 * 1000);\r\n    }\r\n\r\n    /**\r\n     * The activate command.\r\n     *\r\n     * @param data the void object.\r\n     * @return Promise<void> the promise object.\r\n     */\r\n    public activate(data: RpcActivateData): Promise<void> {\r\n        return this.rpcChannel.post<RpcActivateData, void>(\r\n            this, { command: RpcOutboundCommands[RpcOutboundCommands.Activate], version: rpcCommandVersion, data: data });\r\n    }\r\n\r\n    /**\r\n     * The deactivate 2 command used with polling deactivation.\r\n     *\r\n     * @param data the void object.\r\n     * @return Promise<RpcDeactivateResult> the promise object.\r\n     */\r\n    public deactivate2(data: any): Promise<RpcDeactivateResult> {\r\n        // ignore if it gets timed out because the frame could be gone already.\r\n        return this.rpcChannel.post<any, RpcDeactivateResult>(\r\n            this, { command: RpcOutboundCommands[RpcOutboundCommands.Deactivate2], version: rpcCommandVersion, data: data }, -1);\r\n    }\r\n\r\n    /**\r\n     * The shutdown command.\r\n     *\r\n     * @param data the RpcShutdownData object.\r\n     * @return Promise<RpcShutdownResult> the promise object.\r\n     */\r\n    public shutdown(data: RpcShutdownData): Promise<RpcShutdownResult> {\r\n        return this.rpcChannel.post<RpcShutdownData, RpcShutdownResult>(\r\n            this, { command: RpcOutboundCommands[RpcOutboundCommands.Shutdown], version: rpcCommandVersion, data: data });\r\n    }\r\n\r\n    /**\r\n     * The ping command.\r\n     *\r\n     * @param data the RpcPingData object.\r\n     * @return Promise<RpcPingResult> the promise object.\r\n     */\r\n    public ping(data: RpcPingData): Promise<RpcPingResult> {\r\n        return this.rpcChannel.retryPost<RpcPingData>(\r\n            this, { command: RpcOutboundCommands[RpcOutboundCommands.Ping], version: rpcCommandVersion, data: data }, 40, 250);\r\n    }\r\n\r\n    /**\r\n     * The empty handler to response always resolved.\r\n     *\r\n     * @param data the node context.\r\n     * @return Promise<any> the promise.\r\n     */\r\n    private emptyHandler(): Promise<any> {\r\n        return NativeQ.resolved<any>('emptyHandler');\r\n    }\r\n}\r\n"]}