[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*,
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);

View File

@@ -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<std::string>() == "fail") {
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,
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 = "");

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_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;
}