Set data receive interface for test

This commit is contained in:
dijunkun
2023-08-24 15:09:20 +08:00
parent 28560cbac3
commit 36f4367c79
8 changed files with 52 additions and 25 deletions

View File

@@ -12,8 +12,7 @@ extern "C" {
typedef struct Peer PeerPtr; typedef struct Peer PeerPtr;
typedef void (*OnReceiveBuffer)(unsigned char*, size_t, const char*, typedef void (*OnReceiveBuffer)(const char*, size_t, const char*, size_t);
const size_t);
typedef void (*NetStatusReport)(const unsigned short, const unsigned short); typedef void (*NetStatusReport)(const unsigned short, const unsigned short);

View File

@@ -9,7 +9,8 @@
using nlohmann::json; using nlohmann::json;
PeerConnection::PeerConnection() {} PeerConnection::PeerConnection(OnReceiveBuffer on_receive_buffer)
: on_receive_buffer_(on_receive_buffer) {}
PeerConnection::~PeerConnection() {} PeerConnection::~PeerConnection() {}
@@ -36,9 +37,9 @@ int PeerConnection::Init(PeerConnectionParams params,
on_receive_ws_msg_ = [this](const std::string &msg) { ProcessSignal(msg); }; on_receive_ws_msg_ = [this](const std::string &msg) { ProcessSignal(msg); };
on_receive_ice_msg_ = [this](const char *data, size_t size) { on_receive_ice_msg_ = [this](const char *data, size_t size,
std::string msg(data, size); const char *user_id, size_t user_id_size) {
LOG_INFO("Receive data: [{}]", msg.c_str()); on_receive_buffer_(data, size, user_id, user_id_size);
}; };
ws_transport_ = new WsTransmission(on_receive_ws_msg_); ws_transport_ = new WsTransmission(on_receive_ws_msg_);
@@ -187,7 +188,6 @@ void PeerConnection::ProcessSignal(const std::string &signal) {
break; break;
} }
default: { default: {
// ice_transmission_->OnReceiveMessage(msg);
break; break;
} }
} }

View File

