dc progress

This commit is contained in:
Théo Monnom
2022-09-18 14:40:50 +02:00
parent 06587d154f
commit 81b45d9c48
9 changed files with 198 additions and 88 deletions
@@ -8,14 +8,19 @@
#include <memory>
#include "api/data_channel_interface.h"
#include "rust_types.h"
#include "rust/cxx.h"
namespace livekit {
using NativeDataChannelInit = webrtc::DataChannelInit;
class NativeDataChannelObserver;
class DataChannel {
public:
explicit DataChannel(rtc::scoped_refptr<webrtc::DataChannelInterface> data_channel);
void register_observer(std::unique_ptr<NativeDataChannelObserver> observer);
void unregister_observer();
void close();
private:
rtc::scoped_refptr<webrtc::DataChannelInterface> data_channel_;
};
@@ -26,6 +31,18 @@ namespace livekit {
return nullptr; // Ignore
}
class NativeDataChannelObserver : public webrtc::DataChannelObserver {
public:
explicit NativeDataChannelObserver(rust::Box<DataChannelObserverWrapper> observer);
void OnStateChange() override;
void OnMessage(const webrtc::DataBuffer& buffer) override;
void OnBufferedAmountChange(uint64_t sent_data_size) override;
private:
rust::Box<DataChannelObserverWrapper> observer_;
};
std::unique_ptr<NativeDataChannelObserver> create_native_peer_connection_observer(rust::Box<DataChannelObserverWrapper> observer);
} // livekit
#endif //CLIENT_SDK_NATIVE_DATA_CHANNEL_H
@@ -39,8 +39,6 @@ namespace livekit {
public:
explicit NativePeerConnectionObserver(rust::Box<PeerConnectionObserverWrapper> observer);
~NativePeerConnectionObserver() override = default;
void OnSignalingChange(webrtc::PeerConnectionInterface::SignalingState new_state) override;
void OnAddStream(rtc::scoped_refptr<webrtc::MediaStreamInterface> stream) override;
void OnRemoveStream(rtc::scoped_refptr<webrtc::MediaStreamInterface> stream) override;
@@ -14,6 +14,7 @@ namespace livekit {
struct CreateSdpObserverWrapper;
struct SetLocalSdpObserverWrapper;
struct SetRemoteSdpObserverWrapper;
struct DataChannelObserverWrapper;
// Shared types
struct RTCOfferAnswerOptions;