@ludeo/cloud-common 1.2.173 → 1.2.174-beta-yahil-2

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 (83) hide show
  1. package/dist/tsconfig.tsbuildinfo +1 -1
  2. package/dist/v4/contexts/index.d.ts +1 -0
  3. package/dist/v4/contexts/index.js +1 -0
  4. package/dist/v4/contexts/index.js.map +1 -1
  5. package/dist/v4/contexts/site-controller-context.d.ts +8 -0
  6. package/dist/v4/contexts/site-controller-context.js +47 -0
  7. package/dist/v4/contexts/site-controller-context.js.map +1 -0
  8. package/dist/v4/events/index.d.ts +1 -0
  9. package/dist/v4/events/index.js +2 -0
  10. package/dist/v4/events/index.js.map +1 -1
  11. package/dist/v4/events/site-controller/create-game-request.event.d.ts +16 -0
  12. package/dist/v4/events/site-controller/create-game-request.event.js +53 -0
  13. package/dist/v4/events/site-controller/create-game-request.event.js.map +1 -0
  14. package/dist/v4/events/site-controller/create-machine-request.event.d.ts +15 -0
  15. package/dist/v4/events/site-controller/create-machine-request.event.js +54 -0
  16. package/dist/v4/events/site-controller/create-machine-request.event.js.map +1 -0
  17. package/dist/v4/events/site-controller/create-snapshot-request.event.d.ts +14 -0
  18. package/dist/v4/events/site-controller/create-snapshot-request.event.js +53 -0
  19. package/dist/v4/events/site-controller/create-snapshot-request.event.js.map +1 -0
  20. package/dist/v4/events/site-controller/game-creation-ended.event.d.ts +14 -0
  21. package/dist/v4/events/site-controller/game-creation-ended.event.js +51 -0
  22. package/dist/v4/events/site-controller/game-creation-ended.event.js.map +1 -0
  23. package/dist/v4/events/site-controller/index.d.ts +11 -0
  24. package/dist/v4/events/site-controller/index.js +28 -0
  25. package/dist/v4/events/site-controller/index.js.map +1 -0
  26. package/dist/v4/events/site-controller/machine-creation-ended.event.d.ts +14 -0
  27. package/dist/v4/events/site-controller/machine-creation-ended.event.js +51 -0
  28. package/dist/v4/events/site-controller/machine-creation-ended.event.js.map +1 -0
  29. package/dist/v4/events/site-controller/resource-status-update.event.d.ts +15 -0
  30. package/dist/v4/events/site-controller/resource-status-update.event.js +55 -0
  31. package/dist/v4/events/site-controller/resource-status-update.event.js.map +1 -0
  32. package/dist/v4/events/site-controller/snapshot-creation-ended.event.d.ts +14 -0
  33. package/dist/v4/events/site-controller/snapshot-creation-ended.event.js +51 -0
  34. package/dist/v4/events/site-controller/snapshot-creation-ended.event.js.map +1 -0
  35. package/dist/v4/events/site-controller/snapshot-termination-ended.event.d.ts +14 -0
  36. package/dist/v4/events/site-controller/snapshot-termination-ended.event.js +51 -0
  37. package/dist/v4/events/site-controller/snapshot-termination-ended.event.js.map +1 -0
  38. package/dist/v4/events/site-controller/terminate-game-request.event.d.ts +14 -0
  39. package/dist/v4/events/site-controller/terminate-game-request.event.js +53 -0
  40. package/dist/v4/events/site-controller/terminate-game-request.event.js.map +1 -0
  41. package/dist/v4/events/site-controller/terminate-machine-request.event.d.ts +13 -0
  42. package/dist/v4/events/site-controller/terminate-machine-request.event.js +49 -0
  43. package/dist/v4/events/site-controller/terminate-machine-request.event.js.map +1 -0
  44. package/dist/v4/events/site-controller/terminate-snapshot-request.event.d.ts +13 -0
  45. package/dist/v4/events/site-controller/terminate-snapshot-request.event.js +49 -0
  46. package/dist/v4/events/site-controller/terminate-snapshot-request.event.js.map +1 -0
  47. package/dist/v4/types/index.d.ts +2 -0
  48. package/dist/v4/types/index.js +2 -0
  49. package/dist/v4/types/index.js.map +1 -1
  50. package/dist/v4/types/mqtt/index.d.ts +1 -0
  51. package/dist/v4/types/mqtt/index.js +18 -0
  52. package/dist/v4/types/mqtt/index.js.map +1 -0
  53. package/dist/v4/types/mqtt/types.d.ts +69 -0
  54. package/dist/v4/types/mqtt/types.js +184 -0
  55. package/dist/v4/types/mqtt/types.js.map +1 -0
  56. package/dist/v4/types/site-controller/index.d.ts +1 -0
  57. package/dist/v4/types/site-controller/index.js +18 -0
  58. package/dist/v4/types/site-controller/index.js.map +1 -0
  59. package/dist/v4/types/site-controller/types.d.ts +16 -0
  60. package/dist/v4/types/site-controller/types.js +14 -0
  61. package/dist/v4/types/site-controller/types.js.map +1 -0
  62. package/package.json +1 -1
  63. package/src/v4/contexts/index.ts +1 -0
  64. package/src/v4/contexts/site-controller-context.ts +32 -0
  65. package/src/v4/events/index.ts +3 -0
  66. package/src/v4/events/site-controller/create-game-request.event.ts +39 -0
  67. package/src/v4/events/site-controller/create-machine-request.event.ts +36 -0
  68. package/src/v4/events/site-controller/create-snapshot-request.event.ts +35 -0
  69. package/src/v4/events/site-controller/game-creation-ended.event.ts +34 -0
  70. package/src/v4/events/site-controller/index.ts +26 -0
  71. package/src/v4/events/site-controller/machine-creation-ended.event.ts +34 -0
  72. package/src/v4/events/site-controller/resource-status-update.event.ts +38 -0
  73. package/src/v4/events/site-controller/snapshot-creation-ended.event.ts +34 -0
  74. package/src/v4/events/site-controller/snapshot-termination-ended.event.ts +34 -0
  75. package/src/v4/events/site-controller/terminate-game-request.event.ts +35 -0
  76. package/src/v4/events/site-controller/terminate-machine-request.event.ts +32 -0
  77. package/src/v4/events/site-controller/terminate-snapshot-request.event.ts +32 -0
  78. package/src/v4/types/build.ts +1 -1
  79. package/src/v4/types/index.ts +2 -0
  80. package/src/v4/types/mqtt/index.ts +6 -0
  81. package/src/v4/types/mqtt/types.ts +237 -0
  82. package/src/v4/types/site-controller/index.ts +2 -0
  83. package/src/v4/types/site-controller/types.ts +32 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/v4/types/mqtt/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./types";
