const rollup_server = process.env.ROLLUP_HTTP_SERVER_URL;
console.log("HTTP rollup_server url is " + rollup_server);
class Counter {
constructor() {
this.count = 0;
}
increment() {
this.count += 1;
return this.count;
}
get() {
return this.count;
}
}
var counter = new Counter();
async function handle_advance(data) {
console.log("Received advance request data " + JSON.stringify(data));
var new_val = counter.increment();
console.log(`Counter increment requested, new count value: ${new_val}`);
return "accept";
}
async function handle_inspect(data) {
console.log("Received inspect request data " + JSON.stringify(data));
console.log(`Current counter value: ${counter.get()}`);
return "accept";
}
var handlers = {
advance_state: handle_advance,
inspect_state: handle_inspect,
};
var finish = { status: "accept" };
(async () => {
while (true) {
const finish_req = await fetch(rollup_server + "/finish", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ status: "accept" }),
});
console.log("Received finish status " + finish_req.status);
if (finish_req.status == 202) {
console.log("No pending rollup request, trying again");
} else {
const rollup_req = await finish_req.json();
var handler = handlers[rollup_req["request_type"]];
finish["status"] = await handler(rollup_req["data"]);
}
}
})();