import { Network, ActorLoad, MemoryState, BrowserActorContext, init_panic_hook, ActorRunContext } from '../pkg/release/reflow_network.js';
init_panic_hook();
class SimpleActor {
constructor() {
this.inports = ["input"];
this.outports = ["output"];
this.state = {};
this.config = {};
}
run(context) {
console.log("Actor received data:", JSON.stringify(context.input.input));
const result = {
message: `Processed: ${JSON.stringify(context.input.input)}`,
timestamp: Date.now()
};
context.send({ output: result });
}
}
async function main() {
try {
const network = new Network();
const actor = new SimpleActor();
const jsActor = network.createActor("simpleActor", actor);
network.addNode("processor", "simpleActor");
await network.start();
network.sendToActor("processor", "input", {
text: "Hello, Actor System!",
count: 42
});
network.next((event) => {
console.log("Network event:", event);
});
const state = new MemoryState();
state.set("counter", 1);
state.set("name", "Example Actor");
console.log("State value:", state.get("counter"));
console.log("State has 'name':", state.has("name"));
console.log("State size:", state.size());
const allState = state.getAll();
console.log("All state:", allState);
const context = new BrowserActorContext(
{ input: "Sample input data" },
{ timeout: 5000 }
);
console.log("Context payload:", context.getPayload());
console.log("Context config:", context.getConfig());
context.sendToOutport("output", { result: "Success!" });
context.done();
console.log("Actor names:", network.getActorNames());
console.log("Active actors:", network.getActiveActors());
console.log("Actor count:", network.getActorCount());
const result = await network.executeActor("processor", {
command: "calculate",
value: 100
});
console.log("Execution result:", result);
setTimeout(() => {
network.shutdown();
console.log("Network shutdown complete");
}, 5000);
} catch (error) {
console.error("Error in actor system:", error);
}
}
main().catch(console.error);