From 36f4367c7906233c4659a26a2a0844cd71bc1500 Mon Sep 17 00:00:00 2001 From: dijunkun Date: Thu, 24 Aug 2023 15:09:20 +0800 Subject: [PATCH] Set data receive interface for test --- src/interface/x.h | 3 +-- src/pc/peer_connection.cpp | 10 +++++----- src/pc/peer_connection.h | 9 ++++++--- src/rtc/x_inner.cpp | 2 +- src/transmission/ice_transmission.cpp | 15 ++++++++++----- src/transmission/ice_transmission.h | 12 +++++++----- tests/peerconnection/guest.cpp | 13 +++++++++++-- tests/peerconnection/host.cpp | 13 +++++++++++-- 8 files changed, 52 insertions(+), 25 deletions(-) diff --git a/src/interface/x.h b/src/interface/x.h index 3fadb31..29228b0 100644 --- a/src/interface/x.h +++ b/src/interface/x.h @@ -12,8 +12,7 @@ extern "C" { typedef struct Peer PeerPtr; -typedef void (*OnReceiveBuffer)(unsigned char*, size_t, const char*, - const size_t); +typedef void (*OnReceiveBuffer)(const char*, size_t, const char*, size_t); typedef void (*NetStatusReport)(const unsigned short, const unsigned short); diff --git a/src/pc/peer_connection.cpp b/src/pc/peer_connection.cpp index c0f8c11..b89fe68 100644 --- a/src/pc/peer_connection.cpp +++ b/src/pc/peer_connection.cpp @@ -9,7 +9,8 @@ using nlohmann::json; -PeerConnection::PeerConnection() {} +PeerConnection::PeerConnection(OnReceiveBuffer on_receive_buffer) + : on_receive_buffer_(on_receive_buffer) {} PeerConnection::~PeerConnection() {} @@ -36,9 +37,9 @@ int PeerConnection::Init(PeerConnectionParams params, on_receive_ws_msg_ = [this](const std::string &msg) { ProcessSignal(msg); }; - on_receive_ice_msg_ = [this](const char *data, size_t size) { - std::string msg(data, size); - LOG_INFO("Receive data: [{}]", msg.c_str()); + on_receive_ice_msg_ = [this](const char *data, size_t size, + const char *user_id, size_t user_id_size) { + on_receive_buffer_(data, size, user_id, user_id_size); }; ws_transport_ = new WsTransmission(on_receive_ws_msg_); @@ -187,7 +188,6 @@ void PeerConnection::ProcessSignal(const std::string &signal) { break; } default: { - // ice_transmission_->OnReceiveMessage(msg); break; } } diff --git a/src/pc/peer_connection.h b/src/pc/peer_connection.h index baa5d50..65f345c 100644 --- a/src/pc/peer_connection.h +++ b/src/pc/peer_connection.h @@ -9,7 +9,7 @@ enum SignalStatus { Connecting = 0, Connected, Closed }; -typedef void (*OnReceiveBuffer)(unsigned char *, size_t, const char *, +typedef void (*OnReceiveBuffer)(const char *, size_t, const char *, const size_t); typedef void (*NetStatusReport)(const unsigned short, const unsigned short); @@ -22,7 +22,7 @@ typedef struct { class PeerConnection { public: - PeerConnection(); + PeerConnection(OnReceiveBuffer on_receive_buffer); ~PeerConnection(); public: @@ -59,12 +59,15 @@ class PeerConnection { IceTransmission *ice_transmission_ = nullptr; std::map ice_transmission_list_; std::function on_receive_ws_msg_ = nullptr; - std::function on_receive_ice_msg_ = nullptr; + std::function + on_receive_ice_msg_ = nullptr; unsigned int ws_connection_id_ = 0; std::string user_id_ = ""; std::string transmission_id_ = ""; std::vector user_id_list_; SignalStatus signal_status_ = SignalStatus::Closed; + + OnReceiveBuffer on_receive_buffer_; }; #endif \ No newline at end of file diff --git a/src/rtc/x_inner.cpp b/src/rtc/x_inner.cpp index 05f64bc..5e1365f 100644 --- a/src/rtc/x_inner.cpp +++ b/src/rtc/x_inner.cpp @@ -14,7 +14,7 @@ static PeerConnection *peer_connection; PeerPtr *CreatePeer(const Params *params) { PeerPtr *peer_ptr = new PeerPtr; - peer_ptr->peer_connection = new PeerConnection(); + peer_ptr->peer_connection = new PeerConnection(params->on_receive_buffer); peer_ptr->pc_params.cfg_path = params->cfg_path; peer_ptr->pc_params.on_receive_buffer = params->on_receive_buffer; peer_ptr->pc_params.net_status_report = params->net_status_report; diff --git a/src/transmission/ice_transmission.cpp b/src/transmission/ice_transmission.cpp index a81a97a..9e09a1f 100644 --- a/src/transmission/ice_transmission.cpp +++ b/src/transmission/ice_transmission.cpp @@ -17,7 +17,8 @@ const std::vector ice_status = { IceTransmission::IceTransmission( bool offer_peer, std::string &transmission_id, std::string &user_id, std::string &remote_user_id, WsTransmission *ice_ws_transmission, - std::function on_receive_ice_msg) + std::function + on_receive_ice_msg) : offer_peer_(offer_peer), transmission_id_(transmission_id), user_id_(user_id), @@ -69,10 +70,14 @@ int IceTransmission::InitIceTransmission(std::string &ip, int port) { } }, [](juice_agent_t *agent, const char *data, size_t size, void *user_ptr) { - if (user_ptr && - static_cast(user_ptr)->on_receive_ice_msg_cb_) { - static_cast(user_ptr)->on_receive_ice_msg_cb_( - data, size); + if (user_ptr) { + IceTransmission *ice_transmission_obj = + static_cast(user_ptr); + if (ice_transmission_obj->on_receive_ice_msg_cb_) { + ice_transmission_obj->on_receive_ice_msg_cb_( + data, size, ice_transmission_obj->remote_user_id_.data(), + ice_transmission_obj->remote_user_id_.size()); + } } }, this); diff --git a/src/transmission/ice_transmission.h b/src/transmission/ice_transmission.h index f1e1b71..f4c41cf 100644 --- a/src/transmission/ice_transmission.h +++ b/src/transmission/ice_transmission.h @@ -9,10 +9,11 @@ class IceTransmission { public: - IceTransmission(bool offer_peer, std::string &transmission_id, - std::string &user_id, std::string &remote_user_id, - WsTransmission *ice_ws_transmission, - std::function on_receive_ice_msg); + IceTransmission( + bool offer_peer, std::string &transmission_id, std::string &user_id, + std::string &remote_user_id, WsTransmission *ice_ws_transmission, + std::function + on_receive_ice_msg); ~IceTransmission(); @@ -48,7 +49,8 @@ class IceTransmission { IceAgent *ice_agent_ = nullptr; WsTransmission *ice_ws_transport_ = nullptr; CongestionControl *congestion_control_ = nullptr; - std::function on_receive_ice_msg_cb_ = nullptr; + std::function + on_receive_ice_msg_cb_ = nullptr; std::string local_sdp_; std::string remote_sdp_; std::string local_candidates_; diff --git a/tests/peerconnection/guest.cpp b/tests/peerconnection/guest.cpp index e313f50..56c96a5 100644 --- a/tests/peerconnection/guest.cpp +++ b/tests/peerconnection/guest.cpp @@ -2,9 +2,18 @@ #include "x.h" +void GuestReceiveBuffer(const char* data, size_t size, const char* user_id, + size_t user_id_size) { + std::string msg(data, size); + std::string user(user_id, user_id_size); + + std::cout << "Receive: [" << user << "] " << msg << std::endl; +} + int main(int argc, char** argv) { Params params; params.cfg_path = "../../../../config/config.ini"; + params.on_receive_buffer = GuestReceiveBuffer; std::string transmission_id = "000000"; std::string user_id = argv[1]; @@ -14,12 +23,12 @@ int main(int argc, char** argv) { PeerPtr* peer = CreatePeer(¶ms); JoinConnection(peer, transmission_id.c_str(), user_id.c_str()); - std::string msg = "[" + user_id + "] Offer peer"; + std::string msg = "Hello world"; int i = 100; while (i--) { getchar(); - std::cout << "Send data: [" << msg << "]" << std::endl; + std::cout << "Send msg: " << msg << std::endl; SendData(peer, msg.data(), msg.size()); } diff --git a/tests/peerconnection/host.cpp b/tests/peerconnection/host.cpp index 8eb6e1f..a488d2e 100644 --- a/tests/peerconnection/host.cpp +++ b/tests/peerconnection/host.cpp @@ -2,21 +2,30 @@ #include "x.h" +void HostReceiveBuffer(const char* data, size_t size, const char* user_id, + size_t user_id_size) { + std::string msg(data, size); + std::string user(user_id, user_id_size); + + std::cout << "Receive: [" << user << "] " << msg << std::endl; +} + int main(int argc, char** argv) { Params params; params.cfg_path = "../../../../config/config.ini"; + params.on_receive_buffer = HostReceiveBuffer; std::string transmission_id = "000000"; std::string user_id = argv[1]; PeerPtr* peer = CreatePeer(¶ms); CreateConnection(peer, transmission_id.c_str(), user_id.c_str()); - std::string msg = "[" + user_id + "] Answer peer"; + std::string msg = "Hello world"; int i = 100; while (i--) { getchar(); - std::cout << "Send data: [" << msg << "]" << std::endl; + std::cout << "Send msg: " << msg << std::endl; SendData(peer, msg.data(), msg.size()); }