From 2bcced5a56d082931607eb68bf278c0e3615cc92 Mon Sep 17 00:00:00 2001 From: Danya H Date: Sun, 27 Oct 2024 15:39:13 +0000 Subject: [PATCH] upd rpc - added more comments --- rpc/package.json | 2 +- rpc/src/browser.ts | 10 ++++++++++ rpc/src/client.ts | 14 ++++++++++++++ rpc/src/server.ts | 11 +++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/rpc/package.json b/rpc/package.json index 6bdd077..470b958 100644 --- a/rpc/package.json +++ b/rpc/package.json @@ -1,7 +1,7 @@ { "name": "ragefw-rpc", "description": "RageFW RPC", - "version": "0.2.0", + "version": "0.2.1", "scripts": { "build": "tsup", "start": "npx ./dist create" diff --git a/rpc/src/browser.ts b/rpc/src/browser.ts index 4c19e51..e6ea52a 100644 --- a/rpc/src/browser.ts +++ b/rpc/src/browser.ts @@ -8,6 +8,9 @@ import { Utils, } from './utils' +/** + * NOT INTENDED FOR OUT-OF-CONTEXT USE + */ export class Browser extends Wrapper { constructor( options: RpcWrapperConfig = { @@ -17,6 +20,9 @@ export class Browser extends Wrapper { super(options) } + /** + * NOT INTENDED FOR OUT-OF-CONTEXT USE + */ public _resolveEmitDestination(dataRaw: string) { let state = Utils.prepareExecution(dataRaw) @@ -35,15 +41,18 @@ export class Browser extends Wrapper { mp.trigger(Events.LOCAL_EVENT_LISTENER, dataRaw) } + // called to browser private async emit(dataRaw: string) { let state = Utils.prepareExecution(dataRaw) const responseEventName = Utils.generateResponseEventName(state.uuid) + // check availability state = this.verifyEvent_(state) if (state.knownError) { this.triggerError_(state, state.knownError) } + // execute + generate response const response = await this.state_[state.eventName]( ...(Array.isArray(state.data) ? state.data : []), ) @@ -58,6 +67,7 @@ export class Browser extends Wrapper { } const responseDataRaw = Utils.prepareTransfer(responseState) + // send response switch (state.calledFrom) { case Environment.BROWSER: try { diff --git a/rpc/src/client.ts b/rpc/src/client.ts index 8776809..e28e1cb 100644 --- a/rpc/src/client.ts +++ b/rpc/src/client.ts @@ -9,6 +9,9 @@ import { Utils, } from './utils' +/** + * NOT INTENDED FOR OUT-OF-CONTEXT USE + */ export class Client extends Wrapper { private _browser: any = null @@ -24,6 +27,9 @@ export class Client extends Wrapper { this._browser = browser } + /** + * NOT INTENDED FOR OUT-OF-CONTEXT USE + */ public _resolveEmitDestination(dataRaw: string) { const state = Utils.prepareExecution(dataRaw) @@ -46,14 +52,17 @@ export class Client extends Wrapper { } } + // called to client private async emit(state: RPCState) { this.errorNoBrowser() + // check availability state = this.verifyEvent_(state) if (state.knownError) { this.triggerError_(state, state.knownError) } + // execute + generate response const responseEventName = Utils.generateResponseEventName(state.uuid) const response = await this.state_[state.eventName]( ...(Array.isArray(state.data) ? state.data : []), @@ -68,6 +77,7 @@ export class Client extends Wrapper { type: RPCEventType.RESPONSE, } + // send response switch (state.calledFrom) { case Environment.CLIENT: try { @@ -103,11 +113,13 @@ export class Client extends Wrapper { } } + // called to server private emitServer(dataRaw: string) { this.errorNoBrowser() const state = Utils.prepareExecution(dataRaw) + // if event is called from browser we will forward response through client via this if (state.calledFrom === Environment.BROWSER) { const responseEventName = Utils.generateResponseEventName( state.uuid, @@ -129,11 +141,13 @@ export class Client extends Wrapper { mp.events.callRemote(Events.SERVER_EVENT_LISTENER, dataRaw) } + // called to browser private emitBrowser(dataRaw: string) { this.errorNoBrowser() const state = Utils.prepareExecution(dataRaw) + // if event is called from server we will forward response through client via this if (state.calledFrom === Environment.SERVER) { const responseEventName = Utils.generateResponseEventName( state.uuid, diff --git a/rpc/src/server.ts b/rpc/src/server.ts index 18bf2b1..a255123 100644 --- a/rpc/src/server.ts +++ b/rpc/src/server.ts @@ -9,6 +9,9 @@ import { Utils, } from './utils' +/** + * NOT INTENDED FOR OUT-OF-CONTEXT USE + */ export class Server extends Wrapper { constructor( options: RpcWrapperConfig = { @@ -19,6 +22,7 @@ export class Server extends Wrapper { if (!!options.forceBrowserDevMode) return + // specific event to save player in context as it is not available on server -> server calls mp.events.add( Events.SERVER_EVENT_LISTENER, async (player: PlayerMp, dataRaw: string) => { @@ -27,6 +31,9 @@ export class Server extends Wrapper { ) } + /** + * NOT INTENDED FOR OUT-OF-CONTEXT USE + */ public _resolveEmitDestination(player: PlayerMp, dataRaw: string) { let state = Utils.prepareExecution(dataRaw) @@ -45,15 +52,18 @@ export class Server extends Wrapper { player.call(Events.LOCAL_EVENT_LISTENER, [dataRaw]) } + // called to server private async emit(player: PlayerMp, dataRaw: string) { let state = Utils.prepareExecution(dataRaw) const responseEventName = Utils.generateResponseEventName(state.uuid) + // check availability state = this.verifyEvent_(state) if (state.knownError) { this.triggerError_(state, state.knownError) } + // execute + generate response const response = await this.state_[state.eventName]( player, ...(Array.isArray(state.data) ? state.data : []), @@ -68,6 +78,7 @@ export class Server extends Wrapper { type: RPCEventType.RESPONSE, } + // send response switch (state.calledFrom) { case Environment.SERVER: try {