@quenk/potoo 4.0.5 → 4.0.9

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.
Files changed (84) hide show
  1. package/lib/actor/address.js.map +1 -1
  2. package/lib/actor/api.d.ts +2 -2
  3. package/lib/actor/api.js.map +1 -1
  4. package/lib/actor/framework/index.js +2 -2
  5. package/lib/actor/framework/index.js.map +1 -1
  6. package/lib/actor/framework/process.d.ts +3 -2
  7. package/lib/actor/framework/process.js.map +1 -1
  8. package/lib/actor/framework/resident.d.ts +5 -3
  9. package/lib/actor/framework/resident.js +2 -0
  10. package/lib/actor/framework/resident.js.map +1 -1
  11. package/lib/actor/index.js.map +1 -1
  12. package/lib/actor/system/vm/allocator/index.js.map +1 -1
  13. package/lib/actor/system/vm/allocator/map.js.map +1 -1
  14. package/lib/actor/system/vm/conf.d.ts +5 -5
  15. package/lib/actor/system/vm/conf.js.map +1 -1
  16. package/lib/actor/system/vm/event/dispatcher.js.map +1 -1
  17. package/lib/actor/system/vm/event/index.js.map +1 -1
  18. package/lib/actor/system/vm/frame.js.map +1 -1
  19. package/lib/actor/system/vm/group.js.map +1 -1
  20. package/lib/actor/system/vm/index.d.ts +2 -2
  21. package/lib/actor/system/vm/index.js.map +1 -1
  22. package/lib/actor/system/vm/log/index.js.map +1 -1
  23. package/lib/actor/system/vm/log/writer.js.map +1 -1
  24. package/lib/actor/system/vm/object/foreign.js.map +1 -1
  25. package/lib/actor/system/vm/object/index.js.map +1 -1
  26. package/lib/actor/system/vm/object/list.js.map +1 -1
  27. package/lib/actor/system/vm/op/actor.js.map +1 -1
  28. package/lib/actor/system/vm/op/base.js.map +1 -1
  29. package/lib/actor/system/vm/op/index.js.map +1 -1
  30. package/lib/actor/system/vm/op/object.js.map +1 -1
  31. package/lib/actor/system/vm/registry.js.map +1 -1
  32. package/lib/actor/system/vm/runtime/error.js.map +1 -1
  33. package/lib/actor/system/vm/runtime.js.map +1 -1
  34. package/lib/actor/system/vm/scheduler.js.map +1 -1
  35. package/lib/actor/system/vm/script/index.js.map +1 -1
  36. package/lib/actor/system/vm/script/info.js.map +1 -1
  37. package/lib/actor/system/vm/strategy/error.js.map +1 -1
  38. package/lib/actor/system/vm/thread/factory.js.map +1 -1
  39. package/lib/actor/system/vm/thread/index.js.map +1 -1
  40. package/lib/actor/system/vm/thread/process.js.map +1 -1
  41. package/lib/actor/system/vm/thread/shared/index.js.map +1 -1
  42. package/lib/actor/system/vm/thread/shared/js.d.ts +2 -2
  43. package/lib/actor/system/vm/thread/shared/js.js.map +1 -1
  44. package/lib/actor/system/vm/type.js.map +1 -1
  45. package/lib/actor/template.js.map +1 -1
  46. package/package.json +11 -9
  47. package/lib/actor/address.ts +0 -90
  48. package/lib/actor/api.ts +0 -57
  49. package/lib/actor/framework/index.ts +0 -1
  50. package/lib/actor/framework/process.ts +0 -87
  51. package/lib/actor/framework/resident.ts +0 -90
  52. package/lib/actor/index.ts +0 -35
  53. package/lib/actor/system/vm/allocator/index.ts +0 -43
  54. package/lib/actor/system/vm/allocator/map.ts +0 -256
  55. package/lib/actor/system/vm/conf.ts +0 -33
  56. package/lib/actor/system/vm/event/dispatcher.ts +0 -85
  57. package/lib/actor/system/vm/event/index.ts +0 -143
  58. package/lib/actor/system/vm/frame.ts +0 -484
  59. package/lib/actor/system/vm/group.ts +0 -46
  60. package/lib/actor/system/vm/index.ts +0 -230
  61. package/lib/actor/system/vm/log/index.ts +0 -73
  62. package/lib/actor/system/vm/log/writer.ts +0 -96
  63. package/lib/actor/system/vm/object/foreign.ts +0 -10
  64. package/lib/actor/system/vm/object/index.ts +0 -4
  65. package/lib/actor/system/vm/object/list.ts +0 -8
  66. package/lib/actor/system/vm/op/actor.ts +0 -126
  67. package/lib/actor/system/vm/op/base.ts +0 -243
  68. package/lib/actor/system/vm/op/index.ts +0 -388
  69. package/lib/actor/system/vm/op/object.ts +0 -81
  70. package/lib/actor/system/vm/registry.ts +0 -223
  71. package/lib/actor/system/vm/runtime/error.ts +0 -260
  72. package/lib/actor/system/vm/runtime.ts +0 -31
  73. package/lib/actor/system/vm/scheduler.ts +0 -111
  74. package/lib/actor/system/vm/script/index.ts +0 -64
  75. package/lib/actor/system/vm/script/info.ts +0 -368
  76. package/lib/actor/system/vm/strategy/error.ts +0 -88
  77. package/lib/actor/system/vm/thread/factory.ts +0 -29
  78. package/lib/actor/system/vm/thread/index.ts +0 -29
  79. package/lib/actor/system/vm/thread/process.ts +0 -134
  80. package/lib/actor/system/vm/thread/shared/index.ts +0 -50
  81. package/lib/actor/system/vm/thread/shared/js.ts +0 -151
  82. package/lib/actor/system/vm/type.ts +0 -115
  83. package/lib/actor/template.ts +0 -170
  84. package/lib/tsconfig.json +0 -22
