diff --git a/src/interface/x.h b/src/interface/x.h index fc466c8..634c187 100644 --- a/src/interface/x.h +++ b/src/interface/x.h @@ -80,7 +80,7 @@ typedef void (*OnReceiveBuffer)(const char*, size_t, const char*, const size_t, typedef void (*OnReceiveVideoFrame)(const XVideoFrame*, const char*, const size_t, void*); -typedef void (*OnSignalStatus)(SignalStatus, void*); +typedef void (*OnSignalStatus)(SignalStatus, const char*, const size_t, void*); typedef void (*OnConnectionStatus)(ConnectionStatus, const char*, const size_t, void*); @@ -114,6 +114,8 @@ typedef struct { OnSignalStatus on_signal_status; OnConnectionStatus on_connection_status; NetStatusReport net_status_report; + + const char* user_id; void* user_data; } Params; @@ -121,7 +123,7 @@ DLLAPI PeerPtr* CreatePeer(const Params* params); DLLAPI void DestroyPeer(PeerPtr** peer_ptr); -DLLAPI int Init(PeerPtr* peer_ptr, const char* user_id); +DLLAPI int Init(PeerPtr* peer_ptr); DLLAPI int CreateConnection(PeerPtr* peer_ptr, const char* transmission_id, const char* password); diff --git a/src/pc/peer_connection.cpp b/src/pc/peer_connection.cpp index 2cc1477..6543138 100644 --- a/src/pc/peer_connection.cpp +++ b/src/pc/peer_connection.cpp @@ -13,14 +13,13 @@ PeerConnection::PeerConnection() {} PeerConnection::~PeerConnection() { user_data_ = nullptr; } -int PeerConnection::Init(PeerConnectionParams params, - const std::string &user_id) { +int PeerConnection::Init(PeerConnectionParams params) { if (inited_) { LOG_INFO("Peer already inited"); return 0; } // Todo: checkout user_id unique or not - user_id_ = user_id; + user_id_ = params.user_id; if (params.use_cfg_file) { INIReader reader(params.cfg_path); @@ -103,7 +102,8 @@ int PeerConnection::Init(PeerConnectionParams params, if (WsStatus::WsOpening == ws_status) { ws_status_ = WsStatus::WsOpening; signal_status_ = SignalStatus::SignalConnecting; - on_signal_status_(SignalStatus::SignalConnecting, user_data_); + on_signal_status_(SignalStatus::SignalConnecting, user_id_.data(), + user_id_.size(), user_data_); } else if (WsStatus::WsOpened == ws_status) { ws_status_ = WsStatus::WsOpened; LOG_INFO("Login to signal server"); @@ -111,19 +111,23 @@ int PeerConnection::Init(PeerConnectionParams params, } else if (WsStatus::WsFailed == ws_status) { ws_status_ = WsStatus::WsFailed; signal_status_ = SignalStatus::SignalFailed; - on_signal_status_(SignalStatus::SignalFailed, user_data_); + on_signal_status_(SignalStatus::SignalFailed, user_id_.data(), + user_id_.size(), user_data_); } else if (WsStatus::WsClosed == ws_status) { ws_status_ = WsStatus::WsClosed; signal_status_ = SignalStatus::SignalClosed; - on_signal_status_(SignalStatus::SignalClosed, user_data_); + on_signal_status_(SignalStatus::SignalClosed, user_id_.data(), + user_id_.size(), user_data_); } else if (WsStatus::WsReconnecting == ws_status) { ws_status_ = WsStatus::WsReconnecting; signal_status_ = SignalStatus::SignalReconnecting; - on_signal_status_(SignalStatus::SignalReconnecting, user_data_); + on_signal_status_(SignalStatus::SignalReconnecting, user_id_.data(), + user_id_.size(), user_data_); } else if (WsStatus::WsServerClosed == ws_status) { ws_status_ = WsStatus::WsServerClosed; signal_status_ = SignalStatus::SignalServerClosed; - on_signal_status_(SignalStatus::SignalServerClosed, user_data_); + on_signal_status_(SignalStatus::SignalServerClosed, user_id_.data(), + user_id_.size(), user_data_); } }; @@ -196,7 +200,7 @@ int PeerConnection::Init(PeerConnectionParams params, // do { // } while (SignalStatus::SignalConnected != GetSignalStatus()); - LOG_INFO("[{}] Init finish", user_id); + LOG_INFO("[{}] Init finish", user_id_); inited_ = true; return 0; @@ -414,7 +418,8 @@ void PeerConnection::ProcessSignal(const std::string &signal) { user_id_.data(), user_id_.size(), user_data_); LOG_INFO("Login success with id [{}]", user_id_); signal_status_ = SignalStatus::SignalConnected; - on_signal_status_(SignalStatus::SignalConnected, user_data_); + on_signal_status_(SignalStatus::SignalConnected, user_id_.data(), + user_id_.size(), user_data_); } else if (j["status"].get() == "fail") { LOG_WARN("Login failed with id [{}]", user_id_); } diff --git a/src/pc/peer_connection.h b/src/pc/peer_connection.h index bd3c19b..7edea74 100644 --- a/src/pc/peer_connection.h +++ b/src/pc/peer_connection.h @@ -26,7 +26,8 @@ typedef void (*OnReceiveBuffer)(const char *, size_t, const char *, typedef void (*OnReceiveVideoFrame)(const XVideoFrame *video_frame, const char *, const size_t, void *); -typedef void (*OnSignalStatus)(SignalStatus, void *); +typedef void (*OnSignalStatus)(SignalStatus, const char *, const size_t, + void *); typedef void (*OnConnectionStatus)(ConnectionStatus, const char *, const size_t, void *); @@ -60,6 +61,8 @@ typedef struct { OnSignalStatus on_signal_status; OnConnectionStatus on_connection_status; NetStatusReport net_status_report; + + const char *user_id; void *user_data; } PeerConnectionParams; @@ -88,7 +91,7 @@ class PeerConnection { ~PeerConnection(); public: - int Init(PeerConnectionParams params, const std::string &user_id); + int Init(PeerConnectionParams params); int Create(const std::string &transmission_id = "", const std::string &password = ""); diff --git a/src/rtc/x_inner.cpp b/src/rtc/x_inner.cpp index 6f9eaae..ecf2cbb 100644 --- a/src/rtc/x_inner.cpp +++ b/src/rtc/x_inner.cpp @@ -38,6 +38,8 @@ PeerPtr *CreatePeer(const Params *params) { peer_ptr->pc_params.on_signal_status = params->on_signal_status; peer_ptr->pc_params.on_connection_status = params->on_connection_status; peer_ptr->pc_params.net_status_report = params->net_status_report; + + peer_ptr->pc_params.user_id = params->user_id; peer_ptr->pc_params.user_data = params->user_data; return peer_ptr; @@ -51,13 +53,13 @@ void DestroyPeer(PeerPtr **peer_ptr) { *peer_ptr = nullptr; } -int Init(PeerPtr *peer_ptr, const char *user_id) { +int Init(PeerPtr *peer_ptr) { if (!peer_ptr || !peer_ptr->peer_connection) { LOG_ERROR("Peer connection not created"); return -1; } - peer_ptr->peer_connection->Init(peer_ptr->pc_params, user_id); + peer_ptr->peer_connection->Init(peer_ptr->pc_params); return 0; }