[feat] Use server to generate transmission id and client id

This commit is contained in:
dijunkun
2024-08-06 17:26:46 +08:00
parent 0edeec3d16
commit 3453d4e0c4
5 changed files with 18 additions and 12 deletions

View File

@@ -31,7 +31,7 @@ enum SignalStatus {
SignalReconnecting SignalReconnecting
}; };
enum TraversalMode { P2P = 0, Relay }; enum TraversalMode { P2P = 0, Relay, UnknownMode };
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@@ -46,7 +46,7 @@ typedef void (*OnSignalStatus)(SignalStatus, void*);
typedef void (*OnConnectionStatus)(ConnectionStatus, 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*); const unsigned short, void*);
typedef struct { typedef struct {

View File

@@ -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 send,
const unsigned short receive, void *user_ptr) { const unsigned short receive, void *user_ptr) {
if (net_status_report_) { 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: { case "transmission_id"_H: {
if (j["status"].get<std::string>() == "success") { if (j["status"].get<std::string>() == "success") {
transmission_id_ = j["transmission_id"].get<std::string>(); transmission_id_ = j["transmission_id"].get<std::string>();
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_); LOG_INFO("Create transmission success with id [{}]", transmission_id_);
} else if (j["status"].get<std::string>() == "fail") { } else if (j["status"].get<std::string>() == "fail") {
LOG_WARN("Create transmission failed with id [{}], due to [{}]", LOG_WARN("Create transmission failed with id [{}], due to [{}]",

View File

@@ -16,11 +16,11 @@
typedef void (*OnReceiveBuffer)(const char *, size_t, const char *, typedef void (*OnReceiveBuffer)(const char *, size_t, const char *,
const size_t, void *); 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 *); const unsigned short, void *);
typedef struct { typedef struct {
@@ -123,7 +123,7 @@ class PeerConnection {
std::function<void(const char *, size_t, const char *, size_t)> std::function<void(const char *, size_t, const char *, size_t)>
on_receive_data_ = nullptr; on_receive_data_ = nullptr;
std::function<void(std::string)> on_ice_status_change_ = nullptr; std::function<void(std::string)> on_ice_status_change_ = nullptr;
std::function<void(IceTransmission::TraversalType, const unsigned short, std::function<void(int, IceTransmission::TraversalType, const unsigned short,
const unsigned short, void *)> const unsigned short, void *)>
on_net_status_report_ = nullptr; on_net_status_report_ = nullptr;
bool ice_ready_ = false; bool ice_ready_ = false;

View File

@@ -240,6 +240,7 @@ int IceTransmission::InitIceTransmission(
ice_transmission_obj->traversal_type_ = TraversalType::TP2P; ice_transmission_obj->traversal_type_ = TraversalType::TP2P;
} }
ice_transmission_obj->on_receive_net_status_report_( ice_transmission_obj->on_receive_net_status_report_(
atoi(ice_transmission_obj->transmission_id_.c_str()),
ice_transmission_obj->traversal_type_, 0, 0, nullptr); ice_transmission_obj->traversal_type_, 0, 0, nullptr);
} }
}, },

View File

@@ -31,7 +31,7 @@ class IceTransmission {
kVideoFrameDelta = 4, kVideoFrameDelta = 4,
}; };
enum TraversalType { TP2P = 0, TRelay = 1 }; enum TraversalType { TP2P = 0, TRelay = 1, TUnknown = 2 };
public: public:
IceTransmission(bool trickle_ice, bool offer_peer, IceTransmission(bool trickle_ice, bool offer_peer,
@@ -69,7 +69,7 @@ class IceTransmission {
} }
void SetOnReceiveNetStatusReportFunc( void SetOnReceiveNetStatusReportFunc(
std::function<void(TraversalType, const unsigned short, std::function<void(int, TraversalType, const unsigned short,
const unsigned short, void *)> const unsigned short, void *)>
on_receive_net_status_report) { on_receive_net_status_report) {
on_receive_net_status_report_ = on_receive_net_status_report; on_receive_net_status_report_ = on_receive_net_status_report;
@@ -131,8 +131,8 @@ class IceTransmission {
std::function<void(const char *, size_t, const char *, size_t)> std::function<void(const char *, size_t, const char *, size_t)>
on_receive_data_ = nullptr; on_receive_data_ = nullptr;
std::function<void(std::string)> on_ice_status_change_ = nullptr; std::function<void(std::string)> on_ice_status_change_ = nullptr;
std::function<void(TraversalType, const unsigned short, const unsigned short, std::function<void(int, TraversalType, const unsigned short,
void *)> const unsigned short, void *)>
on_receive_net_status_report_ = nullptr; on_receive_net_status_report_ = nullptr;
private: private: