From 3453d4e0c4de8805bfc1ff3b18e75613950b03d1 Mon Sep 17 00:00:00 2001 From: dijunkun Date: Tue, 6 Aug 2024 17:26:46 +0800 Subject: [PATCH] [feat] Use server to generate transmission id and client id --- src/interface/x.h | 4 ++-- src/pc/peer_connection.cpp | 9 +++++++-- src/pc/peer_connection.h | 8 ++++---- src/transmission/ice_transmission.cpp | 1 + src/transmission/ice_transmission.h | 8 ++++---- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/interface/x.h b/src/interface/x.h index c2dc0f1..96a184a 100644 --- a/src/interface/x.h +++ b/src/interface/x.h @@ -31,7 +31,7 @@ enum SignalStatus { SignalReconnecting }; -enum TraversalMode { P2P = 0, Relay }; +enum TraversalMode { P2P = 0, Relay, UnknownMode }; #ifdef __cplusplus extern "C" { @@ -46,7 +46,7 @@ typedef void (*OnSignalStatus)(SignalStatus, void*); typedef void (*OnConnectionStatus)(ConnectionStatus, void*); -typedef void (*NetStatusReport)(TraversalMode mode, const unsigned short, +typedef void (*NetStatusReport)(int, TraversalMode, const unsigned short, const unsigned short, void*); typedef struct { diff --git a/src/pc/peer_connection.cpp b/src/pc/peer_connection.cpp index c044bc3..218431e 100644 --- a/src/pc/peer_connection.cpp +++ b/src/pc/peer_connection.cpp @@ -171,11 +171,13 @@ int PeerConnection::Init(PeerConnectionParams params, } }; - on_net_status_report_ = [this](IceTransmission::TraversalType mode, + on_net_status_report_ = [this](int TransmissionId, + IceTransmission::TraversalType mode, const unsigned short send, const unsigned short receive, void *user_ptr) { if (net_status_report_) { - net_status_report_(TraversalMode(mode), send, receive, user_ptr); + net_status_report_(atoi(transmission_id_.c_str()), TraversalMode(mode), + send, receive, user_ptr); } }; @@ -381,6 +383,9 @@ void PeerConnection::ProcessSignal(const std::string &signal) { case "transmission_id"_H: { if (j["status"].get() == "success") { transmission_id_ = j["transmission_id"].get(); + user_id_ = transmission_id_; + net_status_report_(atoi(transmission_id_.c_str()), + TraversalMode::UnknownMode, 0, 0, user_data_); LOG_INFO("Create transmission success with id [{}]", transmission_id_); } else if (j["status"].get() == "fail") { LOG_WARN("Create transmission failed with id [{}], due to [{}]", diff --git a/src/pc/peer_connection.h b/src/pc/peer_connection.h index 94e35e1..b654625 100644 --- a/src/pc/peer_connection.h +++ b/src/pc/peer_connection.h @@ -16,11 +16,11 @@ typedef void (*OnReceiveBuffer)(const char *, size_t, const char *, const size_t, void *); -typedef void (*OnSignalStatus)(SignalStatus status, void *); +typedef void (*OnSignalStatus)(SignalStatus, void *); -typedef void (*OnConnectionStatus)(ConnectionStatus status, void *); +typedef void (*OnConnectionStatus)(ConnectionStatus, void *); -typedef void (*NetStatusReport)(TraversalMode mode, const unsigned short, +typedef void (*NetStatusReport)(int, TraversalMode, const unsigned short, const unsigned short, void *); typedef struct { @@ -123,7 +123,7 @@ class PeerConnection { std::function on_receive_data_ = nullptr; std::function on_ice_status_change_ = nullptr; - std::function on_net_status_report_ = nullptr; bool ice_ready_ = false; diff --git a/src/transmission/ice_transmission.cpp b/src/transmission/ice_transmission.cpp index 0b1548d..016e93a 100644 --- a/src/transmission/ice_transmission.cpp +++ b/src/transmission/ice_transmission.cpp @@ -240,6 +240,7 @@ int IceTransmission::InitIceTransmission( ice_transmission_obj->traversal_type_ = TraversalType::TP2P; } ice_transmission_obj->on_receive_net_status_report_( + atoi(ice_transmission_obj->transmission_id_.c_str()), ice_transmission_obj->traversal_type_, 0, 0, nullptr); } }, diff --git a/src/transmission/ice_transmission.h b/src/transmission/ice_transmission.h index 6cdcf0a..c48807b 100644 --- a/src/transmission/ice_transmission.h +++ b/src/transmission/ice_transmission.h @@ -31,7 +31,7 @@ class IceTransmission { kVideoFrameDelta = 4, }; - enum TraversalType { TP2P = 0, TRelay = 1 }; + enum TraversalType { TP2P = 0, TRelay = 1, TUnknown = 2 }; public: IceTransmission(bool trickle_ice, bool offer_peer, @@ -69,7 +69,7 @@ class IceTransmission { } void SetOnReceiveNetStatusReportFunc( - std::function on_receive_net_status_report) { on_receive_net_status_report_ = on_receive_net_status_report; @@ -131,8 +131,8 @@ class IceTransmission { std::function on_receive_data_ = nullptr; std::function on_ice_status_change_ = nullptr; - std::function + std::function on_receive_net_status_report_ = nullptr; private: