1- #include " rtc/data_channel_subject .h"
1+ #include " rtc/rtc_channel .h"
22
33#include " common/logging.h"
44
55const int CHUNK_SIZE = 65536 ;
66
7- std::shared_ptr<DataChannelSubject >
8- DataChannelSubject ::Create (rtc::scoped_refptr<webrtc::DataChannelInterface> data_channel) {
9- return std::make_shared<DataChannelSubject >(std::move (data_channel));
7+ std::shared_ptr<RtcChannel >
8+ RtcChannel ::Create (rtc::scoped_refptr<webrtc::DataChannelInterface> data_channel) {
9+ return std::make_shared<RtcChannel >(std::move (data_channel));
1010}
1111
12- DataChannelSubject::DataChannelSubject (
12+ RtcChannel::RtcChannel (
1313 rtc::scoped_refptr<webrtc::DataChannelInterface> data_channel) {
1414 data_channel_ = std::move (data_channel);
1515 label_ = data_channel_->label ();
1616 data_channel_->RegisterObserver (this );
1717}
1818
19- DataChannelSubject ::~DataChannelSubject () {
19+ RtcChannel ::~RtcChannel () {
2020 DEBUG_PRINT (" datachannel (%s) is released!" , label_.c_str ());
2121}
2222
23- std::string DataChannelSubject ::label () const { return label_; }
23+ std::string RtcChannel ::label () const { return label_; }
2424
25- void DataChannelSubject ::OnStateChange () {
25+ void RtcChannel ::OnStateChange () {
2626 webrtc::DataChannelInterface::DataState state = data_channel_->state ();
2727 DEBUG_PRINT (" [%s] OnStateChange => %s" , data_channel_->label ().c_str (),
2828 webrtc::DataChannelInterface::DataStateString (state));
2929}
3030
31- void DataChannelSubject ::Terminate () {
31+ void RtcChannel ::Terminate () {
3232 UnSubscribe ();
3333 data_channel_->UnregisterObserver ();
3434 data_channel_->Close ();
@@ -37,19 +37,19 @@ void DataChannelSubject::Terminate() {
3737 }
3838}
3939
40- void DataChannelSubject ::OnClosed (std::function<void (const std::string &)> func) {
40+ void RtcChannel ::OnClosed (std::function<void (const std::string &)> func) {
4141 on_closed_func_ = std::move (func);
4242}
4343
44- void DataChannelSubject ::OnMessage (const webrtc::DataBuffer &buffer) {
44+ void RtcChannel ::OnMessage (const webrtc::DataBuffer &buffer) {
4545 const uint8_t *data = buffer.data .data <uint8_t >();
4646 size_t length = buffer.data .size ();
4747 std::string message (reinterpret_cast <const char *>(data), length);
4848
4949 Next (message);
5050}
5151
52- void DataChannelSubject ::RegisterHandler (CommandType type, ChannelCommandHandler func) {
52+ void RtcChannel ::RegisterHandler (CommandType type, ChannelCommandHandler func) {
5353 auto observer = AsObservable (type);
5454 observer->Subscribe ([self = shared_from_this (), func](std::string message) {
5555 if (!message.empty ()) {
@@ -58,7 +58,7 @@ void DataChannelSubject::RegisterHandler(CommandType type, ChannelCommandHandler
5858 });
5959}
6060
61- void DataChannelSubject ::RegisterHandler (CommandType type, PayloadHandler func) {
61+ void RtcChannel ::RegisterHandler (CommandType type, PayloadHandler func) {
6262 auto observer = AsObservable (type);
6363 observer->Subscribe ([func](std::string message) {
6464 if (!message.empty ()) {
@@ -67,7 +67,7 @@ void DataChannelSubject::RegisterHandler(CommandType type, PayloadHandler func)
6767 });
6868}
6969
70- void DataChannelSubject ::Next (std::string message) {
70+ void RtcChannel ::Next (std::string message) {
7171 try {
7272 json jsonObj = json::parse (message.c_str ());
7373
@@ -92,26 +92,26 @@ void DataChannelSubject::Next(std::string message) {
9292 }
9393}
9494
95- std::shared_ptr<Observable<std::string>> DataChannelSubject ::AsObservable () {
95+ std::shared_ptr<Observable<std::string>> RtcChannel ::AsObservable () {
9696 auto observer = std::make_shared<Observable<std::string>>();
9797 observers_map_[CommandType::CUSTOM].push_back (observer);
9898 return observer;
9999}
100100
101- std::shared_ptr<Observable<std::string>> DataChannelSubject ::AsObservable (CommandType type) {
101+ std::shared_ptr<Observable<std::string>> RtcChannel ::AsObservable (CommandType type) {
102102 auto observer = std::make_shared<Observable<std::string>>();
103103 observers_map_[type].push_back (observer);
104104 return observer;
105105}
106106
107- void DataChannelSubject ::UnSubscribe () {
107+ void RtcChannel ::UnSubscribe () {
108108 for (auto &[type, observers] : observers_map_) {
109109 observers.clear ();
110110 }
111111 observers_map_.clear ();
112112}
113113
114- void DataChannelSubject ::Send (CommandType type, const uint8_t *data, size_t size) {
114+ void RtcChannel ::Send (CommandType type, const uint8_t *data, size_t size) {
115115 int bytes_read = 0 ;
116116 const size_t header_size = sizeof (CommandType);
117117
@@ -139,7 +139,7 @@ void DataChannelSubject::Send(CommandType type, const uint8_t *data, size_t size
139139 }
140140}
141141
142- void DataChannelSubject ::Send (const uint8_t *data, size_t size) {
142+ void RtcChannel ::Send (const uint8_t *data, size_t size) {
143143 if (data_channel_->state () != webrtc::DataChannelInterface::kOpen ) {
144144 return ;
145145 }
@@ -148,7 +148,7 @@ void DataChannelSubject::Send(const uint8_t *data, size_t size) {
148148 data_channel_->Send (data_buffer);
149149}
150150
151- void DataChannelSubject ::Send (MetaMessage metadata) {
151+ void RtcChannel ::Send (MetaMessage metadata) {
152152 if (metadata.path .empty ()) {
153153 return ;
154154 }
@@ -164,7 +164,7 @@ void DataChannelSubject::Send(MetaMessage metadata) {
164164 Send (type, nullptr , 0 );
165165}
166166
167- void DataChannelSubject ::Send (Buffer image) {
167+ void RtcChannel ::Send (Buffer image) {
168168 auto type = CommandType::SNAPSHOT;
169169 const int file_size = image.length ;
170170 std::string size_str = std::to_string (file_size);
@@ -175,7 +175,7 @@ void DataChannelSubject::Send(Buffer image) {
175175 DEBUG_PRINT (" Image sent: %d bytes" , file_size);
176176}
177177
178- void DataChannelSubject ::Send (std::ifstream &file) {
178+ void RtcChannel ::Send (std::ifstream &file) {
179179 std::vector<char > buffer (CHUNK_SIZE);
180180 int bytes_read = 0 ;
181181 int count = 0 ;
@@ -205,7 +205,7 @@ void DataChannelSubject::Send(std::ifstream &file) {
205205 Send (type, nullptr , 0 );
206206}
207207
208- void DataChannelSubject ::Send (const std::string &message) {
208+ void RtcChannel ::Send (const std::string &message) {
209209 auto type = CommandType::CUSTOM;
210210 auto body = message;
211211 int body_size = message.length ();
0 commit comments