Added TCP transport

This commit is contained in:
Paul-Louis Ageneau
2020-03-11 23:20:24 +01:00
parent 2500a64db2
commit d3a2a88301
4 changed files with 297 additions and 0 deletions

View File

@ -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);