import ReferenceManager from "./ReferenceManager"; import MessageNode from "./index"; import MessageDispatcher from "./MessageDispatcher"; /** * 由于: * 1. 请求方均用function proxy所有的对象, 接收方(执行方)则为真实对象 * 2. 接收方需要返回keypath的值/函数调用的值 * 3. 在用回调时请求方需要恢复真实调用函数 * 所以序列化和反序列化会有所不同 */ export declare enum ObjectType { primitive = 0, object = 1, callback = 2, property = 3 } export declare class PublisherSerializer { private readonly messageNode; private readonly messageDispatcher; private readonly referenceManager; private funcIDMap; private IDfuncMap; constructor(messageNode: MessageNode, messageDispatcher: MessageDispatcher, referenceManager: ReferenceManager); /** * 序列化要传递的参数, 对于不能序列化的直接传id * * @param {*} args * @returns * @memberof PublisherSerializer */ serialize(args: any): any[]; deserialize(arr: any[]): any; private getIDByFunc; } export declare class ReceiverSerializer { private readonly messageNode; private readonly messageDispatcher; private readonly referenceManager; constructor(messageNode: MessageNode, messageDispatcher: MessageDispatcher, referenceManager: ReferenceManager); /** * 序列化要传递的参数, 对于不能序列化的直接传id * * @param {*} args * @param {number} [id] * @param {boolean} [shouldMap=false] 部分场景(比如返回值)可序列化时仍需映射, 但是传值映射后下个tick销毁 * @returns * @memberof ReceiverSerializer */ serialize(args: any, id?: number, shouldMap?: boolean): any[]; deserialize(arr: any[], origin?: string): any; /** * 回调执行时向回调注册方返回消息 * * @private * @param {number} id * @param {string} [origin] * @returns * @memberof ReceiverSerializer */ private getCallbackShim; private genIDByObject; private IDToObjectProperty; }