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 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);

View File

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

View File

@@ -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<std::string, IceTransmission *> ice_transmission_list_;
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;
std::string user_id_ = "";
std::string transmission_id_ = "";
std::vector<std::string> user_id_list_;
SignalStatus signal_status_ = SignalStatus::Closed;
OnReceiveBuffer on_receive_buffer_;
};
#endif

View File

@@ -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;

View File

@@ -17,7 +17,8 @@ const std::vector<std::string> 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<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),
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<IceTransmission *>(user_ptr)->on_receive_ice_msg_cb_) {
static_cast<IceTransmission *>(user_ptr)->on_receive_ice_msg_cb_(
data, size);
if (user_ptr) {
IceTransmission *ice_transmission_obj =
static_cast<IceTransmission *>(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);

View File

@@ -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<void(const char *, size_t)> 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<void(const char *, size_t, const char *, size_t)>
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<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 remote_sdp_;
std::string local_candidates_;

View File

@@ -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(&params);
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());
}

View File

@@ -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(&params);
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());
}