/** * * Agora Real Time Engagement * Created by Wei Hu in 2022-02. * Copyright (c) 2022 Agora IO. All rights reserved. * */ import { RteLoc } from '../common/common'; import rte_addon from '../rte_addon'; import { Value } from '../value/value'; interface MsgValue { readonly src: RteLoc; readonly dest: RteLoc[]; setDest(loc: RteLoc): void; } export class Msg implements MsgValue { getSrcExtension(): string { return rte_addon.rte_nodejs_msg_get_src_extension(this); } setDest(loc: RteLoc): void { rte_addon.rte_nodejs_msg_set_dest(this, loc); } setProperty(name: string, value: Value): void { rte_addon.rte_nodejs_msg_set_property(this, name, value); } getProperty(name: string): Value { return rte_addon.rte_nodejs_msg_get_property(this, name); } public get src(): RteLoc { const srcLocJson = rte_addon.rte_nodejs_msg_get_src_loc(this); return JSON.parse(srcLocJson); } public get dest(): RteLoc[] { const destLocJsons: string[] = rte_addon.rte_nodejs_msg_get_dest_locs(this); return destLocJsons.map((json) => JSON.parse(json)); } }