{"version":3,"sources":["../../../packages/core/rpc/rpc-subject-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE1C,qBAAa,gBAAgB,CAAC,KAAK,EAAE,OAAO;IAG5B,SAAS,CAAC,GAAG,EAAE,GAAG;IAFvB,OAAO,wCAA+C;gBAEvC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAI/C,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAe/E,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;CAGnD","file":"rpc-subject-server.d.ts","sourcesContent":["import { Subject } from 'rxjs';\r\nimport { NativeQ } from '../data/native-q';\r\nimport { Strings } from '../generated/strings';\r\nimport { DeferredData, Rpc } from './rpc';\r\n\r\nexport class RpcSubjectServer<TData, TResult> {\r\n    public subject = new Subject<DeferredData<TData, TResult>>();\r\n\r\n    constructor(protected rpc: Rpc, command: string) {\r\n        this.rpc.registerInboundHandler(command, this.handler.bind(this));\r\n    }\r\n\r\n    protected processNextForSubject(command: string, data: TData): Promise<TResult> {\r\n        if (this.subject.closed) {\r\n            const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.RpcSubjectClosed.message;\r\n            throw new Error(message.format(command));\r\n        }\r\n\r\n        const deferredData: DeferredData<TData, TResult> = {\r\n            data: data,\r\n            deferred: NativeQ.defer<TResult>()\r\n        };\r\n        this.subject.next(deferredData);\r\n        return deferredData.deferred.promise;\r\n    }\r\n\r\n    // eslint-disable-next-line unused-imports/no-unused-vars\r\n    protected handler(data: TData): Promise<TResult> {\r\n        throw Error('Not implemented handler');\r\n    }\r\n}\r\n"]}