From 5792ded4ac6c075a8f238ad1052723cf87e0baee Mon Sep 17 00:00:00 2001 From: dijunkun Date: Thu, 20 Jul 2023 09:50:44 +0800 Subject: [PATCH] Modify interface --- src/{rtc/rtc.h => interface/x.h} | 16 ++++++------ src/pc/peer_connection.cpp | 4 +-- src/pc/peer_connection.h | 27 ++++++++++---------- src/rtc/rtc.cpp | 44 -------------------------------- src/rtc/x_inner.cpp | 40 +++++++++++++++++++++++++++++ src/rtc/x_inner.h | 11 ++++++++ tests/peerconnection/answer.cpp | 10 ++++---- tests/peerconnection/offer.cpp | 8 +++--- xmake.lua | 6 ++--- 9 files changed, 87 insertions(+), 79 deletions(-) rename src/{rtc/rtc.h => interface/x.h} (62%) delete mode 100644 src/rtc/rtc.cpp create mode 100644 src/rtc/x_inner.cpp create mode 100644 src/rtc/x_inner.h diff --git a/src/rtc/rtc.h b/src/interface/x.h similarity index 62% rename from src/rtc/rtc.h rename to src/interface/x.h index e04e64d..d46e277 100644 --- a/src/rtc/rtc.h +++ b/src/interface/x.h @@ -1,5 +1,5 @@ -#ifndef _RTC_H_ -#define _RTC_H_ +#ifndef _X_H_ +#define _X_H_ #include #include @@ -10,6 +10,8 @@ enum ws_status { WS_CONNECTING = 0, WS_OPEN, WS_FAILED, WS_CLOSED, WS_UNKNOWN }; extern "C" { #endif +typedef struct Peer PeerPtr; + typedef void (*OnReceiveBuffer)(unsigned char*, size_t, const char*, const size_t); @@ -21,15 +23,13 @@ typedef struct { NetStatusReport net_status_report; } Params; -int CreatePeerConnection(Params params); +PeerPtr* CreatePeer(const Params* params); -int CreatePeerConnectionWithID(Params params, const char* id); +int CreateConnection(PeerPtr* peer_ptr); -int SendData(const char* data, size_t size); +int JoinConnection(PeerPtr* peer_ptr, const char* connection_id); -int rtc(); - -int RegisterPeer(); +int SendData(PeerPtr* peer_ptr, const char* data, size_t size); #ifdef __cplusplus } diff --git a/src/pc/peer_connection.cpp b/src/pc/peer_connection.cpp index daddf93..ea123a7 100644 --- a/src/pc/peer_connection.cpp +++ b/src/pc/peer_connection.cpp @@ -19,7 +19,7 @@ PeerConnection::PeerConnection() {} PeerConnection::~PeerConnection() {} -int PeerConnection::Init(Params params) { +int PeerConnection::Init(PeerConnectionParams params) { INIReader reader(params.cfg_path); std::string cfg_signal_server_ip = reader.Get("signal server", "ip", "-1"); std::string cfg_signal_server_port = @@ -78,7 +78,7 @@ int PeerConnection::Init(Params params) { return 0; } -int PeerConnection::Init(Params params, std::string const &id) { +int PeerConnection::Init(PeerConnectionParams params, std::string const &id) { INIReader reader(params.cfg_path); std::string cfg_signal_server_ip = reader.Get("signal server", "ip", "-1"); std::string cfg_signal_server_port = diff --git a/src/pc/peer_connection.h b/src/pc/peer_connection.h index 38271aa..9a7465f 100644 --- a/src/pc/peer_connection.h +++ b/src/pc/peer_connection.h @@ -8,26 +8,25 @@ enum SignalStatus { Connecting = 0, Connected, Closed }; +typedef void (*OnReceiveBuffer)(unsigned char *, size_t, const char *, + const size_t); + +typedef void (*NetStatusReport)(const unsigned short, const unsigned short); + +typedef struct { + const char *cfg_path; + OnReceiveBuffer on_receive_buffer; + NetStatusReport net_status_report; +} PeerConnectionParams; + class PeerConnection { - public: - typedef void (*OnReceiveBuffer)(unsigned char *, size_t, const char *, - const size_t); - - typedef void (*NetStatusReport)(const unsigned short, const unsigned short); - - typedef struct { - const char *cfg_path; - OnReceiveBuffer on_receive_buffer; - NetStatusReport net_status_report; - } Params; - public: PeerConnection(); ~PeerConnection(); public: - int Init(Params params); - int Init(Params params, std::string const &id); + int Init(PeerConnectionParams params); + int Init(PeerConnectionParams params, std::string const &id); int Destroy(); SignalStatus GetSignalStatus(); diff --git a/src/rtc/rtc.cpp b/src/rtc/rtc.cpp deleted file mode 100644 index 68f3728..0000000 --- a/src/rtc/rtc.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include "rtc.h" - -#include - -#include "ice_agent.h" -#include "log.h" -#include "nlohmann/json.hpp" -#include "peer_connection.h" -#include "ws_transport.h" - -using nlohmann::json; - -static PeerConnection *peer_connection; - -int CreatePeerConnection(Params params) { - PeerConnection::Params pc_params; - pc_params.cfg_path = params.cfg_path; - pc_params.on_receive_buffer = params.on_receive_buffer; - pc_params.net_status_report = params.net_status_report; - - peer_connection = new PeerConnection(); - peer_connection->Init(pc_params); - - return 0; -} - -int CreatePeerConnectionWithID(Params params, const char *id) { - PeerConnection::Params pc_params; - pc_params.cfg_path = params.cfg_path; - pc_params.on_receive_buffer = params.on_receive_buffer; - pc_params.net_status_report = params.net_status_report; - - peer_connection = new PeerConnection(); - peer_connection->Init(pc_params, id); - - return 0; -} - -int SendData(const char *data, size_t size) { - peer_connection->SendData(data, size); - return 0; -} - -int rtc() { return 0; } \ No newline at end of file diff --git a/src/rtc/x_inner.cpp b/src/rtc/x_inner.cpp new file mode 100644 index 0000000..794c453 --- /dev/null +++ b/src/rtc/x_inner.cpp @@ -0,0 +1,40 @@ +#include "x_inner.h" + +#include +#include + +#include "ice_agent.h" +#include "log.h" +#include "ws_transport.h" +#include "x.h" + +using nlohmann::json; + +static PeerConnection *peer_connection; + +PeerPtr *CreatePeer(const Params *params) { + PeerPtr *peer_ptr = new PeerPtr; + peer_ptr->peer_connection = new PeerConnection(); + 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; + + return peer_ptr; +} + +int CreateConnection(PeerPtr *peer_ptr) { + peer_ptr->peer_connection->Init(peer_ptr->pc_params); + return 0; +} + +int JoinConnection(PeerPtr *peer_ptr, const char *connection_id) { + peer_ptr->peer_connection->Init(peer_ptr->pc_params, connection_id); + return 0; +} + +int SendData(PeerPtr *peer_ptr, const char *data, size_t size) { + peer_ptr->peer_connection->SendData(data, size); + return 0; +} + +int rtc() { return 0; } \ No newline at end of file diff --git a/src/rtc/x_inner.h b/src/rtc/x_inner.h new file mode 100644 index 0000000..bf65c53 --- /dev/null +++ b/src/rtc/x_inner.h @@ -0,0 +1,11 @@ +#ifndef _X_INNER_H_ +#define _X_INNER_H_ + +#include "peer_connection.h" + +struct Peer { + PeerConnection *peer_connection; + PeerConnectionParams pc_params; +}; + +#endif \ No newline at end of file diff --git a/tests/peerconnection/answer.cpp b/tests/peerconnection/answer.cpp index 0db10be..1217146 100644 --- a/tests/peerconnection/answer.cpp +++ b/tests/peerconnection/answer.cpp @@ -1,13 +1,13 @@ #include -#include "rtc.h" +#include "x.h" -int main(int argc, char **argv) { +int main(int argc, char** argv) { Params params; params.cfg_path = "../../../../config/config.ini"; - CreatePeerConnectionWithID(params, "000000"); - std::cout << "Finish CreatePeerConnectionWithID" << std::endl; + PeerPtr* peer = CreatePeer(¶ms); + JoinConnection(peer, "000000"); std::string msg = "Hello world"; @@ -15,7 +15,7 @@ int main(int argc, char **argv) { while (i--) { getchar(); std::cout << "Send data: [" << msg << "]" << std::endl; - SendData(msg.data(), msg.size()); + SendData(peer, msg.data(), msg.size()); } getchar(); diff --git a/tests/peerconnection/offer.cpp b/tests/peerconnection/offer.cpp index 72fc5e7..aea2b98 100644 --- a/tests/peerconnection/offer.cpp +++ b/tests/peerconnection/offer.cpp @@ -1,11 +1,13 @@ #include -#include "rtc.h" +#include "x.h" -int main(int argc, char **argv) { +int main(int argc, char** argv) { Params params; params.cfg_path = "../../../../config/config.ini"; - CreatePeerConnection(params); + + PeerPtr* peer = CreatePeer(¶ms); + CreateConnection(peer); getchar(); return 0; diff --git a/xmake.lua b/xmake.lua index fabdeaf..b930a95 100644 --- a/xmake.lua +++ b/xmake.lua @@ -66,7 +66,7 @@ target("projectx") add_deps("ice", "ws", "pc") add_files("src/rtc/*.cpp") add_packages("asio", "nlohmann_json") - add_includedirs("src/rtc", "src/ice", "src/ws", "src/pc") + add_includedirs("src/rtc", "src/ice", "src/ws", "src/pc", "src/interface") add_rules("utils.symbols.export_all", {export_classes = true}) -- set_policy("build.merge_archive", true) -- set_targetdir("$(projectdir)/libdrtc/lib") @@ -82,10 +82,10 @@ target("Offer") set_kind("binary") add_deps("projectx") add_files("tests/peerconnection/offer.cpp") - add_includedirs("src/rtc") + add_includedirs("src/interface") target("Answer") set_kind("binary") add_deps("projectx") add_files("tests/peerconnection/answer.cpp") - add_includedirs("src/rtc") \ No newline at end of file + add_includedirs("src/interface") \ No newline at end of file