summaryrefslogtreecommitdiff
path: root/addons/gdUnit4/src/network/GdUnitServer.gd
diff options
context:
space:
mode:
authorradiohotline <radoihotline@disroot.rg>2026-08-25 16:33:56 +0300
committerradiohotline <radoihotline@disroot.rg>2026-08-25 16:33:56 +0300
commita89e744ed0e8c759caf041a580112365bbfe4303 (patch)
treedd61e320904176995727e86a857d00c90d4933ba /addons/gdUnit4/src/network/GdUnitServer.gd
parent6d53d8cac78250dc888aa49d5f9d4175c6652feb (diff)
escoria updateHEADmain
Diffstat (limited to 'addons/gdUnit4/src/network/GdUnitServer.gd')
-rw-r--r--addons/gdUnit4/src/network/GdUnitServer.gd41
1 files changed, 41 insertions, 0 deletions
diff --git a/addons/gdUnit4/src/network/GdUnitServer.gd b/addons/gdUnit4/src/network/GdUnitServer.gd
new file mode 100644
index 0000000..4ce2f48
--- /dev/null
+++ b/addons/gdUnit4/src/network/GdUnitServer.gd
@@ -0,0 +1,41 @@
+@tool
+extends Node
+
+var _client_id: int
+
+@onready var _server: GdUnitTcpServer = $TcpServer
+
+
+@warning_ignore("return_value_discarded")
+func _ready() -> void:
+ var result := _server.start()
+ if result.is_error():
+ push_error(result.error_message())
+ return
+ var server_port :int = result.value()
+ Engine.set_meta("gdunit_server_port", server_port)
+ _server.client_connected.connect(_on_client_connected)
+ _server.client_disconnected.connect(_on_client_disconnected)
+ _server.rpc_data.connect(_receive_rpc_data)
+
+
+func _on_client_connected(client_id: int) -> void:
+ _client_id = client_id
+ GdUnitSignals.instance().gdunit_client_connected.emit(client_id)
+
+
+func _on_client_disconnected(client_id: int) -> void:
+ GdUnitSignals.instance().gdunit_client_disconnected.emit(client_id)
+
+
+func _receive_rpc_data(p_rpc: RPC) -> void:
+ if p_rpc is RPCMessage:
+ var rpc_message: RPCMessage = p_rpc
+ GdUnitSignals.instance().gdunit_message.emit(rpc_message.message())
+ return
+ if p_rpc is RPCGdUnitEvent:
+ var rpc_event: RPCGdUnitEvent = p_rpc
+ var event := rpc_event.event()
+ GdUnitSignals.instance().gdunit_event.emit(event)
+ if event.type() == GdUnitEvent.SESSION_CLOSE and _server != null:
+ _server.disconnect_client(_client_id)