@@ -9,7 +9,7 @@
enum SignalStatus { Connecting = 0, Connected, Closed }; 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); const size_t);
typedef void (*NetStatusReport)(const unsigned short, const unsigned short); typedef void (*NetStatusReport)(const unsigned short, const unsigned short);
@@ -22,7 +22,7 @@ typedef struct {
class PeerConnection { class PeerConnection {
public: public:
PeerConnection(); PeerConnection(OnReceiveBuffer on_receive_buffer);
~PeerConnection(); ~PeerConnection();
public: public:
@@ -59,12 +59,15 @@ class PeerConnection {
IceTransmission *ice_transmission_ = nullptr; IceTransmission *ice_transmission_ = nullptr;
std::map<std::string, IceTransmission *> ice_transmission_list_; std::map<std::string, IceTransmission *> ice_transmission_list_;
std::function<void(const std::string &)> on_receive_ws_msg_ = nullptr; std::function<void(const std::string &)> on_receive_ws_msg_ = nullptr;
std::function<void(const char *, size_t)> on_receive_ice_msg_ = nullptr; std::function<void(const char *, size_t, const char *, size_t)>
on_receive_ice_msg_ = nullptr;
unsigned int ws_connection_id_ = 0; unsigned int ws_connection_id_ = 0;
std::string user_id_ = ""; std::string user_id_ = "";
std::string transmission_id_ = ""; std::string transmission_id_ = "";
std::vector<std::string> user_id_list_; std::vector<std::string> user_id_list_;
SignalStatus signal_status_ = SignalStatus::Closed; SignalStatus signal_status_ = SignalStatus::Closed;
OnReceiveBuffer on_receive_buffer_;
}; };
#endif #endif

View File

@@ -14,7 +14,7 @@ static PeerConnection *peer_connection;
PeerPtr *CreatePeer(const Params *params) { PeerPtr *CreatePeer(const Params *params) {
PeerPtr *peer_ptr = new PeerPtr; 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.cfg_path = params->cfg_path;
peer_ptr->pc_params.on_receive_buffer = params->on_receive_buffer; peer_ptr->pc_params.on_receive_buffer = params->on_receive_buffer;
peer_ptr->pc_params.net_status_report = params->net_status_report; peer_ptr->pc_params.net_status_report = params->net_status_report;

View File

@@ -17,7 +17,8 @@ const std::vector<std::string> ice_status = {
IceTransmission::IceTransmission( IceTransmission::IceTransmission(
bool offer_peer, std::string &transmission_id, std::string &user_id, bool offer_peer, std::string &transmission_id, std::string &user_id,
std::string &remote_user_id, WsTransmission *ice_ws_transmission, std::string &remote_user_id, WsTransmission *ice_ws_transmission,
std::function<void(const char *, size_t)> on_receive_ice_msg) std::function<void(const char *, size_t, const char *, size_t)>
on_receive_ice_msg)
: offer_peer_(offer_peer), : offer_peer_(offer_peer),
transmission_id_(transmission_id), transmission_id_(transmission_id),
user_id_(user_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) { [](juice_agent_t *agent, const char *data, size_t size, void *user_ptr) {
if (user_ptr && if (user_ptr) {
static_cast<IceTransmission *>(user_ptr)->on_receive_ice_msg_cb_) { IceTransmission *ice_transmission_obj =
static_cast<IceTransmission *>(user_ptr)->on_receive_ice_msg_cb_( static_cast<IceTransmission *>(user_ptr);
data, size); 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); this);

View File

@@ -9,10 +9,11 @@
class IceTransmission { class IceTransmission {
public: public:
IceTransmission(bool offer_peer, std::string &transmission_id, IceTransmission(
std::string &user_id, std::string &remote_user_id, bool offer_peer, std::string &transmission_id, std::string &user_id,
WsTransmission *ice_ws_transmission, std::string &remote_user_id, WsTransmission *ice_ws_transmission,
std::function<void(const char *, size_t)> on_receive_ice_msg); std::function<void(const char *, size_t, const char *, size_t)>
on_receive_ice_msg);
~IceTransmission(); ~IceTransmission();
@@ -48,7 +49,8 @@ class IceTransmission {
IceAgent *ice_agent_ = nullptr; IceAgent *ice_agent_ = nullptr;
WsTransmission *ice_ws_transport_ = nullptr; WsTransmission *ice_ws_transport_ = nullptr;
CongestionControl *congestion_control_ = nullptr; CongestionControl *congestion_control_ = nullptr;
std::function<void(const char *, size_t)> on_receive_ice_msg_cb_ = nullptr; std::function<void(const char *, size_t, const char *, size_t)>
on_receive_ice_msg_cb_ = nullptr;
std::string local_sdp_; std::string local_sdp_;
std::string remote_sdp_; std::string remote_sdp_;
std::string local_candidates_; std::string local_candidates_;

View File

@@ -2,9 +2,18 @@
#include "x.h" #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) { int main(int argc, char** argv) {
Params params; Params params;
params.cfg_path = "../../../../config/config.ini"; params.cfg_path = "../../../../config/config.ini";
params.on_receive_buffer = GuestReceiveBuffer;
std::string transmission_id = "000000"; std::string transmission_id = "000000";
std::string user_id = argv[1]; std::string user_id = argv[1];
@@ -14,12 +23,12 @@ int main(int argc, char** argv) {
PeerPtr* peer = CreatePeer(&params); PeerPtr* peer = CreatePeer(&params);
JoinConnection(peer, transmission_id.c_str(), user_id.c_str()); 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; int i = 100;
while (i--) { while (i--) {
getchar(); getchar();
std::cout << "Send data: [" << msg << "]" << std::endl; std::cout << "Send msg: " << msg << std::endl;
SendData(peer, msg.data(), msg.size()); SendData(peer, msg.data(), msg.size());
} }

View File

@@ -2,21 +2,30 @@
#include "x.h" #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) { int main(int argc, char** argv) {
Params params; Params params;
params.cfg_path = "../../../../config/config.ini"; params.cfg_path = "../../../../config/config.ini";
params.on_receive_buffer = HostReceiveBuffer;
std::string transmission_id = "000000"; std::string transmission_id = "000000";
std::string user_id = argv[1]; std::string user_id = argv[1];
PeerPtr* peer = CreatePeer(&params); PeerPtr* peer = CreatePeer(&params);
CreateConnection(peer, transmission_id.c_str(), user_id.c_str()); 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; int i = 100;
while (i--) { while (i--) {
getchar(); getchar();
std::cout << "Send data: [" << msg << "]" << std::endl; std::cout << "Send msg: " << msg << std::endl;
SendData(peer, msg.data(), msg.size()); SendData(peer, msg.data(), msg.size());
} }