Merge pull request #30851 from TheDevelo/webrtc-buffer

Allow setting buffer size of WebRTCDataChannel
This commit is contained in:
Rémi Verschelde 2019-08-21 21:17:48 +02:00 committed by GitHub
commit 22df2b79b6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 1 deletions

View file

@ -29,6 +29,7 @@
/*************************************************************************/ /*************************************************************************/
#include "register_types.h" #include "register_types.h"
#include "core/project_settings.h"
#include "webrtc_data_channel.h" #include "webrtc_data_channel.h"
#include "webrtc_peer_connection.h" #include "webrtc_peer_connection.h"
@ -43,6 +44,12 @@
#include "webrtc_multiplayer.h" #include "webrtc_multiplayer.h"
void register_webrtc_types() { void register_webrtc_types() {
#define _SET_HINT(NAME, _VAL_, _MAX_) \
GLOBAL_DEF(NAME, _VAL_); \
ProjectSettings::get_singleton()->set_custom_property_info(NAME, PropertyInfo(Variant::INT, NAME, PROPERTY_HINT_RANGE, "2," #_MAX_ ",1,or_greater"));
_SET_HINT(WRTC_IN_BUF, 64, 4096);
#ifdef JAVASCRIPT_ENABLED #ifdef JAVASCRIPT_ENABLED
WebRTCPeerConnectionJS::make_default(); WebRTCPeerConnectionJS::make_default();
#elif defined(WEBRTC_GDNATIVE_ENABLED) #elif defined(WEBRTC_GDNATIVE_ENABLED)

View file

@ -29,6 +29,7 @@
/*************************************************************************/ /*************************************************************************/
#include "webrtc_data_channel.h" #include "webrtc_data_channel.h"
#include "core/project_settings.h"
void WebRTCDataChannel::_bind_methods() { void WebRTCDataChannel::_bind_methods() {
ClassDB::bind_method(D_METHOD("poll"), &WebRTCDataChannel::poll); ClassDB::bind_method(D_METHOD("poll"), &WebRTCDataChannel::poll);
@ -58,6 +59,7 @@ void WebRTCDataChannel::_bind_methods() {
} }
WebRTCDataChannel::WebRTCDataChannel() { WebRTCDataChannel::WebRTCDataChannel() {
_in_buffer_shift = nearest_shift((int)GLOBAL_GET(WRTC_IN_BUF) - 1) + 10;
} }
WebRTCDataChannel::~WebRTCDataChannel() { WebRTCDataChannel::~WebRTCDataChannel() {

View file

@ -33,6 +33,8 @@
#include "core/io/packet_peer.h" #include "core/io/packet_peer.h"
#define WRTC_IN_BUF "network/limits/webrtc/max_channel_in_buffer_kb"
class WebRTCDataChannel : public PacketPeer { class WebRTCDataChannel : public PacketPeer {
GDCLASS(WebRTCDataChannel, PacketPeer); GDCLASS(WebRTCDataChannel, PacketPeer);
@ -50,6 +52,8 @@ public:
}; };
protected: protected:
unsigned int _in_buffer_shift;
static void _bind_methods(); static void _bind_methods();
public: public:

View file

@ -56,7 +56,7 @@ EMSCRIPTEN_KEEPALIVE void _emrtc_on_ch_message(void *obj, uint8_t *p_data, uint3
} }
void WebRTCDataChannelJS::_on_open() { void WebRTCDataChannelJS::_on_open() {
in_buffer.resize(16); in_buffer.resize(_in_buffer_shift);
} }
void WebRTCDataChannelJS::_on_close() { void WebRTCDataChannelJS::_on_close() {