mirror of
https://github.com/mii443/libdatachannel.git
synced 2025-08-22 23:25:33 +00:00
Added TCP transport
This commit is contained in:
@ -44,6 +44,7 @@ public:
|
||||
void push(T element);
|
||||
std::optional<T> pop();
|
||||
std::optional<T> peek();
|
||||
std::optional<T> exchange(T element);
|
||||
bool wait(const std::optional<std::chrono::milliseconds> &duration = nullopt);
|
||||
|
||||
private:
|
||||
@ -118,6 +119,16 @@ template <typename T> std::optional<T> Queue<T>::peek() {
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T> std::optional<T> Queue<T>::exchange(T element) {
|
||||
std::unique_lock lock(mMutex);
|
||||
if (!mQueue.empty()) {
|
||||
std::swap(mQueue.front(), element);
|
||||
return std::optional<T>{element};
|
||||
} else {
|
||||
return nullopt;
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
bool Queue<T>::wait(const std::optional<std::chrono::milliseconds> &duration) {
|
||||
std::unique_lock lock(mMutex);
|
||||
|
Reference in New Issue
Block a user