@@ -0,0 +1,18 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v4/types/site-controller/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB"}
@@ -0,0 +1,16 @@
1
+ export declare enum MachineMode {
2
+ Proton = "proton",
3
+ Android = "android"
4
+ }
5
+ export interface ProtonGameCreationPayload {
6
+ exeRelativePath: string;
7
+ additionalEnvironmentVariables?: Record<string, string>;
8
+ }
9
+ export interface AndroidGameCreationPayload {
10
+ packageId: string;
11
+ }
12
+ export type GameCreationPayload = ProtonGameCreationPayload | AndroidGameCreationPayload;
13
+ export declare enum OperationStatus {
14
+ Success = "success",
15
+ Error = "error"
16
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperationStatus = exports.MachineMode = void 0;
4
+ var MachineMode;
5
+ (function (MachineMode) {
6
+ MachineMode["Proton"] = "proton";
7
+ MachineMode["Android"] = "android";
8
+ })(MachineMode || (exports.MachineMode = MachineMode = {}));
9
+ var OperationStatus;
10
+ (function (OperationStatus) {
11
+ OperationStatus["Success"] = "success";
12
+ OperationStatus["Error"] = "error";
13
+ })(OperationStatus || (exports.OperationStatus = OperationStatus = {}));
14
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/v4/types/site-controller/types.ts"],"names":[],"mappings":";;;AAOA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,kCAAmB,CAAA;AACrB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAiBD,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,kCAAe,CAAA;AACjB,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ludeo/cloud-common",
3
- "version": "1.2.173",
3
+ "version": "1.2.174-beta-yahil-2",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "author": "Yahil Didi",
@@ -3,3 +3,4 @@ export * from "./cloud-resource-context";
3
3
  export * from "./cloud-session-context";
4
4
  export * from "./getCloudContextType";
5
5
  export * from "./build-context";
6
+ export * from "./site-controller-context";
@@ -0,0 +1,32 @@
1
+ import { IsOptional, IsString, IsUUID } from 'class-validator';
2
+
3
+ /**
4
+ * Context for site-controller events
5
+ * Contains information about the resources involved in the operation
6
+ */
7
+ export class SiteControllerContext {
8
+ @IsOptional()
9
+ @IsString()
10
+ site?: string;
11
+
12
+ @IsOptional()
13
+ @IsString()
14
+ region?: string;
15
+
16
+ @IsOptional()
17
+ @IsUUID()
18
+ machineResourceId?: string;
19
+
20
+ @IsOptional()
21
+ @IsUUID()
22
+ gameResourceId?: string;
23
+
24
+ @IsOptional()
25
+ @IsString()
26
+ buildId?: string;
27
+
28
+ @IsOptional()
29
+ @IsString()
30
+ snapshotId?: string;
31
+ }
32
+
@@ -171,3 +171,6 @@ export * from "./pools-deleted-for-build";
171
171
  export * from "./pools-deletion-for-build-failed";
172
172
  export * from "./monitor-ludeocast-transfer-status-task";
173
173
  export * from "./ludeocast-machine-resource-error-timeout-task";
174
+
175
+ // Site Controller Events
176
+ export * as SiteController from "./site-controller";
@@ -0,0 +1,39 @@
1
+ import { LudeoEvent } from '../../../infra';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { IsString, IsUUID } from 'class-validator';
4
+ import { GameCreationPayload } from '../../types/site-controller';
5
+ import { SiteControllerContext } from '../../contexts';
6
+
7
+ export class CreateGameRequestPayload {
8
+ @IsUUID()
9
+ machineResourceId: string;
10
+
11
+ @IsUUID()
12
+ gameResourceId: string;
13
+
14
+ // Note: Using any here since it's a union type - validation happens at runtime
15
+ gameCreationPayload: GameCreationPayload;
16
+
17
+ @IsString()
18
+ site: string;
19
+
20
+ @IsString()
21
+ region: string;
22
+ }
23
+
24
+ export class CreateGameRequestEvent extends LudeoEvent {
25
+ static readonly EVENT_NAME = 'site-controller.create-game-request';
26
+
27
+ constructor(payload: CreateGameRequestPayload, context: SiteControllerContext) {
28
+ super(CreateGameRequestEvent.EVENT_NAME);
29
+ this.payload = payload;
30
+ this.context = context;
31
+ }
32
+
33
+ @ValidateNestedType(() => CreateGameRequestPayload)
34
+ payload: CreateGameRequestPayload;
35
+
36
+ @ValidateNestedType(() => SiteControllerContext)
37
+ context: SiteControllerContext;
38
+ }
39
+
@@ -0,0 +1,36 @@
1
+ import { LudeoEvent } from '../../../infra';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { IsEnum, IsString, IsUUID } from 'class-validator';
4
+ import { MachineMode } from '../../types/site-controller';
5
+ import { SiteControllerContext } from '../../contexts';
6
+
7
+ export class CreateMachineRequestPayload {
8
+ @IsUUID()
9
+ machineResourceId: string;
10
+
11
+ @IsEnum(MachineMode)
12
+ mode: MachineMode;
13
+
14
+ @IsString()
15
+ site: string;
16
+
17
+ @IsString()
18
+ region: string;
19
+ }
20
+
21
+ export class CreateMachineRequestEvent extends LudeoEvent {
22
+ static readonly EVENT_NAME = 'site-controller.create-machine-request';
23
+
24
+ constructor(payload: CreateMachineRequestPayload, context: SiteControllerContext) {
25
+ super(CreateMachineRequestEvent.EVENT_NAME);
26
+ this.payload = payload;
27
+ this.context = context;
28
+ }
29
+
30
+ @ValidateNestedType(() => CreateMachineRequestPayload)
31
+ payload: CreateMachineRequestPayload;
32
+
33
+ @ValidateNestedType(() => SiteControllerContext)
34
+ context: SiteControllerContext;
35
+ }
36
+
@@ -0,0 +1,35 @@
1
+ import { LudeoEvent } from '../../../infra';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { IsString } from 'class-validator';
4
+ import { SiteControllerContext } from '../../contexts';
5
+
6
+ export class CreateSnapshotRequestPayload {
7
+ @IsString()
8
+ buildId: string;
9
+
10
+ @IsString()
11
+ downloadURL: string;
12
+
13
+ @IsString()
14
+ site: string;
15
+
16
+ @IsString()
17
+ region: string;
18
+ }
19
+
20
+ export class CreateSnapshotRequestEvent extends LudeoEvent {
21
+ static readonly EVENT_NAME = 'cloud-builds.create-snapshot-request';
22
+
23
+ constructor(payload: CreateSnapshotRequestPayload, context: SiteControllerContext) {
24
+ super(CreateSnapshotRequestEvent.EVENT_NAME);
25
+ this.payload = payload;
26
+ this.context = context;
27
+ }
28
+
29
+ @ValidateNestedType(() => CreateSnapshotRequestPayload)
30
+ payload: CreateSnapshotRequestPayload;
31
+
32
+ @ValidateNestedType(() => SiteControllerContext)
33
+ context: SiteControllerContext;
34
+ }
35
+
@@ -0,0 +1,34 @@
1
+ import { LudeoEvent } from '../../../infra';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { IsEnum, IsOptional, IsString, IsUUID } from 'class-validator';
4
+ import { SiteControllerContext } from '../../contexts';
5
+ import { OperationStatus } from '../../types/site-controller';
6
+
7
+ export class GameCreationEndedPayload {
8
+ @IsUUID()
9
+ gameResourceId: string;
10
+
11
+ @IsEnum(OperationStatus)
12
+ status: OperationStatus;
13
+
14
+ @IsOptional()
15
+ @IsString()
16
+ reason?: string;
17
+ }
18
+
19
+ export class GameCreationEndedEvent extends LudeoEvent {
20
+ static readonly EVENT_NAME = 'site-controller.game-creation-ended';
21
+
22
+ constructor(payload: GameCreationEndedPayload, context: SiteControllerContext) {
23
+ super(GameCreationEndedEvent.EVENT_NAME);
24
+ this.payload = payload;
25
+ this.context = context;
26
+ }
27
+
28
+ @ValidateNestedType(() => GameCreationEndedPayload)
29
+ payload: GameCreationEndedPayload;
30
+
31
+ @ValidateNestedType(() => SiteControllerContext)
32
+ context: SiteControllerContext;
33
+ }
34
+
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Site Controller Events
3
+ * Events for site-controller service communication with other cloud platform services
4
+ */
5
+
6
+ // Consumed Events - Resources
7
+ export * from './create-machine-request.event';
8
+ export * from './terminate-machine-request.event';
9
+ export * from './create-game-request.event';
10
+ export * from './terminate-game-request.event';
11
+
12
+ // Consumed Events - Builds
13
+ export * from './create-snapshot-request.event';
14
+ export * from './terminate-snapshot-request.event';
15
+
16
+ // Produced Events - Resources
17
+ export * from './machine-creation-ended.event';
18
+ export * from './game-creation-ended.event';
19
+
20
+ // Produced Events - Builds
21
+ export * from './snapshot-creation-ended.event';
22
+ export * from './snapshot-termination-ended.event';
23
+
24
+ // Produced Events - Resource Monitor
25
+ export * from './resource-status-update.event';
26
+
@@ -0,0 +1,34 @@
1
+ import { LudeoEvent } from '../../../infra';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { IsEnum, IsOptional, IsString, IsUUID } from 'class-validator';
4
+ import { SiteControllerContext } from '../../contexts';
5
+ import { OperationStatus } from '../../types/site-controller';
6
+
7
+ export class MachineCreationEndedPayload {
8
+ @IsUUID()
9
+ machineResourceId: string;
10
+
11
+ @IsEnum(OperationStatus)
12
+ status: OperationStatus;
13
+
14
+ @IsOptional()
15
+ @IsString()
16
+ reason?: string;
17
+ }
18
+
19
+ export class MachineCreationEndedEvent extends LudeoEvent {
20
+ static readonly EVENT_NAME = 'site-controller.machine-creation-ended';
21
+
22
+ constructor(payload: MachineCreationEndedPayload, context: SiteControllerContext) {
23
+ super(MachineCreationEndedEvent.EVENT_NAME);
24
+ this.payload = payload;
25
+ this.context = context;
26
+ }
27
+
28
+ @ValidateNestedType(() => MachineCreationEndedPayload)
29
+ payload: MachineCreationEndedPayload;
30
+
31
+ @ValidateNestedType(() => SiteControllerContext)
32
+ context: SiteControllerContext;
33
+ }
34
+
@@ -0,0 +1,38 @@
1
+ import { LudeoEvent } from '../../../infra';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { IsEnum, IsOptional, IsString, IsUUID } from 'class-validator';
4
+ import { SiteControllerContext } from '../../contexts';
5
+ import { CloudResourceStatus, CloudPoolType } from '../../types';
6
+
7
+ export class ResourceStatusUpdatePayload {
8
+ @IsUUID()
9
+ resourceId: string;
10
+
11
+ @IsEnum(CloudPoolType)
12
+ resourceType: CloudPoolType;
13
+
14
+ @IsEnum(CloudResourceStatus)
15
+ resourceStatus: CloudResourceStatus;
16
+
17
+ @IsOptional()
18
+ @IsString()
19
+ statusReason?: string;
20
+ }
21
+
22
+
23
+ export class ResourceStatusUpdateEvent extends LudeoEvent {
24
+ static readonly EVENT_NAME = 'site-controller.resource-status-update';
25
+
26
+ constructor(payload: ResourceStatusUpdatePayload, context: SiteControllerContext) {
27
+ super(ResourceStatusUpdateEvent.EVENT_NAME);
28
+ this.payload = payload;
29
+ this.context = context;
30
+ }
31
+
32
+ @ValidateNestedType(() => ResourceStatusUpdatePayload)
33
+ payload: ResourceStatusUpdatePayload;
34
+
35
+ @ValidateNestedType(() => SiteControllerContext)
36
+ context: SiteControllerContext;
37
+ }
38
+
@@ -0,0 +1,34 @@
1
+ import { LudeoEvent } from '../../../infra';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { IsEnum, IsOptional, IsString } from 'class-validator';
4
+ import { SiteControllerContext } from '../../contexts';
5
+ import { OperationStatus } from '../../types/site-controller';
6
+
7
+ export class SnapshotCreationEndedPayload {
8
+ @IsString()
9
+ buildId: string;
10
+
11
+ @IsEnum(OperationStatus)
12
+ status: OperationStatus;
13
+
14
+ @IsOptional()
15
+ @IsString()
16
+ reason?: string;
17
+ }
18
+
19
+ export class SnapshotCreationEndedEvent extends LudeoEvent {
20
+ static readonly EVENT_NAME = 'site-controller.snapshot-creation-ended';
21
+
22
+ constructor(payload: SnapshotCreationEndedPayload, context: SiteControllerContext) {
23
+ super(SnapshotCreationEndedEvent.EVENT_NAME);
24
+ this.payload = payload;
25
+ this.context = context;
26
+ }
27
+
28
+ @ValidateNestedType(() => SnapshotCreationEndedPayload)
29
+ payload: SnapshotCreationEndedPayload;
30
+
31
+ @ValidateNestedType(() => SiteControllerContext)
32
+ context: SiteControllerContext;
33
+ }
34
+
@@ -0,0 +1,34 @@
1
+ import { LudeoEvent } from '../../../infra';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { IsEnum, IsOptional, IsString } from 'class-validator';
4
+ import { SiteControllerContext } from '../../contexts';
5
+ import { OperationStatus } from '../../types/site-controller';
6
+
7
+ export class SnapshotTerminationEndedPayload {
8
+ @IsString()
9
+ buildId: string;
10
+
11
+ @IsEnum(OperationStatus)
12
+ status: OperationStatus;
13
+
14
+ @IsOptional()
15
+ @IsString()
16
+ reason?: string;
17
+ }
18
+
19
+ export class SnapshotTerminationEndedEvent extends LudeoEvent {
20
+ static readonly EVENT_NAME = 'site-controller.snapshot-termination-ended';
21
+
22
+ constructor(payload: SnapshotTerminationEndedPayload, context: SiteControllerContext) {
23
+ super(SnapshotTerminationEndedEvent.EVENT_NAME);
24
+ this.payload = payload;
25
+ this.context = context;
26
+ }
27
+
28
+ @ValidateNestedType(() => SnapshotTerminationEndedPayload)
29
+ payload: SnapshotTerminationEndedPayload;
30
+
31
+ @ValidateNestedType(() => SiteControllerContext)
32
+ context: SiteControllerContext;
33
+ }
34
+
@@ -0,0 +1,35 @@
1
+ import { LudeoEvent } from '../../../infra';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { IsString, IsUUID } from 'class-validator';
4
+ import { SiteControllerContext } from '../../contexts';
5
+
6
+ export class TerminateGameRequestPayload {
7
+ @IsUUID()
8
+ machineResourceId: string;
9
+
10
+ @IsUUID()
11
+ gameResourceId: string;
12
+
13
+ @IsString()
14
+ site: string;
15
+
16
+ @IsString()
17
+ region: string;
18
+ }
19
+
20
+ export class TerminateGameRequestEvent extends LudeoEvent {
21
+ static readonly EVENT_NAME = 'site-controller.terminate-game-request';
22
+
23
+ constructor(payload: TerminateGameRequestPayload, context: SiteControllerContext) {
24
+ super(TerminateGameRequestEvent.EVENT_NAME);
25
+ this.payload = payload;
26
+ this.context = context;
27
+ }
28
+
29
+ @ValidateNestedType(() => TerminateGameRequestPayload)
30
+ payload: TerminateGameRequestPayload;
31
+
32
+ @ValidateNestedType(() => SiteControllerContext)
33
+ context: SiteControllerContext;
34
+ }
35
+
@@ -0,0 +1,32 @@
1
+ import { LudeoEvent } from '../../../infra';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { IsString, IsUUID } from 'class-validator';
4
+ import { SiteControllerContext } from '../../contexts';
5
+
6
+ export class TerminateMachineRequestPayload {
7
+ @IsUUID()
8
+ machineResourceId: string;
9
+
10
+ @IsString()
11
+ site: string;
12
+
13
+ @IsString()
14
+ region: string;
15
+ }
16
+
17
+ export class TerminateMachineRequestEvent extends LudeoEvent {
18
+ static readonly EVENT_NAME = 'site-controller.terminate-machine-request';
19
+
20
+ constructor(payload: TerminateMachineRequestPayload, context: SiteControllerContext) {
21
+ super(TerminateMachineRequestEvent.EVENT_NAME);
22
+ this.payload = payload;
23
+ this.context = context;
24
+ }
25
+
26
+ @ValidateNestedType(() => TerminateMachineRequestPayload)
27
+ payload: TerminateMachineRequestPayload;
28
+
29
+ @ValidateNestedType(() => SiteControllerContext)
30
+ context: SiteControllerContext;
31
+ }
32
+
@@ -0,0 +1,32 @@
1
+ import { LudeoEvent } from '../../../infra';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { IsString } from 'class-validator';
4
+ import { SiteControllerContext } from '../../contexts';
5
+
6
+ export class TerminateSnapshotRequestPayload {
7
+ @IsString()
8
+ buildId: string;
9
+
10
+ @IsString()
11
+ site: string;
12
+
13
+ @IsString()
14
+ region: string;
15
+ }
16
+
17
+ export class TerminateSnapshotRequestEvent extends LudeoEvent {
18
+ static readonly EVENT_NAME = 'cloud-builds.terminate-snapshot-request';
19
+
20
+ constructor(payload: TerminateSnapshotRequestPayload, context: SiteControllerContext) {
21
+ super(TerminateSnapshotRequestEvent.EVENT_NAME);
22
+ this.payload = payload;
23
+ this.context = context;
24
+ }
25
+
26
+ @ValidateNestedType(() => TerminateSnapshotRequestPayload)
27
+ payload: TerminateSnapshotRequestPayload;
28
+
29
+ @ValidateNestedType(() => SiteControllerContext)
30
+ context: SiteControllerContext;
31
+ }
32
+
@@ -7,7 +7,7 @@ import {
7
7
  import * as GameLift from "@aws-sdk/client-gameliftstreams";
8
8
 
9
9
  export enum BuildStatus {
10
- DRAFT = "draft",
10
+ DRAFT = "draft",
11
11
  UPLOADED = "uploaded",
12
12
  UPLOAD_FAILED = "upload-failed",
13
13
  VERIFYING_FILES = "verifying-files",
@@ -1,3 +1,5 @@
1
1
  export * from "./cloud";
2
2
  export * from "./pools";
3
3
  export * from "./build";
4
+ export * from "./mqtt";
5
+ export * from "./site-controller";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * MQTT types for site-controller <-> ludeocast-agent communication
3
+ */
4
+
5
+ export * from './types';
6
+