diff options
Diffstat (limited to 'src/net/WebRTCPeerConnectionNative.cpp')
-rw-r--r-- | src/net/WebRTCPeerConnectionNative.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/net/WebRTCPeerConnectionNative.cpp b/src/net/WebRTCPeerConnectionNative.cpp new file mode 100644 index 0000000..5f7d83e --- /dev/null +++ b/src/net/WebRTCPeerConnectionNative.cpp @@ -0,0 +1,65 @@ +#include "WebRTCPeerConnectionNative.hpp" + +const godot_gdnative_ext_net_3_2_api_struct *WebRTCPeerConnectionNative::_net_api = NULL; + +void WebRTCPeerConnectionNative::register_interface(const godot_net_webrtc_peer_connection *p_interface) { + ERR_FAIL_COND(!_net_api); + _net_api->godot_net_bind_webrtc_peer_connection(_owner, p_interface); +} + +void WebRTCPeerConnectionNative::_register_methods() {} + +void WebRTCPeerConnectionNative::_init() { + register_interface(&interface); +} + +WebRTCPeerConnectionNative::~WebRTCPeerConnectionNative() { + if (_owner) { + register_interface(NULL); + } +} + +/* + * The C interface that implements WebRTCPeerConnection. + * In this case it forwards calls to our C++ class, but could be plain C, + * and you could use void *user for any kind of state struct pointer you have. + */ +godot_int get_connection_state_wp(const void *user) { + return (godot_int)((WebRTCPeerConnectionNative *)user)->get_connection_state(); +} + +godot_error initialize_wp(void *user, const godot_dictionary *p_config) { + return ((WebRTCPeerConnectionNative *)user)->initialize(p_config); +} + +godot_object *create_data_channel_wp(void *user, const char *p_channel, const godot_dictionary *p_channel_config) { + return ((WebRTCPeerConnectionNative *)user)->create_data_channel(p_channel, p_channel_config); +} + +godot_error create_offer_wp(void *user) { + return ((WebRTCPeerConnectionNative *)user)->create_offer(); +} + +godot_error create_answer_wp(void *user) { + return GODOT_ERR_UNAVAILABLE; // Not implemented, not used yet. +} + +godot_error set_remote_description_wp(void *user, const char *type, const char *sdp) { + return ((WebRTCPeerConnectionNative *)user)->set_remote_description(type, sdp); +} + +godot_error set_local_description_wp(void *user, const char *type, const char *sdp) { + return ((WebRTCPeerConnectionNative *)user)->set_local_description(type, sdp); +} + +godot_error add_ice_candidate_wp(void *user, const char *sdpMidName, int sdpMlineIndexName, const char *sdpName) { + return ((WebRTCPeerConnectionNative *)user)->add_ice_candidate(sdpMidName, sdpMlineIndexName, sdpName); +} + +godot_error poll_wp(void *user) { + return ((WebRTCPeerConnectionNative *)user)->poll(); +} + +void close_wp(void *user) { + ((WebRTCPeerConnectionNative *)user)->close(); +} |