@@ -1,5 +1,5 @@
1
1
  import { Err } from '@quenk/noni/lib/control/error';
2
- import { TypeCase } from '@quenk/noni/lib/control/match/case';
2
+ import { Case } from '@quenk/noni/lib/control/match/case';
3
3
  import { Template } from '../../../../template';
4
4
  import { Address } from '../../../../address';
5
5
  import { Message } from '../../../..';
@@ -31,5 +31,5 @@ export declare class JSThread implements SharedThread {
31
31
  raise(e: Err): Promise<void>;
32
32
  spawn(tmpl: Template): Promise<Address>;
33
33
  tell(addr: Address, msg: Message): Promise<void>;
34
- receive<T = Message>(cases?: TypeCase<T>[]): Promise<T>;
34
+ receive<T = Message>(cases?: Case<Message, T>[]): Promise<T>;
35
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"js.js","sourceRoot":"","sources":["js.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"js.js","sourceRoot":"","sources":["../../../../../../src/actor/system/vm/thread/shared/js.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["type.ts"],"names":[],"mappings":";;;AAYa,QAAA,SAAS,GAAG,UAAU,CAAC;AACvB,QAAA,UAAU,GAAG,QAAQ,CAAC;AAEtB,QAAA,SAAS,GAAG,SAAS,CAAC;AAEtB,QAAA,UAAU,GAAG,iBAAS,CAAC;AACvB,QAAA,WAAW,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC5B,QAAA,WAAW,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC5B,QAAA,SAAS,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC1B,QAAA,UAAU,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC3B,QAAA,UAAU,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC3B,QAAA,YAAY,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC7B,QAAA,WAAW,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC5B,QAAA,WAAW,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC5B,QAAA,SAAS,GAAG,iBAAS,GAAG,EAAE,CAAC;AAC3B,QAAA,QAAQ,GAAG,iBAAS,GAAG,EAAE,CAAC;AAC1B,QAAA,SAAS,GAAG,iBAAS,GAAG,EAAE,CAAC;AAC3B,QAAA,YAAY,GAAG,iBAAS,GAAG,EAAE,CAAC;AAC9B,QAAA,SAAS,GAAG,UAAU,CAAC;AAEvB,QAAA,SAAS,GAAG,UAAU,CAAC;AA6EpC;;;;GAIG;AACI,MAAM,OAAO,GAAG,CAAC,CAAiB,EAAU,EAAE,CAAC,CAAC,GAAG,iBAAS,CAAC;AAAvD,QAAA,OAAO,WAAgD"}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../../src/actor/system/vm/type.ts"],"names":[],"mappings":";;;AAYa,QAAA,SAAS,GAAG,UAAU,CAAC;AACvB,QAAA,UAAU,GAAG,QAAQ,CAAC;AAEtB,QAAA,SAAS,GAAG,SAAS,CAAC;AAEtB,QAAA,UAAU,GAAG,iBAAS,CAAC;AACvB,QAAA,WAAW,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC5B,QAAA,WAAW,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC5B,QAAA,SAAS,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC1B,QAAA,UAAU,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC3B,QAAA,UAAU,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC3B,QAAA,YAAY,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC7B,QAAA,WAAW,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC5B,QAAA,WAAW,GAAG,iBAAS,GAAG,CAAC,CAAC;AAC5B,QAAA,SAAS,GAAG,iBAAS,GAAG,EAAE,CAAC;AAC3B,QAAA,QAAQ,GAAG,iBAAS,GAAG,EAAE,CAAC;AAC1B,QAAA,SAAS,GAAG,iBAAS,GAAG,EAAE,CAAC;AAC3B,QAAA,YAAY,GAAG,iBAAS,GAAG,EAAE,CAAC;AAC9B,QAAA,SAAS,GAAG,UAAU,CAAC;AAEvB,QAAA,SAAS,GAAG,UAAU,CAAC;AA6EpC;;;;GAIG;AACI,MAAM,OAAO,GAAG,CAAC,CAAiB,EAAU,EAAE,CAAC,CAAC,GAAG,iBAAS,CAAC;AAAvD,QAAA,OAAO,WAAgD"}
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["template.ts"],"names":[],"mappings":";;;AAEA,oDAAiE;AAKpD,QAAA,YAAY,GAAG,CAAC,GAAG,CAAC;AACpB,QAAA,aAAa,GAAG,GAAG,CAAC;AACpB,QAAA,cAAc,GAAG,GAAG,CAAC;AACrB,QAAA,WAAW,GAAG,GAAG,CAAC;AAqI/B,MAAM,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC,WAAW,CAAC;AAEnD,MAAM,eAAe,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,aAAa,CAAC;AAE/E;;GAEG;AACI,MAAM,iBAAiB,GAAG,CAAC,IAAc,EAA2B,EAAE,CACzE,IAAA,eAAQ,EAAmB,IAAK,CAAC,MAAM,CAAC,CAAC;AADhC,QAAA,iBAAiB,qBACe;AAE7C;;;;;;;GAOG;AACI,MAAM,aAAa,GAAG,CAAC,IAAe,EAAY,EAAE;IACvD,IAAI,IAAA,iBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,eAAe,CAAC,IAAI,CAAC;YACxB,CAAC,CAAC,EAAE,GAAG,EAAW,IAAI,EAAE;YACxB,CAAC,CAAC,EAAE,MAAM,EAAc,IAAI,EAAE,CAAC;IACvC,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AARW,QAAA,aAAa,iBAQxB"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/actor/template.ts"],"names":[],"mappings":";;;AAEA,oDAAiE;AAKpD,QAAA,YAAY,GAAG,CAAC,GAAG,CAAC;AACpB,QAAA,aAAa,GAAG,GAAG,CAAC;AACpB,QAAA,cAAc,GAAG,GAAG,CAAC;AACrB,QAAA,WAAW,GAAG,GAAG,CAAC;AAqI/B,MAAM,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC,WAAW,CAAC;AAEnD,MAAM,eAAe,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,aAAa,CAAC;AAE/E;;GAEG;AACI,MAAM,iBAAiB,GAAG,CAAC,IAAc,EAA2B,EAAE,CACzE,IAAA,eAAQ,EAAmB,IAAK,CAAC,MAAM,CAAC,CAAC;AADhC,QAAA,iBAAiB,qBACe;AAE7C;;;;;;;GAOG;AACI,MAAM,aAAa,GAAG,CAAC,IAAe,EAAY,EAAE;IACvD,IAAI,IAAA,iBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,eAAe,CAAC,IAAI,CAAC;YACxB,CAAC,CAAC,EAAE,GAAG,EAAW,IAAI,EAAE;YACxB,CAAC,CAAC,EAAE,MAAM,EAAc,IAAI,EAAE,CAAC;IACvC,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AARW,QAAA,aAAa,iBAQxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenk/potoo",
3
- "version": "4.0.5",
3
+ "version": "4.0.9",
4
4
  "description": "Message passing virtual machine.",
5
5
  "main": "lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -9,6 +9,7 @@
9
9
  ],
