mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 19:13:30 +01:00
Migrates SSinstancing to Redis from world.Export() (#17679)
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* # Server Command
|
||||
*
|
||||
* Datum to handle both sending and receiving of server commands
|
||||
*
|
||||
* This datum is an extension of the redis callback and is designed for tighter integration with the BYOND servers.
|
||||
* This list is registered and managed by SSintancing, not SSredis.
|
||||
* NOTE: These commands are "fire and forget". If you need specific data from each server, use world/Topic still
|
||||
*/
|
||||
/datum/server_command
|
||||
/// Does the sending server want to ignore this command? This is almost always yes unless you are doing testing stuff
|
||||
var/ignoreself = TRUE
|
||||
/// The source BYOND server for this message
|
||||
var/source = null
|
||||
/// The command name (must be unique)
|
||||
var/command_name = null
|
||||
/// Associative list of command args
|
||||
var/list/command_args = list()
|
||||
|
||||
/datum/server_command/proc/execute(source, command_args)
|
||||
CRASH("execute(source, command_args) not overriden for [type]!")
|
||||
|
||||
/datum/server_command/proc/dispatch(command_args)
|
||||
SHOULD_NOT_OVERRIDE(TRUE) // No messing with
|
||||
|
||||
// Aight get serializing
|
||||
var/list/serializeable_data = list()
|
||||
serializeable_data["src"] = GLOB.configuration.system.instance_id
|
||||
serializeable_data["cmd"] = command_name
|
||||
serializeable_data["args"] = command_args
|
||||
|
||||
var/payload = json_encode(serializeable_data)
|
||||
|
||||
SSredis.publish(SERVER_MESSAGES_REDIS_CHANNEL, payload)
|
||||
|
||||
// Override this if you want a cleaner method for putting together dispatch args
|
||||
/datum/server_command/proc/custom_dispatch()
|
||||
CRASH("custom_dispatch() not overriden for [type]!")
|
||||
Reference in New Issue
Block a user