summaryrefslogtreecommitdiff
path: root/addons/gdUnit4/src/network/rpc
diff options
context:
space:
mode:
Diffstat (limited to 'addons/gdUnit4/src/network/rpc')
-rw-r--r--addons/gdUnit4/src/network/rpc/RPC.gd37
-rw-r--r--addons/gdUnit4/src/network/rpc/RPC.gd.uid1
-rw-r--r--addons/gdUnit4/src/network/rpc/RPCClientConnect.gd13
-rw-r--r--addons/gdUnit4/src/network/rpc/RPCClientConnect.gd.uid1
-rw-r--r--addons/gdUnit4/src/network/rpc/RPCClientDisconnect.gd13
-rw-r--r--addons/gdUnit4/src/network/rpc/RPCClientDisconnect.gd.uid1
-rw-r--r--addons/gdUnit4/src/network/rpc/RPCGdUnitEvent.gd14
-rw-r--r--addons/gdUnit4/src/network/rpc/RPCGdUnitEvent.gd.uid1
-rw-r--r--addons/gdUnit4/src/network/rpc/RPCMessage.gd18
-rw-r--r--addons/gdUnit4/src/network/rpc/RPCMessage.gd.uid1
10 files changed, 100 insertions, 0 deletions
diff --git a/addons/gdUnit4/src/network/rpc/RPC.gd b/addons/gdUnit4/src/network/rpc/RPC.gd
new file mode 100644
index 0000000..6569cb1
--- /dev/null
+++ b/addons/gdUnit4/src/network/rpc/RPC.gd
@@ -0,0 +1,37 @@
+class_name RPC
+extends RefCounted
+
+
+var _data: Dictionary = {}
+
+
+func _init(obj: Object = null) -> void:
+ if obj != null:
+ if obj.has_method("serialize"):
+ _data = obj.call("serialize")
+ else:
+ _data = inst_to_dict(obj)
+
+
+func get_data() -> Object:
+ return dict_to_inst(_data)
+
+
+func serialize() -> String:
+ return JSON.stringify(inst_to_dict(self))
+
+
+# using untyped version see comments below
+static func deserialize(json_value: String) -> Object:
+ var json := JSON.new()
+ var err := json.parse(json_value)
+ if err != OK:
+ push_error("Can't deserialize JSON, error at line %d:\n error: %s \n json: '%s'"
+ % [json.get_error_line(), json.get_error_message(), json_value])
+ return null
+ var result: Dictionary = json.get_data()
+ if not typeof(result) == TYPE_DICTIONARY:
+ push_error("Can't deserialize JSON. Expecting dictionary, error at line %d:\n error: %s \n json: '%s'"
+ % [result.error_line, result.error_string, json_value])
+ return null
+ return dict_to_inst(result)
diff --git a/addons/gdUnit4/src/network/rpc/RPC.gd.uid b/addons/gdUnit4/src/network/rpc/RPC.gd.uid
new file mode 100644
index 0000000..40c58dc
--- /dev/null
+++ b/addons/gdUnit4/src/network/rpc/RPC.gd.uid
@@ -0,0 +1 @@
+uid://na86vw3ufqjo
diff --git a/addons/gdUnit4/src/network/rpc/RPCClientConnect.gd b/addons/gdUnit4/src/network/rpc/RPCClientConnect.gd
new file mode 100644
index 0000000..6b494cf
--- /dev/null
+++ b/addons/gdUnit4/src/network/rpc/RPCClientConnect.gd
@@ -0,0 +1,13 @@
+class_name RPCClientConnect
+extends RPC
+
+var _client_id: int
+
+
+func with_id(id: int) -> RPCClientConnect:
+ _client_id = id
+ return self
+
+
+func client_id() -> int:
+ return _client_id
diff --git a/addons/gdUnit4/src/network/rpc/RPCClientConnect.gd.uid b/addons/gdUnit4/src/network/rpc/RPCClientConnect.gd.uid
new file mode 100644
index 0000000..016194f
--- /dev/null
+++ b/addons/gdUnit4/src/network/rpc/RPCClientConnect.gd.uid
@@ -0,0 +1 @@
+uid://e0qdfuxqc6y0
diff --git a/addons/gdUnit4/src/network/rpc/RPCClientDisconnect.gd b/addons/gdUnit4/src/network/rpc/RPCClientDisconnect.gd
new file mode 100644
index 0000000..7445b9d
--- /dev/null
+++ b/addons/gdUnit4/src/network/rpc/RPCClientDisconnect.gd
@@ -0,0 +1,13 @@
+class_name RPCClientDisconnect
+extends RPC
+
+var _client_id: int
+
+
+func with_id(id: int) -> RPCClientDisconnect:
+ _client_id = id
+ return self
+
+
+func client_id() -> int:
+ return _client_id
diff --git a/addons/gdUnit4/src/network/rpc/RPCClientDisconnect.gd.uid b/addons/gdUnit4/src/network/rpc/RPCClientDisconnect.gd.uid
new file mode 100644
index 0000000..3114387
--- /dev/null
+++ b/addons/gdUnit4/src/network/rpc/RPCClientDisconnect.gd.uid
@@ -0,0 +1 @@
+uid://brg4jjgbo7okh
diff --git a/addons/gdUnit4/src/network/rpc/RPCGdUnitEvent.gd b/addons/gdUnit4/src/network/rpc/RPCGdUnitEvent.gd
new file mode 100644
index 0000000..dbf55c6
--- /dev/null
+++ b/addons/gdUnit4/src/network/rpc/RPCGdUnitEvent.gd
@@ -0,0 +1,14 @@
+class_name RPCGdUnitEvent
+extends RPC
+
+
+static func of(p_event: GdUnitEvent) -> RPCGdUnitEvent:
+ return RPCGdUnitEvent.new(p_event)
+
+
+func event() -> GdUnitEvent:
+ return GdUnitEvent.new().deserialize(_data)
+
+
+func _to_string() -> String:
+ return "RPCGdUnitEvent: " + str(_data)
diff --git a/addons/gdUnit4/src/network/rpc/RPCGdUnitEvent.gd.uid b/addons/gdUnit4/src/network/rpc/RPCGdUnitEvent.gd.uid
new file mode 100644
index 0000000..2543b41
--- /dev/null
+++ b/addons/gdUnit4/src/network/rpc/RPCGdUnitEvent.gd.uid
@@ -0,0 +1 @@
+uid://co8lhd0kirsur
diff --git a/addons/gdUnit4/src/network/rpc/RPCMessage.gd b/addons/gdUnit4/src/network/rpc/RPCMessage.gd
new file mode 100644
index 0000000..1db0470
--- /dev/null
+++ b/addons/gdUnit4/src/network/rpc/RPCMessage.gd
@@ -0,0 +1,18 @@
+class_name RPCMessage
+extends RPC
+
+var _message: String
+
+
+static func of(msg :String) -> RPCMessage:
+ var rpc := RPCMessage.new()
+ rpc._message = msg
+ return rpc
+
+
+func message() -> String:
+ return _message
+
+
+func _to_string() -> String:
+ return "RPCMessage: " + _message
diff --git a/addons/gdUnit4/src/network/rpc/RPCMessage.gd.uid b/addons/gdUnit4/src/network/rpc/RPCMessage.gd.uid
new file mode 100644
index 0000000..d470686
--- /dev/null
+++ b/addons/gdUnit4/src/network/rpc/RPCMessage.gd.uid
@@ -0,0 +1 @@
+uid://muf7ucwnbkuk