b
This commit is contained in:
@@ -16,6 +16,7 @@ import {
|
||||
import { SocketTarget } from "./targets/targetbase.ts";
|
||||
import type Profile from "../../profiles/profile.ts";
|
||||
import { detailedLog } from "../../../main.ts";
|
||||
import { PlayerSocketSubscriptionTarget } from "./targets/SubscribeToPlayers.ts";
|
||||
|
||||
const logmessages = true;
|
||||
|
||||
@@ -39,7 +40,7 @@ export class SignalRSocketHandler {
|
||||
|
||||
player.setSocketHandler(this);
|
||||
|
||||
//this.#Targets.set('SubscribeToPlayers', new PlayerSocketSubscriptionTarget(this));
|
||||
this.#Targets.set('SubscribeToPlayers', new PlayerSocketSubscriptionTarget(this));
|
||||
|
||||
for (const target of this.#Targets.values()) target.onInit();
|
||||
|
||||
@@ -55,7 +56,9 @@ export class SignalRSocketHandler {
|
||||
if (!targetExec) return { type: TargetResultType.NotATarget } as TargetResultNotATarget;
|
||||
else {
|
||||
try {
|
||||
return { type: TargetResultType.Success, data: await targetExec.exec(args) } as TargetResultSuccess<T>;
|
||||
const parsed = targetExec.zod.safeParse(args);
|
||||
if (parsed.success) return { type: TargetResultType.Success, data: await targetExec.exec(args) } as TargetResultSuccess<T>;
|
||||
else return { type: TargetResultType.Failure, err: "Argument parse failure" } as TargetResultFailure;
|
||||
} catch (err) {
|
||||
this.#log.w(`Target '${target}' function error: ${err}`);
|
||||
if (err instanceof Error) return { type: TargetResultType.Failure, err: err } as TargetResultFailure;
|
||||
|
||||
18
src/server/socket/signalr/targets/SubscribeToPlayers.ts
Normal file
18
src/server/socket/signalr/targets/SubscribeToPlayers.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import z from "zod";
|
||||
import { SocketTarget } from "./targetbase.ts";
|
||||
|
||||
export class PlayerSocketSubscriptionTarget extends SocketTarget {
|
||||
|
||||
#ids: number[] = [];
|
||||
|
||||
override zod = z.tuple([]).rest(z.number());
|
||||
|
||||
override exec(...ids: number[]) {
|
||||
this.#ids = ids;
|
||||
}
|
||||
|
||||
getIds() {
|
||||
return this.#ids;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,26 +1,12 @@
|
||||
/* Galvanic Corrosion - Rec Room custom server for communities.
|
||||
<https://gitea.proxnet.dev/zombieb/galvanic-corrosion>
|
||||
Copyright (C) 2025 @zombieb (Discord / proxnet Gitea)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published
|
||||
by the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||
|
||||
import z from "zod";
|
||||
import type { SignalRSocketHandler } from "../socket.ts";
|
||||
|
||||
export class SocketTarget {
|
||||
|
||||
socket: SignalRSocketHandler;
|
||||
|
||||
zod: z.ZodTuple = z.tuple([]);
|
||||
|
||||
constructor(socket: SignalRSocketHandler) {
|
||||
this.socket = socket;
|
||||
}
|
||||
@@ -33,8 +19,7 @@ export class SocketTarget {
|
||||
return;
|
||||
}
|
||||
|
||||
// deno-lint-ignore require-await
|
||||
async exec(_args: unknown) {
|
||||
exec(_args: unknown): Promise<unknown> | unknown {
|
||||
throw new Error("Execution for this target is not set.");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user