summary refs log tree commit diff
path: root/src/rtcPeerHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/rtcPeerHandler.cpp')
-rw-r--r--src/rtcPeerHandler.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/rtcPeerHandler.cpp b/src/rtcPeerHandler.cpp
new file mode 100644

index 00000000..4696c4c7 --- /dev/null +++ b/src/rtcPeerHandler.cpp
@@ -0,0 +1,57 @@ +#include "rtcPeerHandler.hpp" +rtcPeerHandler::rtcPeerHandler() +{ + rtc::InitLogger(rtc::LogLevel::Verbose, NULL); +} + +void rtcPeerHandler::initiateConnection(std::string peerIP, int peerPort) +{ + //Socket connection between client and server + SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0); + sockaddr_in addr; + addr.sin_addr.s_addr = inet_addr(peerIP.c_str()); + addr.sin_port = htons(peerPort); + addr.sin_family = AF_INET; + + rtc::Configuration conf; + conf.enableIceTcp = false; + conf.disableAutoNegotiation = false; + + auto pc = std::make_shared<rtc::PeerConnection>(conf); + + rtc::Description::Audio media("audio", rtc::Description::Direction::SendRecv); + media.addOpusCodec(96); + media.setBitrate(64); + + + auto track = pc->addTrack(media); + + //auto session = std::make_shared<rtc::MediaHandler>(); + + //track->setMediaHandler(session); + + rtc::Reliability rtcRel; + rtcRel.unordered = true; + rtcRel.type = rtc::Reliability::Type::Timed; + rtcRel.rexmit = 500; + + rtc::DataChannelInit rtcConf; + rtcConf.reliability = rtcRel; + rtcConf.negotiated = false; + + pc->onStateChange([](rtc::PeerConnection::State state) { + std::cout << "State: " << state << std::endl; + if (state == rtc::PeerConnection::State::Disconnected || + state == rtc::PeerConnection::State::Failed || + state == rtc::PeerConnection::State::Closed) { + // remove disconnected client + } + }); + + pc->onGatheringStateChange( + [](rtc::PeerConnection::GatheringState state) { std::cout << "Gathering State: " << state << std::endl; }); + + + pc->createDataChannel("Fosscord voice connection", rtcConf); +} + \ No newline at end of file