@resonatehq/sdk 0.6.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -45
- package/dist/dev/network.d.ts +16 -0
- package/dist/dev/network.d.ts.map +1 -0
- package/dist/dev/network.js +89 -0
- package/dist/dev/network.js.map +1 -0
- package/dist/dev/server.d.ts +87 -0
- package/dist/dev/server.d.ts.map +1 -0
- package/dist/dev/server.js +891 -0
- package/dist/dev/server.js.map +1 -0
- package/dist/sim/example-1.d.ts +2 -0
- package/dist/sim/example-1.d.ts.map +1 -0
- package/dist/sim/example-1.js +94 -0
- package/dist/sim/example-1.js.map +1 -0
- package/dist/sim/example-2.d.ts +2 -0
- package/dist/sim/example-2.d.ts.map +1 -0
- package/dist/sim/example-2.js +95 -0
- package/dist/sim/example-2.js.map +1 -0
- package/dist/sim/example-3.d.ts +2 -0
- package/dist/sim/example-3.d.ts.map +1 -0
- package/dist/sim/example-3.js +95 -0
- package/dist/sim/example-3.js.map +1 -0
- package/dist/sim/main.d.ts +14 -0
- package/dist/sim/main.d.ts.map +1 -0
- package/dist/sim/main.js +206 -0
- package/dist/sim/main.js.map +1 -0
- package/dist/sim/src/server.d.ts +15 -0
- package/dist/sim/src/server.d.ts.map +1 -0
- package/dist/sim/src/server.js +85 -0
- package/dist/sim/src/server.js.map +1 -0
- package/dist/sim/src/simulator.d.ts +65 -0
- package/dist/sim/src/simulator.d.ts.map +1 -0
- package/dist/sim/src/simulator.js +235 -0
- package/dist/sim/src/simulator.js.map +1 -0
- package/dist/sim/src/worker.d.ts +22 -0
- package/dist/sim/src/worker.d.ts.map +1 -0
- package/dist/sim/src/worker.js +175 -0
- package/dist/sim/src/worker.js.map +1 -0
- package/dist/src/clock.d.ts +11 -0
- package/dist/src/clock.d.ts.map +1 -0
- package/dist/src/clock.js +17 -0
- package/dist/src/clock.js.map +1 -0
- package/dist/src/computation.d.ts +40 -0
- package/dist/src/computation.d.ts.map +1 -0
- package/dist/src/computation.js +225 -0
- package/dist/src/computation.js.map +1 -0
- package/dist/src/context.d.ts +120 -0
- package/dist/src/context.d.ts.map +1 -0
- package/dist/src/context.js +288 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/coroutine.d.ts +35 -0
- package/dist/src/coroutine.d.ts.map +1 -0
- package/dist/src/coroutine.js +251 -0
- package/dist/src/coroutine.js.map +1 -0
- package/dist/src/decorator.d.ts +14 -0
- package/dist/src/decorator.d.ts.map +1 -0
- package/dist/src/decorator.js +208 -0
- package/dist/src/decorator.js.map +1 -0
- package/dist/src/handler.d.ts +40 -0
- package/dist/src/handler.d.ts.map +1 -0
- package/dist/src/handler.js +198 -0
- package/dist/src/handler.js.map +1 -0
- package/dist/src/heartbeat.d.ts +22 -0
- package/dist/src/heartbeat.d.ts.map +1 -0
- package/dist/src/heartbeat.js +87 -0
- package/dist/src/heartbeat.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +25 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/network/network.d.ts +216 -0
- package/dist/src/network/network.d.ts.map +1 -0
- package/dist/{core/logger.js → src/network/network.js} +2 -1
- package/dist/src/network/network.js.map +1 -0
- package/dist/src/network/remote.d.ts +67 -0
- package/dist/src/network/remote.d.ts.map +1 -0
- package/dist/src/network/remote.js +514 -0
- package/dist/src/network/remote.js.map +1 -0
- package/dist/src/nursery.d.ts +19 -0
- package/dist/src/nursery.d.ts.map +1 -0
- package/dist/src/nursery.js +102 -0
- package/dist/src/nursery.js.map +1 -0
- package/dist/src/processor/processor.d.ts +11 -0
- package/dist/src/processor/processor.d.ts.map +1 -0
- package/dist/src/processor/processor.js +24 -0
- package/dist/src/processor/processor.js.map +1 -0
- package/dist/src/promises.d.ts +23 -0
- package/dist/src/promises.d.ts.map +1 -0
- package/dist/src/promises.js +157 -0
- package/dist/src/promises.js.map +1 -0
- package/dist/src/registry.d.ts +15 -0
- package/dist/src/registry.d.ts.map +1 -0
- package/dist/src/registry.js +26 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/resonate-inner.d.ts +45 -0
- package/dist/src/resonate-inner.d.ts.map +1 -0
- package/dist/src/resonate-inner.js +157 -0
- package/dist/src/resonate-inner.js.map +1 -0
- package/dist/src/resonate.d.ts +92 -0
- package/dist/src/resonate.d.ts.map +1 -0
- package/dist/src/resonate.js +240 -0
- package/dist/src/resonate.js.map +1 -0
- package/dist/src/schedules.d.ts +9 -0
- package/dist/src/schedules.d.ts.map +1 -0
- package/dist/src/schedules.js +65 -0
- package/dist/src/schedules.js.map +1 -0
- package/dist/src/tasks.d.ts +9 -0
- package/dist/src/tasks.d.ts.map +1 -0
- package/dist/src/tasks.js +61 -0
- package/dist/src/tasks.js.map +1 -0
- package/dist/src/types.d.ts +86 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +14 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/util.d.ts +14 -0
- package/dist/src/util.d.ts.map +1 -0
- package/dist/src/util.js +69 -0
- package/dist/src/util.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +51 -52
- package/dist/core/encoder.d.ts +0 -5
- package/dist/core/encoder.d.ts.map +0 -1
- package/dist/core/encoder.js +0 -3
- package/dist/core/encoder.js.map +0 -1
- package/dist/core/encoders/base64.d.ts +0 -6
- package/dist/core/encoders/base64.d.ts.map +0 -1
- package/dist/core/encoders/base64.js +0 -13
- package/dist/core/encoders/base64.js.map +0 -1
- package/dist/core/encoders/json.d.ts +0 -6
- package/dist/core/encoders/json.d.ts.map +0 -1
- package/dist/core/encoders/json.js +0 -77
- package/dist/core/encoders/json.js.map +0 -1
- package/dist/core/errors.d.ts +0 -24
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -42
- package/dist/core/errors.js.map +0 -1
- package/dist/core/logger.d.ts +0 -10
- package/dist/core/logger.d.ts.map +0 -1
- package/dist/core/logger.js.map +0 -1
- package/dist/core/loggers/logger.d.ts +0 -13
- package/dist/core/loggers/logger.d.ts.map +0 -1
- package/dist/core/loggers/logger.js +0 -48
- package/dist/core/loggers/logger.js.map +0 -1
- package/dist/core/options.d.ts +0 -160
- package/dist/core/options.d.ts.map +0 -1
- package/dist/core/options.js +0 -18
- package/dist/core/options.js.map +0 -1
- package/dist/core/promises/promises.d.ts +0 -210
- package/dist/core/promises/promises.d.ts.map +0 -1
- package/dist/core/promises/promises.js +0 -300
- package/dist/core/promises/promises.js.map +0 -1
- package/dist/core/promises/types.d.ts +0 -42
- package/dist/core/promises/types.d.ts.map +0 -1
- package/dist/core/promises/types.js +0 -70
- package/dist/core/promises/types.js.map +0 -1
- package/dist/core/retry.d.ts +0 -37
- package/dist/core/retry.d.ts.map +0 -1
- package/dist/core/retry.js +0 -141
- package/dist/core/retry.js.map +0 -1
- package/dist/core/schedules/schedules.d.ts +0 -22
- package/dist/core/schedules/schedules.d.ts.map +0 -1
- package/dist/core/schedules/schedules.js +0 -29
- package/dist/core/schedules/schedules.js.map +0 -1
- package/dist/core/schedules/types.d.ts +0 -19
- package/dist/core/schedules/types.d.ts.map +0 -1
- package/dist/core/schedules/types.js +0 -8
- package/dist/core/schedules/types.js.map +0 -1
- package/dist/core/storage.d.ts +0 -6
- package/dist/core/storage.d.ts.map +0 -1
- package/dist/core/storage.js +0 -3
- package/dist/core/storage.js.map +0 -1
- package/dist/core/storages/memory.d.ts +0 -8
- package/dist/core/storages/memory.d.ts.map +0 -1
- package/dist/core/storages/memory.js +0 -29
- package/dist/core/storages/memory.js.map +0 -1
- package/dist/core/storages/withTimeout.d.ts +0 -10
- package/dist/core/storages/withTimeout.d.ts.map +0 -1
- package/dist/core/storages/withTimeout.js +0 -44
- package/dist/core/storages/withTimeout.js.map +0 -1
- package/dist/core/store.d.ts +0 -142
- package/dist/core/store.d.ts.map +0 -1
- package/dist/core/store.js +0 -3
- package/dist/core/store.js.map +0 -1
- package/dist/core/stores/local.d.ts +0 -57
- package/dist/core/stores/local.d.ts.map +0 -1
- package/dist/core/stores/local.js +0 -405
- package/dist/core/stores/local.js.map +0 -1
- package/dist/core/stores/remote.d.ts +0 -51
- package/dist/core/stores/remote.d.ts.map +0 -1
- package/dist/core/stores/remote.js +0 -431
- package/dist/core/stores/remote.js.map +0 -1
- package/dist/core/utils.d.ts +0 -85
- package/dist/core/utils.d.ts.map +0 -1
- package/dist/core/utils.js +0 -121
- package/dist/core/utils.js.map +0 -1
- package/dist/index.d.ts +0 -19
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -57
- package/dist/index.js.map +0 -1
- package/dist/resonate.d.ts +0 -337
- package/dist/resonate.d.ts.map +0 -1
- package/dist/resonate.js +0 -730
- package/dist/resonate.js.map +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Server } from "../../dev/server";
|
|
2
|
+
import type { StepClock } from "../../src/clock";
|
|
3
|
+
import type { Message as NetworkMessage, Request, Response } from "../../src/network/network";
|
|
4
|
+
import { Message, Process } from "./simulator";
|
|
5
|
+
export declare class ServerProcess extends Process {
|
|
6
|
+
readonly iaddr: string;
|
|
7
|
+
private clock;
|
|
8
|
+
server: Server;
|
|
9
|
+
constructor(clock: StepClock, iaddr: string);
|
|
10
|
+
tick(tick: number, messages: Message<Request>[]): Message<{
|
|
11
|
+
err?: any;
|
|
12
|
+
res?: Response;
|
|
13
|
+
} | NetworkMessage>[];
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../sim/src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,IAAI,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE9F,OAAO,EAAgB,OAAO,EAAE,OAAO,EAAoB,MAAM,aAAa,CAAC;AAE/E,qBAAa,aAAc,SAAQ,OAAO;aAMtB,KAAK,EAAE,MAAM;IAL/B,OAAO,CAAC,KAAK,CAAY;IACzB,MAAM,EAAE,MAAM,CAAgB;gBAG5B,KAAK,EAAE,SAAS,EACA,KAAK,EAAE,MAAM;IAM/B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,cAAc,CAAC,EAAE;CAqC5G"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ServerProcess = void 0;
|
|
37
|
+
const server_1 = require("../../dev/server");
|
|
38
|
+
const util = __importStar(require("../../src/util"));
|
|
39
|
+
const simulator_1 = require("./simulator");
|
|
40
|
+
class ServerProcess extends simulator_1.Process {
|
|
41
|
+
iaddr;
|
|
42
|
+
clock;
|
|
43
|
+
server = new server_1.Server();
|
|
44
|
+
constructor(clock, iaddr) {
|
|
45
|
+
super(iaddr);
|
|
46
|
+
this.iaddr = iaddr;
|
|
47
|
+
this.clock = clock;
|
|
48
|
+
}
|
|
49
|
+
tick(tick, messages) {
|
|
50
|
+
this.log(tick, "[recv]", messages);
|
|
51
|
+
const responses = [];
|
|
52
|
+
for (const message of messages) {
|
|
53
|
+
util.assert(message.target.iaddr === this.iaddr);
|
|
54
|
+
if (message.isRequest()) {
|
|
55
|
+
let res;
|
|
56
|
+
try {
|
|
57
|
+
res = { res: this.server.process(message.data, this.clock.time) };
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
res = { err: err };
|
|
61
|
+
}
|
|
62
|
+
responses.push(message.resp(res));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
for (const message of this.server.step(this.clock.time)) {
|
|
66
|
+
const url = new URL(message.recv);
|
|
67
|
+
let target;
|
|
68
|
+
if (url.username === "any") {
|
|
69
|
+
target = url.pathname === "" ? (0, simulator_1.anycast)(url.hostname) : (0, simulator_1.anycast)(url.hostname, url.pathname.slice(1));
|
|
70
|
+
}
|
|
71
|
+
else if (url.username === "uni") {
|
|
72
|
+
target = (0, simulator_1.unicast)(url.pathname.slice(1));
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw new Error(`not handled ${url}`);
|
|
76
|
+
}
|
|
77
|
+
const msg = new simulator_1.Message((0, simulator_1.unicast)(this.iaddr), target, message.msg, { requ: true });
|
|
78
|
+
responses.push(msg);
|
|
79
|
+
}
|
|
80
|
+
this.log(tick, "[send]", responses);
|
|
81
|
+
return responses;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.ServerProcess = ServerProcess;
|
|
85
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../sim/src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA0C;AAG1C,qDAAuC;AACvC,2CAA+E;AAE/E,MAAa,aAAc,SAAQ,mBAAO;IAMtB;IALV,KAAK,CAAY;IACzB,MAAM,GAAW,IAAI,eAAM,EAAE,CAAC;IAE9B,YACE,KAAgB,EACA,KAAa;QAE7B,KAAK,CAAC,KAAK,CAAC,CAAC;QAFG,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,QAA4B;QAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEnC,MAAM,SAAS,GAA8D,EAAE,CAAC;QAEhF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;gBACxB,IAAI,GAAkC,CAAC;gBACvC,IAAI,CAAC;oBACH,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBACrB,CAAC;gBAED,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAe,CAAC;YACpB,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,IAAA,mBAAO,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAA,mBAAO,EAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC;iBAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBAClC,MAAM,GAAG,IAAA,mBAAO,EAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAiB,IAAA,mBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAjDD,sCAiDC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export declare class Random {
|
|
2
|
+
private state;
|
|
3
|
+
constructor(seed: number);
|
|
4
|
+
random(bound: number): number;
|
|
5
|
+
next(): number;
|
|
6
|
+
pick<T>(list: T[]): T | undefined;
|
|
7
|
+
randint(min: number, max: number): number;
|
|
8
|
+
}
|
|
9
|
+
export type Address = {
|
|
10
|
+
kind: "unicast";
|
|
11
|
+
iaddr: string;
|
|
12
|
+
} | {
|
|
13
|
+
kind: "anycast";
|
|
14
|
+
gaddr: string;
|
|
15
|
+
iaddr?: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function unicast(iaddr: string): Address;
|
|
18
|
+
export declare function anycast(gaddr: string, iaddr?: string): Address;
|
|
19
|
+
export declare class Message<T> {
|
|
20
|
+
source: Address;
|
|
21
|
+
target: Address;
|
|
22
|
+
data: T;
|
|
23
|
+
head: Record<string, any>;
|
|
24
|
+
constructor(source: Address, target: Address, data: T, head?: Record<string, any>);
|
|
25
|
+
isRequest(): boolean;
|
|
26
|
+
isResponse(): boolean;
|
|
27
|
+
resp<U>(data: U): Message<U>;
|
|
28
|
+
}
|
|
29
|
+
export declare class Process {
|
|
30
|
+
readonly iaddr: string;
|
|
31
|
+
readonly gaddr?: string | undefined;
|
|
32
|
+
active: boolean;
|
|
33
|
+
constructor(iaddr: string, gaddr?: string | undefined);
|
|
34
|
+
tick(tick: number, messages: Message<any>[]): Message<any>[];
|
|
35
|
+
log(tick: number, ...args: any[]): void;
|
|
36
|
+
}
|
|
37
|
+
export interface DeliveryOptions {
|
|
38
|
+
dropProb?: number;
|
|
39
|
+
randomDelay?: number;
|
|
40
|
+
duplProb?: number;
|
|
41
|
+
deactivateProb?: number;
|
|
42
|
+
activateProb?: number;
|
|
43
|
+
}
|
|
44
|
+
export declare class Simulator {
|
|
45
|
+
private prng;
|
|
46
|
+
step: number;
|
|
47
|
+
private init;
|
|
48
|
+
private process;
|
|
49
|
+
private network;
|
|
50
|
+
outbox: Message<any>[];
|
|
51
|
+
deliveryOptions: Required<DeliveryOptions>;
|
|
52
|
+
private scheduledRepeat;
|
|
53
|
+
private scheduledDelay;
|
|
54
|
+
constructor(prng: Random, { dropProb, randomDelay, duplProb, deactivateProb, activateProb }?: DeliveryOptions);
|
|
55
|
+
addMessage(message: Message<any>): void;
|
|
56
|
+
assertAlways(cond: boolean, msg: string): void;
|
|
57
|
+
register(process: Process): void;
|
|
58
|
+
more(): boolean;
|
|
59
|
+
send(message: Message<any>): void;
|
|
60
|
+
tick(): void;
|
|
61
|
+
exec(steps: number): void;
|
|
62
|
+
repeat(interval: number, fn: () => void): void;
|
|
63
|
+
delay(runAt: number, fn: () => void): void;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=simulator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../../../sim/src/simulator.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IAEjB,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,EAAE,MAAM;IAKxB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI7B,IAAI,IAAI,MAAM;IAQd,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS;IAIjC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;CAG1C;AAED,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9G,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE9C;AACD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,qBAAa,OAAO,CAAC,CAAC;IAEX,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAHzB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,CAAC,EACP,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAEvC,SAAS,IAAI,OAAO;IAIpB,UAAU,IAAI,OAAO;IAGrB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;CAMhB;AAED,qBAAa,OAAO;aAIA,KAAK,EAAE,MAAM;aACb,KAAK,CAAC,EAAE,MAAM;IAJzB,MAAM,UAAQ;gBAGH,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,YAAA;IAGhC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE;IAI5D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAaxC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAS;IACd,IAAI,SAAK;IAChB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAsB;IAC9B,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAM;IAC5B,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAClD,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,cAAc,CAA2C;gBAG/D,IAAI,EAAE,MAAM,EACZ,EAAE,QAAY,EAAE,WAAe,EAAE,QAAY,EAAE,cAAkB,EAAE,YAAgB,EAAE,GAAE,eAAoB;IAM7G,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI;IAIvC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAW9C,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIhC,IAAI,IAAI,OAAO;IAKf,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI;IAIjC,IAAI,IAAI,IAAI;IAoFZ,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA2BzB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAG9C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;CAG3C"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Simulator = exports.Process = exports.Message = exports.Random = void 0;
|
|
4
|
+
exports.unicast = unicast;
|
|
5
|
+
exports.anycast = anycast;
|
|
6
|
+
class Random {
|
|
7
|
+
// Internal state of the random number generator (RNG)
|
|
8
|
+
state;
|
|
9
|
+
constructor(seed) {
|
|
10
|
+
// Ensure the seed is treated as an unsigned 32-bit integer
|
|
11
|
+
this.state = seed >>> 0;
|
|
12
|
+
}
|
|
13
|
+
random(bound) {
|
|
14
|
+
return this.next() * bound;
|
|
15
|
+
}
|
|
16
|
+
next() {
|
|
17
|
+
// Update the internal state using the LCG formula
|
|
18
|
+
this.state = (1664525 * this.state + 1013904223) >>> 0;
|
|
19
|
+
// Convert the 32-bit integer to a float in the range [0, 1)
|
|
20
|
+
return this.state / 0x100000000; // Equivalent to 2^32
|
|
21
|
+
}
|
|
22
|
+
pick(list) {
|
|
23
|
+
return list[Math.floor(this.next() * list.length)];
|
|
24
|
+
}
|
|
25
|
+
randint(min, max) {
|
|
26
|
+
return Math.floor(this.next() * (max - min + 1)) + min;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.Random = Random;
|
|
30
|
+
function unicast(iaddr) {
|
|
31
|
+
return { kind: "unicast", iaddr };
|
|
32
|
+
}
|
|
33
|
+
function anycast(gaddr, iaddr) {
|
|
34
|
+
return { kind: "anycast", gaddr, iaddr };
|
|
35
|
+
}
|
|
36
|
+
class Message {
|
|
37
|
+
source;
|
|
38
|
+
target;
|
|
39
|
+
data;
|
|
40
|
+
head;
|
|
41
|
+
constructor(source, target, data, head = {}) {
|
|
42
|
+
this.source = source;
|
|
43
|
+
this.target = target;
|
|
44
|
+
this.data = data;
|
|
45
|
+
this.head = head;
|
|
46
|
+
}
|
|
47
|
+
isRequest() {
|
|
48
|
+
return this.head.requ;
|
|
49
|
+
}
|
|
50
|
+
isResponse() {
|
|
51
|
+
return this.head.resp;
|
|
52
|
+
}
|
|
53
|
+
resp(data) {
|
|
54
|
+
return new Message(this.target, this.source, data, {
|
|
55
|
+
resp: this.head.requ,
|
|
56
|
+
correlationId: this.head.correlationId,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.Message = Message;
|
|
61
|
+
class Process {
|
|
62
|
+
iaddr;
|
|
63
|
+
gaddr;
|
|
64
|
+
active = true;
|
|
65
|
+
constructor(iaddr, gaddr) {
|
|
66
|
+
this.iaddr = iaddr;
|
|
67
|
+
this.gaddr = gaddr;
|
|
68
|
+
}
|
|
69
|
+
tick(tick, messages) {
|
|
70
|
+
throw new Error("not implemented");
|
|
71
|
+
}
|
|
72
|
+
log(tick, ...args) {
|
|
73
|
+
const message = `[tick: ${tick}] [proc: ${this.iaddr}] ${args.map(JSON.stringify)}`;
|
|
74
|
+
// Always log to console
|
|
75
|
+
console.log(message);
|
|
76
|
+
// Only append to the DOM if running in the browser
|
|
77
|
+
if (typeof document !== "undefined") {
|
|
78
|
+
const logEl = document.createElement("div");
|
|
79
|
+
logEl.textContent = message;
|
|
80
|
+
document.body.appendChild(logEl);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.Process = Process;
|
|
85
|
+
class Simulator {
|
|
86
|
+
prng;
|
|
87
|
+
step = 0;
|
|
88
|
+
init = false;
|
|
89
|
+
process = [];
|
|
90
|
+
network = [];
|
|
91
|
+
outbox = [];
|
|
92
|
+
deliveryOptions;
|
|
93
|
+
scheduledRepeat = [];
|
|
94
|
+
scheduledDelay = [];
|
|
95
|
+
constructor(prng, { dropProb = 0, randomDelay = 0, duplProb = 0, deactivateProb = 0, activateProb = 0 } = {}) {
|
|
96
|
+
this.prng = prng;
|
|
97
|
+
this.deliveryOptions = { dropProb, randomDelay, duplProb, deactivateProb, activateProb };
|
|
98
|
+
}
|
|
99
|
+
addMessage(message) {
|
|
100
|
+
this.network.push(message);
|
|
101
|
+
}
|
|
102
|
+
assertAlways(cond, msg) {
|
|
103
|
+
if (cond)
|
|
104
|
+
return; // Early return if assertion passes
|
|
105
|
+
console.assert(cond, "Assertion Failed: %s", msg);
|
|
106
|
+
console.trace();
|
|
107
|
+
if (typeof process !== "undefined" && process.versions.node) {
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
register(process) {
|
|
112
|
+
this.process.push(process);
|
|
113
|
+
}
|
|
114
|
+
more() {
|
|
115
|
+
// Simulator can make progress if it is not initialized or if there are messages in the network
|
|
116
|
+
return !this.init || this.network.length > 0;
|
|
117
|
+
}
|
|
118
|
+
send(message) {
|
|
119
|
+
this.network.push(message);
|
|
120
|
+
}
|
|
121
|
+
tick() {
|
|
122
|
+
if (!this.init) {
|
|
123
|
+
this.init = true;
|
|
124
|
+
}
|
|
125
|
+
this.step += 1;
|
|
126
|
+
const { deactivateProb, activateProb } = this.deliveryOptions;
|
|
127
|
+
if ((deactivateProb > 0 || activateProb > 0) && this.process.length > 0) {
|
|
128
|
+
for (const proc of this.process) {
|
|
129
|
+
if (proc.active) {
|
|
130
|
+
if (this.prng.next() < deactivateProb) {
|
|
131
|
+
proc.active = false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
if (this.prng.next() < activateProb) {
|
|
136
|
+
proc.active = true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const retained = [];
|
|
142
|
+
const consumed = [];
|
|
143
|
+
for (const message of this.network) {
|
|
144
|
+
// Drop?
|
|
145
|
+
if (this.prng.next() < this.deliveryOptions.dropProb) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
// Delay?
|
|
149
|
+
if (this.prng.next() < this.deliveryOptions.randomDelay) {
|
|
150
|
+
retained.push(message);
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
// Deliver now
|
|
154
|
+
consumed.push(message);
|
|
155
|
+
// Duplicate?
|
|
156
|
+
if (this.prng.next() < this.deliveryOptions.duplProb) {
|
|
157
|
+
retained.push(message);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const inboxes = {};
|
|
161
|
+
for (const process of this.process) {
|
|
162
|
+
inboxes[process.iaddr] = [];
|
|
163
|
+
}
|
|
164
|
+
for (const message of consumed) {
|
|
165
|
+
const target = message.target;
|
|
166
|
+
if (target.kind === "unicast") {
|
|
167
|
+
if (target.iaddr in inboxes) {
|
|
168
|
+
inboxes[target.iaddr].push(message);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else if (target.kind === "anycast") {
|
|
172
|
+
const preference = this.process.find((p) => p.active && p.iaddr === target.iaddr);
|
|
173
|
+
if (preference) {
|
|
174
|
+
inboxes[preference.iaddr].push(message);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
const process = this.prng.pick(this.process.filter((p) => p.active && target.gaddr === p.gaddr));
|
|
178
|
+
if (process) {
|
|
179
|
+
inboxes[process.iaddr].push(message);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
throw new Error("unknown target.kind");
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const newMessages = [];
|
|
188
|
+
for (const process of this.process) {
|
|
189
|
+
if (!process.active) {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
for (const msg of process.tick(this.step, inboxes[process.iaddr])) {
|
|
193
|
+
if (msg.target.kind === "unicast" && msg.target.iaddr === "environment") {
|
|
194
|
+
this.outbox.push(msg);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
newMessages.push(msg);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
this.network = retained.concat(newMessages);
|
|
202
|
+
}
|
|
203
|
+
exec(steps) {
|
|
204
|
+
let i = 0;
|
|
205
|
+
while (i < steps) {
|
|
206
|
+
for (const task of this.scheduledRepeat) {
|
|
207
|
+
if (this.step % task.interval === 0) {
|
|
208
|
+
task.fn();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (this.scheduledDelay.length > 0) {
|
|
212
|
+
const remaining = [];
|
|
213
|
+
for (const task of this.scheduledDelay) {
|
|
214
|
+
if (task.runAt === this.step) {
|
|
215
|
+
task.fn();
|
|
216
|
+
}
|
|
217
|
+
else if (task.runAt > this.step) {
|
|
218
|
+
remaining.push(task);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
this.scheduledDelay = remaining;
|
|
222
|
+
}
|
|
223
|
+
this.tick();
|
|
224
|
+
i++;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
repeat(interval, fn) {
|
|
228
|
+
this.scheduledRepeat.push({ interval, fn });
|
|
229
|
+
}
|
|
230
|
+
delay(runAt, fn) {
|
|
231
|
+
this.scheduledDelay.push({ runAt, fn });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
exports.Simulator = Simulator;
|
|
235
|
+
//# sourceMappingURL=simulator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../../sim/src/simulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { StepClock } from "../../src/clock";
|
|
2
|
+
import type { Message as NetworkMessage, Request, Response } from "../../src/network/network";
|
|
3
|
+
import type { Registry } from "../../src/registry";
|
|
4
|
+
import { Message, Process, type Random } from "./simulator";
|
|
5
|
+
interface DeliveryOptions {
|
|
6
|
+
charFlipProb?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class WorkerProcess extends Process {
|
|
9
|
+
readonly iaddr: string;
|
|
10
|
+
readonly gaddr: string;
|
|
11
|
+
private clock;
|
|
12
|
+
private network;
|
|
13
|
+
private registry;
|
|
14
|
+
private resonate;
|
|
15
|
+
constructor(prng: Random, clock: StepClock, registry: Registry, { charFlipProb }: DeliveryOptions, iaddr: string, gaddr: string);
|
|
16
|
+
tick(tick: number, messages: Message<{
|
|
17
|
+
err?: any;
|
|
18
|
+
res?: Response;
|
|
19
|
+
} | NetworkMessage>[]): Message<Request>[];
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../sim/src/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EAAW,OAAO,IAAI,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAe,MAAM,2BAA2B,CAAC;AACpH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAInD,OAAO,EAAgB,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,aAAa,CAAC;AAEnF,UAAU,eAAe;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAgHD,qBAAa,aAAc,SAAQ,OAAO;aAWtB,KAAK,EAAE,MAAM;aACb,KAAK,EAAE,MAAM;IAX/B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAgB;gBAG9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,QAAQ,EAClB,EAAE,YAAgB,EAAE,EAAE,eAAe,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM;IAoB/B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,cAAc,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE;CAc5G"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.WorkerProcess = void 0;
|
|
37
|
+
const handler_1 = require("../../src/handler");
|
|
38
|
+
const heartbeat_1 = require("../../src/heartbeat");
|
|
39
|
+
const resonate_inner_1 = require("../../src/resonate-inner");
|
|
40
|
+
const util = __importStar(require("../../src/util"));
|
|
41
|
+
const simulator_1 = require("./simulator");
|
|
42
|
+
class SimulatedNetwork {
|
|
43
|
+
source;
|
|
44
|
+
target;
|
|
45
|
+
correlationId = 1;
|
|
46
|
+
currentTime = 0;
|
|
47
|
+
prng;
|
|
48
|
+
deliveryOptions;
|
|
49
|
+
buffer = [];
|
|
50
|
+
callbacks = {};
|
|
51
|
+
subscriptions = [];
|
|
52
|
+
constructor(prng, { charFlipProb = 0 }, source, target) {
|
|
53
|
+
this.source = source;
|
|
54
|
+
this.target = target;
|
|
55
|
+
this.prng = prng;
|
|
56
|
+
this.deliveryOptions = { charFlipProb };
|
|
57
|
+
}
|
|
58
|
+
send(req, cb) {
|
|
59
|
+
const message = new simulator_1.Message(this.source, this.target, req, {
|
|
60
|
+
requ: true,
|
|
61
|
+
correlationId: this.correlationId++,
|
|
62
|
+
});
|
|
63
|
+
const callback = (err, res) => {
|
|
64
|
+
util.assert(err || (res !== undefined && res.kind === req.kind), "res kind must match req kind");
|
|
65
|
+
cb(err, res);
|
|
66
|
+
};
|
|
67
|
+
this.callbacks[message.head.correlationId] = { callback, timeout: this.currentTime + 5000 };
|
|
68
|
+
this.buffer.push(message);
|
|
69
|
+
}
|
|
70
|
+
recv(msg) {
|
|
71
|
+
for (const callback of this.subscriptions) {
|
|
72
|
+
callback(this.maybeCorruptData(msg));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
subscribe(callback) {
|
|
76
|
+
this.subscriptions.push(callback);
|
|
77
|
+
}
|
|
78
|
+
stop() { }
|
|
79
|
+
time(time) {
|
|
80
|
+
this.currentTime = time;
|
|
81
|
+
// Then, check for timed-out callbacks
|
|
82
|
+
for (const key in this.callbacks) {
|
|
83
|
+
const cb = this.callbacks[key];
|
|
84
|
+
const hasTimedOut = cb.timeout < this.currentTime;
|
|
85
|
+
if (hasTimedOut) {
|
|
86
|
+
cb.callback(true);
|
|
87
|
+
delete this.callbacks[key];
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
process(message) {
|
|
92
|
+
if (message.isResponse()) {
|
|
93
|
+
util.assert(message.source === this.target);
|
|
94
|
+
util.assert(message.target === this.source);
|
|
95
|
+
const correlationId = message.head?.correlationId;
|
|
96
|
+
const entry = correlationId && this.callbacks[correlationId];
|
|
97
|
+
if (entry) {
|
|
98
|
+
const msg = message;
|
|
99
|
+
if (msg.data.err) {
|
|
100
|
+
util.assert(msg.data.res === undefined);
|
|
101
|
+
entry.callback(true);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
util.assertDefined(msg.data.res);
|
|
105
|
+
entry.callback(false, this.maybeCorruptData(msg.data.res));
|
|
106
|
+
}
|
|
107
|
+
delete this.callbacks[correlationId];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
util.assert(message.source.kind === this.target.kind && message.source.iaddr === this.target.iaddr);
|
|
112
|
+
this.recv(message.data);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
flush() {
|
|
116
|
+
// Finally, flush the buffer
|
|
117
|
+
const flushed = this.buffer;
|
|
118
|
+
this.buffer = [];
|
|
119
|
+
return flushed;
|
|
120
|
+
}
|
|
121
|
+
maybeCorruptData(data) {
|
|
122
|
+
// Serialize the data to a string
|
|
123
|
+
let jsonStr = JSON.stringify(data);
|
|
124
|
+
// Randomly decide whether to corrupt
|
|
125
|
+
const shouldCorrupt = this.prng.next() < this.deliveryOptions.charFlipProb;
|
|
126
|
+
if (!shouldCorrupt)
|
|
127
|
+
return data;
|
|
128
|
+
// Pick a random index to corrupt
|
|
129
|
+
const idx = Math.floor(this.prng.next() * jsonStr.length);
|
|
130
|
+
// Corrupt that character
|
|
131
|
+
jsonStr = `${jsonStr.slice(0, idx)}X${jsonStr.slice(idx + 1)}`;
|
|
132
|
+
// Return corrupted string, even if it's invalid JSON
|
|
133
|
+
return jsonStr;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
class WorkerProcess extends simulator_1.Process {
|
|
137
|
+
iaddr;
|
|
138
|
+
gaddr;
|
|
139
|
+
clock;
|
|
140
|
+
network;
|
|
141
|
+
registry;
|
|
142
|
+
resonate;
|
|
143
|
+
constructor(prng, clock, registry, { charFlipProb = 0 }, iaddr, gaddr) {
|
|
144
|
+
super(iaddr, gaddr);
|
|
145
|
+
this.iaddr = iaddr;
|
|
146
|
+
this.gaddr = gaddr;
|
|
147
|
+
this.clock = clock;
|
|
148
|
+
this.network = new SimulatedNetwork(prng, { charFlipProb: 0 }, (0, simulator_1.unicast)(iaddr), (0, simulator_1.unicast)("server"));
|
|
149
|
+
this.registry = registry;
|
|
150
|
+
this.resonate = new resonate_inner_1.ResonateInner({
|
|
151
|
+
unicast: `sim://uni@${gaddr}/${iaddr}`,
|
|
152
|
+
anycast: `sim://any@${gaddr}/${iaddr}`,
|
|
153
|
+
pid: iaddr,
|
|
154
|
+
ttl: 5000,
|
|
155
|
+
clock: this.clock,
|
|
156
|
+
network: this.network,
|
|
157
|
+
handler: new handler_1.Handler(this.network),
|
|
158
|
+
registry: registry,
|
|
159
|
+
heartbeat: new heartbeat_1.NoopHeartbeat(),
|
|
160
|
+
dependencies: new Map(),
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
tick(tick, messages) {
|
|
164
|
+
this.log(tick, "[recv]", messages);
|
|
165
|
+
this.network.time(this.clock.time);
|
|
166
|
+
for (const message of messages) {
|
|
167
|
+
this.network.process(message);
|
|
168
|
+
}
|
|
169
|
+
const responses = this.network.flush();
|
|
170
|
+
this.log(tick, "[send]", responses);
|
|
171
|
+
return responses;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.WorkerProcess = WorkerProcess;
|
|
175
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../sim/src/worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/clock.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,GAAG,IAAI,MAAM,CAAC;CACf;AAED,qBAAa,SAAS;IACpB,GAAG,IAAI,MAAM;CAGd;AAED,qBAAa,SAAS;IACb,IAAI,SAAK;IAChB,GAAG,IAAI,MAAM;CAGd"}
|