66 lines
		
	
	
		
			No EOL
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			No EOL
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
---@class PluginCommand
 | 
						|
---@field Command Command
 | 
						|
---@field ServerUniqueIdentifier string
 | 
						|
---@field Parameter table
 | 
						|
PluginCommand = {}
 | 
						|
PluginCommand.__index = PluginCommand
 | 
						|
 | 
						|
---@param command Command?
 | 
						|
---@param serverUniqueIdentifier string
 | 
						|
---@param parameter table?
 | 
						|
---@return PluginCommand
 | 
						|
function PluginCommand.new(command, serverUniqueIdentifier, parameter)
 | 
						|
  local self = setmetatable({}, PluginCommand)
 | 
						|
  self.Command = command or Command.Pong
 | 
						|
 | 
						|
  -- Logger:Debug("[New PluginCommand]", serverUniqueIdentifier, parameter)
 | 
						|
  if type(serverUniqueIdentifier) == "string" then
 | 
						|
    self.ServerUniqueIdentifier = serverUniqueIdentifier
 | 
						|
    self.Parameter = json.decode(json.encode(parameter))
 | 
						|
  else
 | 
						|
    self.Parameter = json.decode(json.encode(serverUniqueIdentifier))
 | 
						|
  end
 | 
						|
  return self
 | 
						|
end
 | 
						|
 | 
						|
--#region Methodes
 | 
						|
---@param pluginCommand PluginCommand
 | 
						|
---@return string
 | 
						|
function PluginCommand.Serialize(pluginCommand)
 | 
						|
  return json.encode({
 | 
						|
    pluginCommand.Command,
 | 
						|
    pluginCommand.ServerUniqueIdentifier,
 | 
						|
    pluginCommand.Parameter
 | 
						|
  })
 | 
						|
end
 | 
						|
 | 
						|
---@param obj table
 | 
						|
function PluginCommand.Deserialize(obj)
 | 
						|
  -- Logger:Debug("[PluginCommand] Deserialize", obj)
 | 
						|
  if type(obj) == "string" then 
 | 
						|
    obj = json.decode(obj)
 | 
						|
  end
 | 
						|
  -- Logger:Debug("[PluginCommand] Deserialize Encode", json.encode(obj))
 | 
						|
  
 | 
						|
  return PluginCommand.new(obj.Command, obj.ServerUniqueIdentifier, obj.Parameter or nil)
 | 
						|
end
 | 
						|
--#endregion
 | 
						|
 | 
						|
-- TryGetPayload NEEDED ???
 | 
						|
-- C#
 | 
						|
-- public bool TryGetPayload<T>(out T payload)
 | 
						|
-- {
 | 
						|
--     try
 | 
						|
--     {
 | 
						|
--         payload = this.Parameter.ToObject<T>();
 | 
						|
 | 
						|
--         return true;
 | 
						|
--     }
 | 
						|
--     catch
 | 
						|
--     {
 | 
						|
--         // do nothing
 | 
						|
--     }
 | 
						|
 | 
						|
--     payload = default;
 | 
						|
--     return false;
 | 
						|
-- } |