You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Merge pull request #67982 from Faless/mp/4.x_disconnect_close
[MP] Add MultiplayerPeer disconnect_peer, close.
This commit is contained in:
@@ -10,13 +10,6 @@
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
<methods>
|
||||
<method name="close">
|
||||
<return type="void" />
|
||||
<description>
|
||||
Closes this [MultiplayerPeer], resetting the state to [constant MultiplayerPeer.CONNECTION_CONNECTED].
|
||||
[b]Note:[/b] To make sure remote peers receive a clean close prefer disconnecting clients via [method disconnect_peer].
|
||||
</description>
|
||||
</method>
|
||||
<method name="create_client">
|
||||
<return type="int" enum="Error" />
|
||||
<param index="0" name="url" type="String" />
|
||||
@@ -37,15 +30,6 @@
|
||||
Starts a new multiplayer server listening on the given [param port]. You can optionally specify a [param bind_address], and provide a [param tls_key] and [param tls_certificate] to use TLS.
|
||||
</description>
|
||||
</method>
|
||||
<method name="disconnect_peer">
|
||||
<return type="void" />
|
||||
<param index="0" name="id" type="int" />
|
||||
<param index="1" name="code" type="int" default="1000" />
|
||||
<param index="2" name="reason" type="String" default="""" />
|
||||
<description>
|
||||
Disconnects the peer identified by [code]id[/code] from the server. See [method WebSocketPeer.close] for more information.
|
||||
</description>
|
||||
</method>
|
||||
<method name="get_peer" qualifiers="const">
|
||||
<return type="WebSocketPeer" />
|
||||
<param index="0" name="peer_id" type="int" />
|
||||
|
||||
@@ -75,12 +75,10 @@ void WebSocketMultiplayerPeer::_clear() {
|
||||
void WebSocketMultiplayerPeer::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("create_client", "url", "verify_tls", "tls_certificate"), &WebSocketMultiplayerPeer::create_client, DEFVAL(true), DEFVAL(Ref<X509Certificate>()));
|
||||
ClassDB::bind_method(D_METHOD("create_server", "port", "bind_address", "tls_key", "tls_certificate"), &WebSocketMultiplayerPeer::create_server, DEFVAL("*"), DEFVAL(Ref<CryptoKey>()), DEFVAL(Ref<X509Certificate>()));
|
||||
ClassDB::bind_method(D_METHOD("close"), &WebSocketMultiplayerPeer::close);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_peer", "peer_id"), &WebSocketMultiplayerPeer::get_peer);
|
||||
ClassDB::bind_method(D_METHOD("get_peer_address", "id"), &WebSocketMultiplayerPeer::get_peer_address);
|
||||
ClassDB::bind_method(D_METHOD("get_peer_port", "id"), &WebSocketMultiplayerPeer::get_peer_port);
|
||||
ClassDB::bind_method(D_METHOD("disconnect_peer", "id", "code", "reason"), &WebSocketMultiplayerPeer::disconnect_peer, DEFVAL(1000), DEFVAL(""));
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_supported_protocols"), &WebSocketMultiplayerPeer::get_supported_protocols);
|
||||
ClassDB::bind_method(D_METHOD("set_supported_protocols", "protocols"), &WebSocketMultiplayerPeer::set_supported_protocols);
|
||||
@@ -488,9 +486,15 @@ int WebSocketMultiplayerPeer::get_peer_port(int p_peer_id) const {
|
||||
return peers_map[p_peer_id]->get_connected_port();
|
||||
}
|
||||
|
||||
void WebSocketMultiplayerPeer::disconnect_peer(int p_peer_id, int p_code, String p_reason) {
|
||||
void WebSocketMultiplayerPeer::disconnect_peer(int p_peer_id, bool p_force) {
|
||||
ERR_FAIL_COND(!peers_map.has(p_peer_id));
|
||||
peers_map[p_peer_id]->close(p_code, p_reason);
|
||||
peers_map[p_peer_id]->close();
|
||||
if (p_force) {
|
||||
peers_map.erase(p_peer_id);
|
||||
if (!is_server()) {
|
||||
_clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WebSocketMultiplayerPeer::close() {
|
||||
|
||||
@@ -102,6 +102,9 @@ public:
|
||||
virtual int get_max_packet_size() const override;
|
||||
virtual bool is_server() const override;
|
||||
virtual void poll() override;
|
||||
virtual void close() override;
|
||||
virtual void disconnect_peer(int p_peer_id, bool p_force = false) override;
|
||||
|
||||
virtual ConnectionStatus get_connection_status() const override;
|
||||
|
||||
/* PacketPeer */
|
||||
@@ -132,8 +135,6 @@ public:
|
||||
|
||||
IPAddress get_peer_address(int p_peer_id) const;
|
||||
int get_peer_port(int p_peer_id) const;
|
||||
void disconnect_peer(int p_peer_id, int p_code = 1000, String p_reason = "");
|
||||
void close();
|
||||
|
||||
void set_max_queued_packets(int p_max_queued_packets);
|
||||
int get_max_queued_packets() const;
|
||||
|
||||
Reference in New Issue
Block a user