[feat] add user id in params

This commit is contained in:
dijunkun
2025-04-09 15:45:30 +08:00
parent 9972047199
commit f48d940b80
4 changed files with 28 additions and 16 deletions

View File

@@ -80,7 +80,7 @@ typedef void (*OnReceiveBuffer)(const char*, size_t, const char*, const size_t,
typedef void (*OnReceiveVideoFrame)(const XVideoFrame*, const char*, typedef void (*OnReceiveVideoFrame)(const XVideoFrame*, const char*,
const size_t, void*); 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, typedef void (*OnConnectionStatus)(ConnectionStatus, const char*, const size_t,
void*); void*);
@@ -114,6 +114,8 @@ typedef struct {
OnSignalStatus on_signal_status; OnSignalStatus on_signal_status;
OnConnectionStatus on_connection_status; OnConnectionStatus on_connection_status;
NetStatusReport net_status_report; NetStatusReport net_status_report;
const char* user_id;
void* user_data; void* user_data;
} Params; } Params;
@@ -121,7 +123,7 @@ DLLAPI PeerPtr* CreatePeer(const Params* params);
DLLAPI void DestroyPeer(PeerPtr** peer_ptr); 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, DLLAPI int CreateConnection(PeerPtr* peer_ptr, const char* transmission_id,
const char* password); const char* password);

View File

@@ -13,14 +13,13 @@ PeerConnection::PeerConnection() {}
PeerConnection::~PeerConnection() { user_data_ = nullptr; } PeerConnection::~PeerConnection() { user_data_ = nullptr; }
int PeerConnection::Init(PeerConnectionParams params, int PeerConnection::Init(PeerConnectionParams params) {
const std::string &user_id) {
if (inited_) { if (inited_) {
LOG_INFO("Peer already inited"); LOG_INFO("Peer already inited");
return 0; return 0;
} }
// Todo: checkout user_id unique or not // Todo: checkout user_id unique or not
user_id_ = user_id; user_id_ = params.user_id;
if (params.use_cfg_file) { if (params.use_cfg_file) {
INIReader reader(params.cfg_path); INIReader reader(params.cfg_path);
@@ -103,7 +102,8 @@ int PeerConnection::Init(PeerConnectionParams params,
if (WsStatus::WsOpening == ws_status) { if (WsStatus::WsOpening == ws_status) {
ws_status_ = WsStatus::WsOpening; ws_status_ = WsStatus::WsOpening;
signal_status_ = SignalStatus::SignalConnecting; 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) { } else if (WsStatus::WsOpened == ws_status) {
ws_status_ = WsStatus::WsOpened; ws_status_ = WsStatus::WsOpened;
LOG_INFO("Login to signal server"); LOG_INFO("Login to signal server");
@@ -111,19 +111,23 @@ int PeerConnection::Init(PeerConnectionParams params,
} else if (WsStatus::WsFailed == ws_status) { } else if (WsStatus::WsFailed == ws_status) {
ws_status_ = WsStatus::WsFailed; ws_status_ = WsStatus::WsFailed;
signal_status_ = SignalStatus::SignalFailed; 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) { } else if (WsStatus::WsClosed == ws_status) {
ws_status_ = WsStatus::WsClosed; ws_status_ = WsStatus::WsClosed;
signal_status_ = SignalStatus::SignalClosed; 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) { } else if (WsStatus::WsReconnecting == ws_status) {
ws_status_ = WsStatus::WsReconnecting; ws_status_ = WsStatus::WsReconnecting;
signal_status_ = SignalStatus::SignalReconnecting; 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) { } else if (WsStatus::WsServerClosed == ws_status) {
ws_status_ = WsStatus::WsServerClosed; ws_status_ = WsStatus::WsServerClosed;
signal_status_ = SignalStatus::SignalServerClosed; 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 { // do {
// } while (SignalStatus::SignalConnected != GetSignalStatus()); // } while (SignalStatus::SignalConnected != GetSignalStatus());
LOG_INFO("[{}] Init finish", user_id); LOG_INFO("[{}] Init finish", user_id_);
inited_ = true; inited_ = true;
return 0; return 0;
@@ -414,7 +418,8 @@ void PeerConnection::ProcessSignal(const std::string &signal) {
user_id_.data(), user_id_.size(), user_data_); user_id_.data(), user_id_.size(), user_data_);
LOG_INFO("Login success with id [{}]", user_id_); LOG_INFO("Login success with id [{}]", user_id_);
signal_status_ = SignalStatus::SignalConnected; 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<std::string>() == "fail") { } else if (j["status"].get<std::string>() == "fail") {
LOG_WARN("Login failed with id [{}]", user_id_); LOG_WARN("Login failed with id [{}]", user_id_);
} }

View File

@@ -26,7 +26,8 @@ typedef void (*OnReceiveBuffer)(const char *, size_t, const char *,
typedef void (*OnReceiveVideoFrame)(const XVideoFrame *video_frame, typedef void (*OnReceiveVideoFrame)(const XVideoFrame *video_frame,
const char *, const size_t, void *); 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, typedef void (*OnConnectionStatus)(ConnectionStatus, const char *, const size_t,
void *); void *);
@@ -60,6 +61,8 @@ typedef struct {
OnSignalStatus on_signal_status; OnSignalStatus on_signal_status;
OnConnectionStatus on_connection_status; OnConnectionStatus on_connection_status;
NetStatusReport net_status_report; NetStatusReport net_status_report;
const char *user_id;
void *user_data; void *user_data;
} PeerConnectionParams; } PeerConnectionParams;
@@ -88,7 +91,7 @@ class PeerConnection {
~PeerConnection(); ~PeerConnection();
public: public:
int Init(PeerConnectionParams params, const std::string &user_id); int Init(PeerConnectionParams params);
int Create(const std::string &transmission_id = "", int Create(const std::string &transmission_id = "",
const std::string &password = ""); const std::string &password = "");

View File

@@ -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_signal_status = params->on_signal_status;
peer_ptr->pc_params.on_connection_status = params->on_connection_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.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; peer_ptr->pc_params.user_data = params->user_data;
return peer_ptr; return peer_ptr;
@@ -51,13 +53,13 @@ void DestroyPeer(PeerPtr **peer_ptr) {
*peer_ptr = nullptr; *peer_ptr = nullptr;
} }
int Init(PeerPtr *peer_ptr, const char *user_id) { int Init(PeerPtr *peer_ptr) {
if (!peer_ptr || !peer_ptr->peer_connection) { if (!peer_ptr || !peer_ptr->peer_connection) {
LOG_ERROR("Peer connection not created"); LOG_ERROR("Peer connection not created");
return -1; return -1;
} }
peer_ptr->peer_connection->Init(peer_ptr->pc_params, user_id); peer_ptr->peer_connection->Init(peer_ptr->pc_params);
return 0; return 0;
} }