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