10
10
  "scripts": {
11
11
  "lint": "./node_modules/.bin/eslint src/**/*.ts test/**/*.ts",
12
+ "format": "./node_modules/.bin/prettier --write src test",
12
13
  "build": "make",
13
14
  "test": "./node_modules/.bin/jest --config jest.config.ts --runInBand test"
14
15
  },
@@ -16,21 +17,22 @@
16
17
  "@jest/globals": "^29.7.0",
17
18
  "@quenk/test": "^2.5.0",
18
19
  "@types/jest": "^29.5.12",
19
- "@types/node": "^20.14.12",
20
- "@typescript-eslint/eslint-plugin": "^5.53.0",
21
- "eslint": "^8.34.0",
22
- "eslint-config-prettier": "^8.6.0",
23
- "eslint-plugin-prettier": "^4.2.1",
20
+ "@types/node": "^22.0.2",
21
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
22
+ "eslint": "^9.8.0",
23
+ "eslint-config-prettier": "^9.1.0",
24
+ "eslint-plugin-prettier": "^5.2.1",
24
25
  "jest": "^29.7.0",
25
26
  "jest-mock-extended": "^3.0.7",
26
- "prettier": "^2.8.4",
27
+ "prettier": "^3.3.3",
27
28
  "ts-jest": "^29.1.2",
