Batch authoritative snapshots and bound rejected retreat fallback
This commit is contained in:
@@ -70,6 +70,16 @@ function observedHardcoreDeath(s:State,b:Bot,observation:Observation){
|
||||
return true;
|
||||
}
|
||||
|
||||
// Apply one transport batch atomically; one large state write instead of one per bot.
|
||||
export async function applyAuthoritativeAleSnapshots(store:StateStore,payloads:Record<string,unknown>[]){
|
||||
const initial=await store.load(),revision=initial.revision;
|
||||
let staged=structuredClone(initial),dirty=false;
|
||||
const batchStore:StateStore={load:async()=>staged,save:async(next)=>{staged=next;dirty=true;}};
|
||||
for(const payload of payloads)await applyAuthoritativeAleEvent(batchStore,'player.snapshot',payload);
|
||||
if(dirty)await store.save(staged,revision);
|
||||
return {ok:true,count:payloads.length};
|
||||
}
|
||||
|
||||
export async function applyAuthoritativeAleEvent(store:StateStore,kind:string,payload:Record<string,unknown>){
|
||||
let s=await store.load();
|
||||
const revision=s.revision;
|
||||
|
||||
Reference in New Issue
Block a user