Add get_buffered_amount() to WebRTCDataChannel
This commit is contained in:
parent
51f8247871
commit
5b2dcc5f6b
9 changed files with 36 additions and 0 deletions
|
@ -108,6 +108,13 @@ typedef struct {
|
||||||
void *next; /* For extension? */
|
void *next; /* For extension? */
|
||||||
} godot_net_webrtc_data_channel;
|
} godot_net_webrtc_data_channel;
|
||||||
|
|
||||||
|
/* Extensions to WebRTCDataChannel */
|
||||||
|
typedef struct {
|
||||||
|
int (*get_buffered_amount)(const void *);
|
||||||
|
|
||||||
|
void *next; /* For extension? */
|
||||||
|
} godot_net_webrtc_data_channel_ext;
|
||||||
|
|
||||||
/* Set the default GDNative library */
|
/* Set the default GDNative library */
|
||||||
godot_error GDAPI godot_net_set_webrtc_library(const godot_net_webrtc_library *);
|
godot_error GDAPI godot_net_set_webrtc_library(const godot_net_webrtc_library *);
|
||||||
/* Binds a WebRTCPeerConnectionGDNative to the provided interface */
|
/* Binds a WebRTCPeerConnectionGDNative to the provided interface */
|
||||||
|
|
|
@ -14,6 +14,13 @@
|
||||||
Closes this data channel, notifying the other peer.
|
Closes this data channel, notifying the other peer.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="get_buffered_amount" qualifiers="const">
|
||||||
|
<return type="int">
|
||||||
|
</return>
|
||||||
|
<description>
|
||||||
|
Returns the number of bytes currently queued to be sent over this channel.
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
<method name="get_id" qualifiers="const">
|
<method name="get_id" qualifiers="const">
|
||||||
<return type="int">
|
<return type="int">
|
||||||
</return>
|
</return>
|
||||||
|
|
|
@ -166,6 +166,11 @@ const GodotRTCDataChannel = {
|
||||||
return GodotRTCDataChannel.get_prop(p_id, 'negotiated', 65535);
|
return GodotRTCDataChannel.get_prop(p_id, 'negotiated', 65535);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
godot_js_rtc_datachannel_get_buffered_amount__sig: 'ii',
|
||||||
|
godot_js_rtc_datachannel_get_buffered_amount: function (p_id) {
|
||||||
|
return GodotRTCDataChannel.get_prop(p_id, 'bufferedAmount', 0);
|
||||||
|
},
|
||||||
|
|
||||||
godot_js_rtc_datachannel_label_get__sig: 'ii',
|
godot_js_rtc_datachannel_label_get__sig: 'ii',
|
||||||
godot_js_rtc_datachannel_label_get: function (p_id) {
|
godot_js_rtc_datachannel_label_get: function (p_id) {
|
||||||
const ref = IDHandler.get(p_id);
|
const ref = IDHandler.get(p_id);
|
||||||
|
|
|
@ -46,6 +46,7 @@ void WebRTCDataChannel::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("get_max_retransmits"), &WebRTCDataChannel::get_max_retransmits);
|
ClassDB::bind_method(D_METHOD("get_max_retransmits"), &WebRTCDataChannel::get_max_retransmits);
|
||||||
ClassDB::bind_method(D_METHOD("get_protocol"), &WebRTCDataChannel::get_protocol);
|
ClassDB::bind_method(D_METHOD("get_protocol"), &WebRTCDataChannel::get_protocol);
|
||||||
ClassDB::bind_method(D_METHOD("is_negotiated"), &WebRTCDataChannel::is_negotiated);
|
ClassDB::bind_method(D_METHOD("is_negotiated"), &WebRTCDataChannel::is_negotiated);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_buffered_amount"), &WebRTCDataChannel::get_buffered_amount);
|
||||||
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "write_mode", PROPERTY_HINT_ENUM), "set_write_mode", "get_write_mode");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "write_mode", PROPERTY_HINT_ENUM), "set_write_mode", "get_write_mode");
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,8 @@ public:
|
||||||
virtual String get_protocol() const = 0;
|
virtual String get_protocol() const = 0;
|
||||||
virtual bool is_negotiated() const = 0;
|
virtual bool is_negotiated() const = 0;
|
||||||
|
|
||||||
|
virtual int get_buffered_amount() const = 0;
|
||||||
|
|
||||||
virtual Error poll() = 0;
|
virtual Error poll() = 0;
|
||||||
virtual void close() = 0;
|
virtual void close() = 0;
|
||||||
|
|
||||||
|
|
|
@ -110,6 +110,13 @@ bool WebRTCDataChannelGDNative::is_negotiated() const {
|
||||||
return interface->is_negotiated(interface->data);
|
return interface->is_negotiated(interface->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int WebRTCDataChannelGDNative::get_buffered_amount() const {
|
||||||
|
ERR_FAIL_COND_V(interface == nullptr, 0);
|
||||||
|
ERR_FAIL_COND_V(interface->next == nullptr, 0);
|
||||||
|
|
||||||
|
return ((godot_net_webrtc_data_channel_ext *)interface->next)->get_buffered_amount(interface->data);
|
||||||
|
}
|
||||||
|
|
||||||
Error WebRTCDataChannelGDNative::get_packet(const uint8_t **r_buffer, int &r_buffer_size) {
|
Error WebRTCDataChannelGDNative::get_packet(const uint8_t **r_buffer, int &r_buffer_size) {
|
||||||
ERR_FAIL_COND_V(interface == nullptr, ERR_UNCONFIGURED);
|
ERR_FAIL_COND_V(interface == nullptr, ERR_UNCONFIGURED);
|
||||||
return (Error)interface->get_packet(interface->data, r_buffer, &r_buffer_size);
|
return (Error)interface->get_packet(interface->data, r_buffer, &r_buffer_size);
|
||||||
|
|
|
@ -60,6 +60,7 @@ public:
|
||||||
virtual int get_max_retransmits() const;
|
virtual int get_max_retransmits() const;
|
||||||
virtual String get_protocol() const;
|
virtual String get_protocol() const;
|
||||||
virtual bool is_negotiated() const;
|
virtual bool is_negotiated() const;
|
||||||
|
virtual int get_buffered_amount() const;
|
||||||
|
|
||||||
virtual Error poll();
|
virtual Error poll();
|
||||||
virtual void close();
|
virtual void close();
|
||||||
|
|
|
@ -46,6 +46,7 @@ extern int godot_js_rtc_datachannel_id_get(int p_id);
|
||||||
extern int godot_js_rtc_datachannel_max_packet_lifetime_get(int p_id);
|
extern int godot_js_rtc_datachannel_max_packet_lifetime_get(int p_id);
|
||||||
extern int godot_js_rtc_datachannel_max_retransmits_get(int p_id);
|
extern int godot_js_rtc_datachannel_max_retransmits_get(int p_id);
|
||||||
extern int godot_js_rtc_datachannel_is_negotiated(int p_id);
|
extern int godot_js_rtc_datachannel_is_negotiated(int p_id);
|
||||||
|
extern int godot_js_rtc_datachannel_get_buffered_amount(int p_id);
|
||||||
extern char *godot_js_rtc_datachannel_label_get(int p_id); // Must free the returned string.
|
extern char *godot_js_rtc_datachannel_label_get(int p_id); // Must free the returned string.
|
||||||
extern char *godot_js_rtc_datachannel_protocol_get(int p_id); // Must free the returned string.
|
extern char *godot_js_rtc_datachannel_protocol_get(int p_id); // Must free the returned string.
|
||||||
extern void godot_js_rtc_datachannel_destroy(int p_id);
|
extern void godot_js_rtc_datachannel_destroy(int p_id);
|
||||||
|
@ -181,6 +182,10 @@ bool WebRTCDataChannelJS::is_negotiated() const {
|
||||||
return godot_js_rtc_datachannel_is_negotiated(_js_id);
|
return godot_js_rtc_datachannel_is_negotiated(_js_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int WebRTCDataChannelJS::get_buffered_amount() const {
|
||||||
|
return godot_js_rtc_datachannel_get_buffered_amount(_js_id);
|
||||||
|
}
|
||||||
|
|
||||||
WebRTCDataChannelJS::WebRTCDataChannelJS() {
|
WebRTCDataChannelJS::WebRTCDataChannelJS() {
|
||||||
queue_count = 0;
|
queue_count = 0;
|
||||||
_was_string = false;
|
_was_string = false;
|
||||||
|
|
|
@ -72,6 +72,7 @@ public:
|
||||||
virtual int get_max_retransmits() const;
|
virtual int get_max_retransmits() const;
|
||||||
virtual String get_protocol() const;
|
virtual String get_protocol() const;
|
||||||
virtual bool is_negotiated() const;
|
virtual bool is_negotiated() const;
|
||||||
|
virtual int get_buffered_amount() const;
|
||||||
|
|
||||||
virtual Error poll();
|
virtual Error poll();
|
||||||
virtual void close();
|
virtual void close();
|
||||||
|
|
Loading…
Reference in a new issue