Compare commits

..

2 Commits

Author SHA1 Message Date
Derrick Hammer 2832694cd5
*Switch to using message id based tracking 2023-04-09 02:27:56 -04:00
Derrick Hammer acade9801f
Revert "*Add support for destroy"
This reverts commit b42069231c.
2023-04-08 22:55:05 -04:00
1 changed files with 11 additions and 8 deletions

View File

@ -52,6 +52,7 @@ function idFactory(start = 1) {
const getSwarmId = idFactory();
const getSocketId = idFactory();
const getChannelId = idFactory();
const getMessageId = idFactory();
addHandler("presentSeed", handlePresentSeed);
addHandler("join", handleJoin);
@ -514,7 +515,7 @@ async function createProtomuxMessage(aq: ActiveQuery) {
const data = aq.callerInput.data;
const defers: { [action: string]: DeferredPromise<any> } = {};
const defers = new Map<number, DeferredPromise<any>>();
const handleEncoding = (enabled: boolean) => {
if (!enabled) {
@ -522,14 +523,16 @@ async function createProtomuxMessage(aq: ActiveQuery) {
}
const update = async (action: string, args: any) => {
await defers[action]?.promise;
defers[action] = defer();
const messageId = getMessageId();
const d = defer();
defers.set(messageId, d);
aq.sendUpdate({
id: messageId,
action,
args,
});
const ret = await defers[action]?.promise;
const ret = (await d.promise) as any;
if (ret[1]) {
if (ret[1].buffer) {
args[0].buffer = b4a.from(ret[1].buffer);
@ -556,12 +559,12 @@ async function createProtomuxMessage(aq: ActiveQuery) {
};
aq.setReceiveUpdate?.((data) => {
if (["send", "destroy"].includes(data.action)) {
message[data.action](...data.args);
return;
if (data.action === "send") {
message.send(...data.args);
}
defers[data.action]?.resolve(data.args);
defers.get(data.id)?.resolve(data.args);
defers.delete(data.id);
});
if (data.onmessage) {