class_name Message

enum Channels { CONNECTION, MATCHMAKING }


func get_message_id() -> String:
	push_error("Not Implemented")
	return ""


static func serialize(message: Message) -> String:
	var msg: Dictionary = JsonClassConverter.class_to_json(message)
	msg["$id"] = message.get_message_id()
	return JSON.stringify(msg)


static func deserialize(payload: String, messages: Array[GDScript]) -> Message:
	var json := JSON.new()
	var err = json.parse(payload)
	if err != OK:
		return null
	var data: Variant = json.data
	if data == null:
		return null
	var msg_id: String = data.get("$id")
	for msg in messages:
		if msg_id != msg.new().get_message_id():
			continue
		return JsonClassConverter.json_to_class(msg, data)
	return null