mirror of
https://github.com/mii443/libdatachannel.git
synced 2025-09-01 14:49:25 +00:00
Added available and availableSize getters on DataChannel
This commit is contained in:
@ -46,6 +46,9 @@ public:
|
||||
void send(const byte *data, size_t size);
|
||||
std::optional<std::variant<binary, string>> receive();
|
||||
|
||||
size_t available() const;
|
||||
size_t availableSize() const;
|
||||
|
||||
unsigned int stream() const;
|
||||
string label() const;
|
||||
string protocol() const;
|
||||
@ -69,6 +72,7 @@ private:
|
||||
std::atomic<bool> mIsClosed = false;
|
||||
|
||||
Queue<message_ptr> mRecvQueue;
|
||||
std::atomic<size_t> mRecvSize = 0;
|
||||
|
||||
friend class PeerConnection;
|
||||
};
|
||||
|
@ -118,9 +118,11 @@ std::optional<std::variant<binary, string>> DataChannel::receive() {
|
||||
break;
|
||||
}
|
||||
case Message::String:
|
||||
mRecvSize -= message->size();
|
||||
return std::make_optional(
|
||||
string(reinterpret_cast<const char *>(message->data()), message->size()));
|
||||
case Message::Binary:
|
||||
mRecvSize -= message->size();
|
||||
return std::make_optional(std::move(*message));
|
||||
}
|
||||
}
|
||||
@ -128,6 +130,10 @@ std::optional<std::variant<binary, string>> DataChannel::receive() {
|
||||
return nullopt;
|
||||
}
|
||||
|
||||
size_t DataChannel::available() const { return mRecvQueue.size(); }
|
||||
|
||||
size_t DataChannel::availableSize() const { return mRecvSize; }
|
||||
|
||||
unsigned int DataChannel::stream() const { return mStream; }
|
||||
|
||||
string DataChannel::label() const { return mLabel; }
|
||||
@ -197,6 +203,7 @@ void DataChannel::incoming(message_ptr message) {
|
||||
}
|
||||
case Message::String:
|
||||
case Message::Binary:
|
||||
mRecvSize += message->size();
|
||||
mRecvQueue.push(message);
|
||||
triggerAvailable(mRecvQueue.size());
|
||||
break;
|
||||
|
Reference in New Issue
Block a user