Skip to content

Commit

Permalink
refactor: make signaling service base
Browse files Browse the repository at this point in the history
  • Loading branch information
TzuHuanTai committed Nov 21, 2023
1 parent c7387ff commit 183561e
Show file tree
Hide file tree
Showing 10 changed files with 292 additions and 292 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ else()
capture
track
v4l2_codecs
signaling
)
target_link_libraries(${PROJECT_NAME}
${WEBRTC_LINK_LIBS}
Expand Down
4 changes: 2 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ project(src)
add_subdirectory(capture)
add_subdirectory(track)
add_subdirectory(v4l2_codecs)
add_subdirectory(signaling)

add_library(${PROJECT_NAME})
target_sources(${PROJECT_NAME}
Expand All @@ -11,7 +12,6 @@ target_sources(${PROJECT_NAME}
customized_video_encoder_factory.cpp
data_channel_subject.cpp
parser.cpp
signal_server.cpp
)

target_link_libraries(${PROJECT_NAME} capture track v4l2_codecs)
target_link_libraries(${PROJECT_NAME} capture track v4l2_codecs signaling)
2 changes: 0 additions & 2 deletions src/conductor.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,7 @@ class Conductor : public webrtc::PeerConnectionObserver
typedef std::function<void(webrtc::RTCError)> OnFailureFunc;
typedef std::function<void(webrtc::SessionDescriptionInterface *desc)> OnCreateSuccessFunc;

typedef std::function<void(std::string)> InvokeSdpFunc;
typedef std::function<void(std::string, int, std::string)> InvokeIceFunc;
InvokeSdpFunc invoke_answer_sdp;
InvokeIceFunc invoke_answer_ice;
OnSetSuccessFunc complete_signaling;

Expand Down
10 changes: 5 additions & 5 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#include "args.h"
#include "conductor.h"
#include "parser.h"
#include "signal_server.h"
#include "signaling/signalr_server.h"

int main(int argc, char *argv[])
{
Expand All @@ -20,10 +20,10 @@ int main(int argc, char *argv[])
conductor->CreatePeerConnection();

std::cout << "=> main: start signalr! url: " << args.signaling_url << std::endl;
SignalServer signalr(args.signaling_url, conductor);
signalr.WithReconnect()
.DisconnectWhenCompleted()
.JoinAsServer();
SignalrService signalr(args.signaling_url, conductor);
signalr.AutoReconnect()
.DisconnectOnCompleted()
.Connect();

std::cout << "=> main: wait for ready streaming!" << std::endl;
std::unique_lock<std::mutex> lock(conductor->mtx);
Expand Down
265 changes: 0 additions & 265 deletions src/signal_server.cpp

This file was deleted.

7 changes: 7 additions & 0 deletions src/signaling/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
project(signaling)

aux_source_directory(${PROJECT_SOURCE_DIR} TRACK_FILES)

add_library(${PROJECT_NAME} ${TRACK_FILES})

target_link_libraries(${PROJECT_NAME})
28 changes: 28 additions & 0 deletions src/signaling/signaling_service.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#include "signaling_service.h"

SignalingService::SignalingService(std::shared_ptr<Conductor> conductor)
: conductor_(conductor) {
InitIceCallback();
}

void SignalingService::OnRemoteSdp(std::string sdp) {
conductor_->SetOfferSDP(sdp, [this]() {
conductor_->CreateAnswer([this](webrtc::SessionDescriptionInterface *desc) {
std::string answer_sdp;
desc->ToString(&answer_sdp);
AnswerLocalSdp(answer_sdp);
}, nullptr);
}, nullptr);
}

void SignalingService::OnRemoteIce(std::string sdp_mid, int sdp_mline_index, std::string candidate) {
// bug: Failed to apply the received candidate. connect but without datachannel!?
// conductor_->AddIceCandidate(sdp_mid, sdp_mline_index, candidate);
}

void SignalingService::InitIceCallback() {
conductor_->invoke_answer_ice =
[this](std::string sdp_mid, int sdp_mline_index, std::string candidate) {
AnswerLocalIce(sdp_mid, sdp_mline_index, candidate);
};
}
28 changes: 28 additions & 0 deletions src/signaling/signaling_service.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#ifndef SIGNALING_SERVICE_H_
#define SIGNALING_SERVICE_H_

#include "conductor.h"

#include <string>

class SignalingService {
public:
SignalingService(std::shared_ptr<Conductor> conductor);
virtual ~SignalingService() {};

protected:
std::shared_ptr<Conductor> conductor_;
void OnRemoteSdp(std::string sdp);
void OnRemoteIce(std::string sdp_mid, int sdp_mline_index, std::string candidate);
virtual void AnswerLocalSdp(std::string sdp) = 0;
virtual void AnswerLocalIce(std::string sdp_mid,
int sdp_mline_index,
std::string candidate) = 0;
virtual void Connect() = 0;
virtual void Disconnect() = 0;

private:
void InitIceCallback();
};

#endif
Loading

0 comments on commit 183561e

Please sign in to comment.