소스 검색

Made messages mutable to prevent copy

Paul-Louis Ageneau 5 년 전
부모
커밋
edd04d896d
8개의 변경된 파일6개의 추가작업 그리고 16개의 파일을 삭제
  1. 1 1
      include/rtc/datachannel.hpp
  2. 1 2
      include/rtc/message.hpp
  3. 1 1
      include/rtc/websocket.hpp
  4. 1 1
      src/datachannel.cpp
  5. 1 1
      src/dtlstransport.hpp
  6. 1 1
      src/websocket.cpp
  7. 0 8
      src/wstransport.cpp
  8. 0 1
      src/wstransport.hpp

+ 1 - 1
include/rtc/datachannel.hpp

@@ -66,7 +66,7 @@ public:
 private:
 	void remoteClose();
 	void open(std::shared_ptr<SctpTransport> transport);
-	bool outgoing(mutable_message_ptr message);
+	bool outgoing(message_ptr message);
 	void incoming(message_ptr message);
 	void processOpenMessage(message_ptr message);
 

+ 1 - 2
include/rtc/message.hpp

@@ -42,8 +42,7 @@ struct Message : binary {
 	std::shared_ptr<Reliability> reliability;
 };
 
-using message_ptr = std::shared_ptr<const Message>;
-using mutable_message_ptr = std::shared_ptr<Message>;
+using message_ptr = std::shared_ptr<Message>;
 using message_callback = std::function<void(message_ptr message)>;
 
 constexpr auto message_size_func = [](const message_ptr &m) -> size_t {

+ 1 - 1
include/rtc/websocket.hpp

@@ -68,7 +68,7 @@ public:
 private:
 	bool changeState(State state);
 	void remoteClose();
-	bool outgoing(mutable_message_ptr message);
+	bool outgoing(message_ptr message);
 	void incoming(message_ptr message);
 
 	std::shared_ptr<TcpTransport> initTcpTransport();

+ 1 - 1
src/datachannel.cpp

@@ -196,7 +196,7 @@ void DataChannel::open(shared_ptr<SctpTransport> transport) {
 	transport->send(make_message(buffer.begin(), buffer.end(), Message::Control, mStream));
 }
 
-bool DataChannel::outgoing(mutable_message_ptr message) {
+bool DataChannel::outgoing(message_ptr message) {
 	if (mIsClosed)
 		throw std::runtime_error("DataChannel is closed");
 

+ 1 - 1
src/dtlstransport.hpp

@@ -55,7 +55,7 @@ public:
 	virtual bool stop() override;
 	virtual bool send(message_ptr message) override; // false if dropped
 
-private:
+protected:
 	virtual void incoming(message_ptr message) override;
 
 	void runRecvLoop();

+ 1 - 1
src/websocket.cpp

@@ -127,7 +127,7 @@ size_t WebSocket::availableAmount() const { return mRecvQueue.amount(); }
 
 bool WebSocket::changeState(State state) { return mState.exchange(state) != state; }
 
-bool WebSocket::outgoing(mutable_message_ptr message) {
+bool WebSocket::outgoing(message_ptr message) {
 	if (mState != State::Open || !mWsTransport)
 		throw std::runtime_error("WebSocket is not open");
 

+ 0 - 8
src/wstransport.cpp

@@ -75,14 +75,6 @@ bool WsTransport::stop() {
 }
 
 bool WsTransport::send(message_ptr message) {
-	if (!message)
-		return false;
-
-	// Call the mutable message overload with a copy
-	return send(std::make_shared<Message>(*message));
-}
-
-bool WsTransport::send(mutable_message_ptr message) {
 	if (!message || state() != State::Connected)
 		return false;
 

+ 0 - 1
src/wstransport.hpp

@@ -37,7 +37,6 @@ public:
 
 	bool stop() override;
 	bool send(message_ptr message) override;
-	bool send(mutable_message_ptr message);
 
 	void incoming(message_ptr message) override;