28
29
  "ts-node": "^10.9.2",
29
- "typescript": "^5.5.4"
30
+ "typescript": "^5.5.4",
31
+ "typescript-eslint": "^8.0.0"
30
32
  },
31
33
  "author": "Quenk Technologies Limited",
32
34
  "license": "Apache-2.0",
33
35
  "dependencies": {
34
- "@quenk/noni": "^1.52.11"
36
+ "@quenk/noni": "^1.52.15"
35
37
  }
36
38
  }
@@ -1,90 +0,0 @@
1
- import { tail } from '@quenk/noni/lib/data/array';
2
- import { startsWith } from '@quenk/noni/lib/data/string';
3
-
4
- export const SEPERATOR = '/';
5
-
6
- export const ADDRESS_DISCARD = '?';
7
- export const ADDRESS_SYSTEM = '$';
8
- export const ADDRESS_EMPTY = '';
9
- export const ADDRESS_RESTRICTED = [ADDRESS_DISCARD, ADDRESS_SYSTEM, SEPERATOR];
10
-
11
- /**
12
- * Address of an actor.
13
- *
14
- * Addresses are used to properly route messages between actors in the system
15
- * and conform to the path part of a URL.
16
- */
17
- export type Address = string;
18
-
19
- /**
20
- * AddressMap
21
- */
22
- export interface AddressMap {
23
- [key: string]: Address;
24
- }
25
-
26
- /**
27
- * isRestricted indicates whether an actor id is restricted or not.
28
- */
29
- export const isRestricted = (id: string) =>
30
- ADDRESS_RESTRICTED.some(a => id.indexOf(a) > -1) && id !== SEPERATOR;
31
-
32
- /**
33
- * make a child address given its id and parent address.
34
- */
35
- export const make = (parent: Address, id: string): Address => {
36
- id = id.trim();
37
- return parent === SEPERATOR || parent === ADDRESS_EMPTY
38
- ? `${parent}${id}`
39
- : parent === ADDRESS_SYSTEM
40
- ? id
41
- : `${parent}${SEPERATOR}${id}`;
42
- };
43
-
44
- /**
45
- * getParent computes the parent of an Address.
46
- */
47
- export const getParent = (addr: Address): Address => {
48
- if (
49
- addr === ADDRESS_SYSTEM ||
50
- addr === ADDRESS_EMPTY ||
51
- addr === ADDRESS_DISCARD ||
52
- addr === SEPERATOR
53
- ) {
54
- return ADDRESS_SYSTEM;
55
- } else {
56
- let b4 = addr.split(SEPERATOR);
57
-
58
- if (b4.length === 2 && b4[0] === '') {
59
- return SEPERATOR;
60
- } else {
61
- let a = b4.reverse().slice(1).reverse().join(SEPERATOR);
62
-
63
- return a === ADDRESS_EMPTY ? ADDRESS_SYSTEM : a;
64
- }
65
- }
66
- };
67
-
68
- /**
69
- * getId provides the id part of an actor address.
70
- */
71
- export const getId = (addr: Address): string =>
72
- addr === ADDRESS_SYSTEM ||
73
- addr === ADDRESS_DISCARD ||
74
- addr === ADDRESS_EMPTY ||
75
- addr === SEPERATOR
76
- ? addr
77
- : tail(addr.split(SEPERATOR));
78
-
79
- /**
80
- * isChild tests whether an address is a child of the parent address.
81
- */
82
- export const isChild = (parent: Address, child: Address): boolean =>
83
- (parent === ADDRESS_SYSTEM && child !== parent) ||
84
- startsWith(child, `${parent}${SEPERATOR}`);
85
-
86
- /**
87
- * isGroup determines if an address is a group reference.
88
- */
89
- export const isGroup = (addr: Address): boolean =>
90
- addr[0] === '$' && addr !== '$';
package/lib/actor/api.ts DELETED
@@ -1,57 +0,0 @@
1
- import { Err } from '@quenk/noni/lib/control/error';
2
-
3
- import { Address } from './address';
4
- import { Spawnable } from './template';
5
- import { Message } from '.';
6
- import { TypeCase } from '@quenk/noni/lib/control/match/case';
7
-
8
- /**
9
- * Parent is any object capable of spawning a child actor.
10
- */
11
- export interface Parent {
12
- /**
13
- * spawn an actor give its template.
14
- */
15
- spawn(t: Spawnable): Promise<Address>;
16
- }
17
-
18
- /**
19
- * Api is the interface provided by objects that can send/receive messages to
20
- * actors within the system.
21
- *
22
- * This interface is separate from the Actor interface because the system is
23
- * not directly concerned with their implementation. Instead, they exist to
24
- * provide a way for user land code to interact with other actors within the
25
- * system.
26
- */
27
- export interface Api extends Parent {
28
- /*
29
- * self is the address for the actor within the system
30
- */
31
- self: Address;
32
-
33
- /**
34
- * raise an error triggering the system's error handling machinery.
35
- */
36
- raise(e: Err): Promise<void>;
37
-
38
- /**
39
- * kill sends a stop signal to a child actor.
40
- *
41
- * An actor can only specify itself or a child as the target.
42
- */
43
- kill(target: Address): Promise<void>;
44
-
45
- /**
46
- * tell a message to an actor address.
47
- */
48
- tell(ref: string, msg: Message): Promise<void>;
49
-
50
- /**
51
- * receive a message from the actor's mailbox.
52
- *
53
- * If TypeCases are provided, the message will be matched against them
54
- * first and the result provided.
55
- */
56
- receive<T>(cases?: TypeCase<T>[]): Promise<T>;
57
- }
@@ -1 +0,0 @@
1
- export { TypeCase, Case, Default } from '@quenk/noni/lib/control/match/case';
@@ -1,87 +0,0 @@
1
- import { Type } from '@quenk/noni/lib/data/type';
2
- import { empty } from '@quenk/noni/lib/data/array';
3
- import {
4
- CaseFunction,
5
- Default,
6
- TypeCase
7
- } from '@quenk/noni/lib/control/match/case';
8
- import { identity } from '@quenk/noni/lib/data/function';
9
-
10
- import { Address, ADDRESS_DISCARD } from '../address';
11
- import { Message } from '../';
12
-
13
- const messages: Message[] = [];
14
-
15
- /**
16
- * init should be called as early as possible in the child process if using the
17
- * direct API (Process).
18
- *
19
- * It sets up a listener for incoming messages to the child_process that can
20
- * be read later via receive() or select().
21
- */
22
- export const init = () => {
23
- if (!process.send)
24
- throw new Error(
25
- 'process: direct API is meant to ' + 'be used in a child process!'
26
- );
27
-
28
- process.on('message', (m: Message) => {
29
- messages.unshift(m);
30
- drain();
31
- });
32
-
33
- process.on('uncaughtExceptionMonitor', err =>
34
- (<Function>process.send)(err)
35
- );
36
- };
37
-
38
- /**
39
- * self provides the address for this child actor.
40
- */
41
- export const self = process.env.POTOO_ACTOR_ADDRESS || ADDRESS_DISCARD;
42
-
43
- /**
44
- * tell sends a message to another actor in the system using the VM in the
45
- * parent process.
46
- */
47
- export const tell = <M>(to: Address, message: M) =>
48
- (<Function>process.send)({ from: self, to, message });
49
-
50
- type Handler = (value: Type) => Promise<void>;
51
-
52
- const receivers: Handler[] = [];
53
-
54
- const defaultCases = [new Default(identity)];
55
-
56
- /**
57
- * receive the next message in the message queue.
58
- *
59
- * TODO: drop messages that do not match any cases.
60
- */
61
- export const receive = async <T>(
62
- cases: TypeCase<T>[] = defaultCases
63
- ): Promise<T> =>
64
- new Promise(resolve => {
65
- let matcher = new CaseFunction(cases || defaultCases);
66
- let receiver = async (msg: Message) => {
67
- if (matcher.test(msg)) {
68
- resolve(await matcher.apply(msg));
69
- } else {
70
- receivers.push(receiver);
71
- }
72
- };
73
- receivers.push(receiver);
74
- drain();
75
- });
76
-
77
- const drain = () => {
78
- if (!empty(messages) && !empty(receivers))
79
- (<Handler>receivers.pop())(messages.shift());
80
- };
81
-
82
- /**
83
- * exit the actor, ending the process as a result.
84
- *
85
- * This is simply a wrapper around process.exit();
86
- */
87
- export const exit = () => process.exit();
@@ -1,90 +0,0 @@
1
- import { Err } from '@quenk/noni/lib/control/error';
2
-
3
- import { Runtime } from '../system/vm/runtime';
4
- import { Address } from '../address';
5
- import { Spawnable } from '../template';
6
- import { Api } from '../api';
7
- import { Message, Actor } from '../';
8
- import { TypeCase } from '.';
9
-
10
- /**
11
- * Resident is an actor that exists in the current runtime.
12
- */
13
- export interface Resident extends Api, Actor {}
14
-
15
- /**
16
- * AbstractResident is a base implementation of a Resident actor.
17
- */
18
- export abstract class AbstractResident implements Resident {
19
- constructor(public runtime: Runtime) {}
20
-
21
- self = this.runtime.self;
22
-
23
- async notify(msg: Message) {
24
- await this.runtime.notify(msg);
25
- }
26
-
27
- spawn(target: Spawnable) {
28
- return this.runtime.spawn(target);
29
- }
30
-
31
- async tell<M>(addr: Address, msg: M) {
32
- await this.runtime.tell(addr, msg);
33
- }
34
-
35
- async raise(err: Err) {
36
- await this.runtime.raise(err);
37
- }
38
-
39
- async kill(addr: Address) {
40
- await this.runtime.kill(addr);
41
- }
42
-
43
- async exit() {
44
- await this.runtime.kill(this.self);
45
- }
46
-
47
- async start() {
48
- return this.run();
49
- }
50
-
51
- async run() {}
52
-
53
- async stop() {}
54
-
55
- async receive<T>(cases: TypeCase<T>[]=[]) {
56
- return this.runtime.receive(cases);
57
- }
58
-
59
- watch<T>(task: () => Promise<T>) {
60
- return this.runtime.watch(task);
61
- }
62
- }
63
-
64
- /**
65
- * Mutable actors can change their behaviour after message processing.
66
- */
67
- export abstract class Mutable extends AbstractResident {}
68
-
69
- /**
70
- * Immutable is an actor whose behaviour does not change when a message is
71
- * received.
72
- *
73
- * For each message received, the same set of TypeCase classes are applied.
74
- * This class is useful for simple request/response style actors that do
75
- * not require much complicated logic.
76
- */
77
- export abstract class Immutable<T> extends AbstractResident {
78
- /**
79
- * selectors provides the list of TypeCase classes that will be applied to
80
- * all incoming messages.
81
- */
82
- selectors(): TypeCase<T>[] {
83
- return [];
84
- }
85
-
86
- async start() {
87
- await this.run();
88
- while (this.runtime.isValid()) await this.receive(this.selectors());
89
- }
90
- }
@@ -1,35 +0,0 @@
1
- import { Type } from '@quenk/noni/lib/data/type';
2
-
3
- /**
4
- * Message is any (ideally wire-safe) value that can be sent between actors.
5
- */
6
- export type Message = Type;
7
-
8
- /**
9
- * Actor is the main interface implemented by actors that are part of the system.
10
- */
11
- export interface Actor {
12
- /**
13
- * start the Actor.
14
- *
15
- * At this point resources have been allocated within the system for the
16
- * actor and it can begin sending messages.
17
- */
18
- start(): Promise<void>;
19
-
20
- /**
21
- * notify is called when a message is received from another actor.
22
- *
23
- * Some actors may process the message immediately, others may store it to
24
- * a mailbox for later.
25
- */
26
- notify(m: Message): Promise<void>;
27
-
28
- /**
29
- * stop the Actor.
30
- *
31
- * A this point resources for the actor have been removed from the system
32
- * and any additional clean up needed can be done.
33
- */
34
- stop(): Promise<void>;
35
- }
@@ -1,43 +0,0 @@
1
- import { Maybe } from '@quenk/noni/lib/data/maybe';
2
-
3
- import { Address } from '../../../address';
4
- import { Template } from '../../../template';
5
- import { Thread } from '../thread';
6
-
7
- /**
8
- * Allocator is the interface the VM delegates storage of actor threads and
9
- * associated information to.
10
- */
11
- export interface Allocator {
12
- /**
13
- * getThread provides a Thread given an Address.
14
- */
15
- getThread(target: Address): Maybe<Thread>;
16
-
17
- /**
18
- * getThreads provides a list of Threads given a list of Addresses.
19
- */
20
- getThreads(targets: Address[]): Thread[];
21
-
22
- /**
23
- * getTemplate provides a Template given an Address.
24
- */
25
- getTemplate(address: Address): Maybe<Template>;
26
-
27
- /**
28
- * allocate a new thread from a Template.
29
- */
30
- allocate(parent: Thread, tmpl: Template): Promise<Address>;
31
-
32
- /**
33
- * reallocate resources for a Thread.
34
- *
35
- * This essentially means the Thread has been restarted.
36
- */
37
- reallocate(target: Thread): Promise<void>;
38
-
39
- /**
40
- * deallocate resources for a Thread.
41
- */
42
- deallocate(target: Thread): Promise<void>;
43
- }