Don't bother with Commit for each Msg/Message

This commit is contained in:
Tony Garnock-Jones 2019-06-07 15:51:13 +01:00
parent 18ba7a05cf
commit c718d04291
3 changed files with 26 additions and 17 deletions

View File

@ -70,7 +70,10 @@ export function _genericClientSessionFacet(addr, scope, w0, debug) {
on stop outboundTurn.extend(Clear(ep));
}
on message ToServer(addr, $a) outboundTurn.extend(Message(a));
on message ToServer(addr, $a) {
outboundTurn.commit();
w(Message(a));
}
on message _ServerPacket(addr, Ping()) w(Pong());
@ -87,9 +90,9 @@ export function _genericClientSessionFacet(addr, scope, w0, debug) {
});
}
})
on message _ServerPacket(addr, Msg(ep, $vs)) inboundTurn.extend(() => {
on message _ServerPacket(addr, Msg(ep, $vs)) {
send Skeleton.instantiateAssertion(FromServer(addr, spec), vs);
})
}
on message _ServerPacket(addr, Commit()) inboundTurn.commit();
}
}

View File

@ -73,10 +73,11 @@ spawn named '@syndicate-lang/server/server/POAHandler' {
this.scope = scope;
}
const sendToPOA = (m) => { send P.ToPOA(connId, m); };
const outboundTurn = Turn.recorder(this, 'commitNeeded',
{
extend: (m) => { send P.ToPOA(connId, m); },
commit: () => { send P.ToPOA(connId, W.Commit()); },
extend: sendToPOA,
commit: () => { sendToPOA(W.Commit()); },
debug: debug
});
const inboundTurn = Turn.replayer({ debug: debug });
@ -101,7 +102,11 @@ spawn named '@syndicate-lang/server/server/POAHandler' {
switch (evt) {
case Skeleton.EVENT_ADDED: outboundTurn.extend(W.Add(ep, vs)); break;
case Skeleton.EVENT_REMOVED: outboundTurn.extend(W.Del(ep, vs)); break;
case Skeleton.EVENT_MESSAGE: outboundTurn.extend(W.Msg(ep, vs)); break;
case Skeleton.EVENT_MESSAGE: {
outboundTurn.commit();
sendToPOA(W.Msg(ep, vs));
break;
}
}
});
});
@ -121,9 +126,9 @@ spawn named '@syndicate-lang/server/server/POAHandler' {
}
});
on message P.FromPOA(connId, W.Message($body)) inboundTurn.extend(() => {
on message P.FromPOA(connId, W.Message($body)) {
send P.Proposal(this.scope, body);
});
}
on message P.FromPOA(connId, W.Commit()) inboundTurn.commit();
}

View File

@ -4,19 +4,20 @@ import { Dataspace, _Dataspace, currentFacet } from "@syndicate-lang/core";
const PRIORITY = _Dataspace.PRIORITY;
export function recorder(fields, fieldName, callbacks) {
field fields[fieldName] = false;
currentFacet().addDataflow(() => {
function extend(item) {
callbacks.extend(item);
fields[fieldName] = true;
}
function commit() {
if (fields[fieldName]) {
callbacks.commit();
fields[fieldName] = false;
}
}, PRIORITY.IDLE);
return {
extend: function (item) {
callbacks.extend(item);
fields[fieldName] = true;
}
};
}
field fields[fieldName] = false;
currentFacet().addDataflow(commit, PRIORITY.IDLE);
return { extend, commit };
}
export function replayer(callbacks0) {