Skip to content

Commit

Permalink
reorg kvsync examples a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
vilterp committed Jun 10, 2024
1 parent ac36394 commit 738ef7c
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 41 deletions.
7 changes: 2 additions & 5 deletions apps/actors/systems/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
import { System } from "../types";
import { todoMVC } from "./todoMVC";
import { simpleCounter } from "./simpleCounter";
import { kvSyncBank, kvSyncChat, kvSyncCounter, kvSyncTodoMVC } from "./kvSync";
import { KVSYNC_SYSTEMS } from "./kvSync";

export const SYSTEMS: System<any, any>[] = [
todoMVC,
simpleCounter,
kvSyncCounter,
kvSyncTodoMVC,
kvSyncBank,
kvSyncChat,
...KVSYNC_SYSTEMS,
];
63 changes: 27 additions & 36 deletions apps/actors/systems/kvSync/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,46 +13,17 @@ import { EXAMPLES } from "./examples";
import { KVApp } from "./examples/types";
import { hashString } from "../../../../util/util";

export const KVSYNC_SYSTEMS = [
EXAMPLES.bank,
EXAMPLES.chat,
EXAMPLES.counter,
EXAMPLES.todoMVC,
].map(makeActorSystem);

export type KVSyncState = ServerState | ClientState | { type: "UserState" };

export type KVSyncMsg = MsgToServer | MsgToClient;

export function update(
state: KVSyncState,
init: LoadedTickInitiator<KVSyncState, KVSyncMsg>
): ActorResp<KVSyncState, KVSyncMsg> {
switch (state.type) {
case "ClientState":
return updateClient(
state,
init as LoadedTickInitiator<ClientState, MsgToClient>
);
case "ServerState":
return updateServer(
state,
init as LoadedTickInitiator<ServerState, MsgToServer>
);
case "UserState":
return effects.updateState(state);
}
}

export const kvSyncBank: System<KVSyncState, KVSyncMsg> = makeActorSystem(
EXAMPLES.bank
);

export const kvSyncChat: System<KVSyncState, KVSyncMsg> = makeActorSystem(
EXAMPLES.chat
);

export const kvSyncCounter: System<KVSyncState, KVSyncMsg> = makeActorSystem(
EXAMPLES.counter
);

export const kvSyncTodoMVC: System<KVSyncState, KVSyncMsg> = makeActorSystem(
EXAMPLES.todoMVC
);

export function makeActorSystem(app: KVApp): System<KVSyncState, KVSyncMsg> {
const randServerSeed = 1234; // TODO: pass this in
return {
Expand Down Expand Up @@ -97,3 +68,23 @@ export function makeActorSystem(app: KVApp): System<KVSyncState, KVSyncMsg> {
},
};
}

export function update(
state: KVSyncState,
init: LoadedTickInitiator<KVSyncState, KVSyncMsg>
): ActorResp<KVSyncState, KVSyncMsg> {
switch (state.type) {
case "ClientState":
return updateClient(
state,
init as LoadedTickInitiator<ClientState, MsgToClient>
);
case "ServerState":
return updateServer(
state,
init as LoadedTickInitiator<ServerState, MsgToServer>
);
case "UserState":
return effects.updateState(state);
}
}

0 comments on commit 738ef7c

Please sign in to comment.