summaryrefslogtreecommitdiff
path: root/src/blucat/job_queue.cpp
diff options
context:
space:
mode:
authorFrederico Linhares <fred@linhares.blue>2024-12-31 12:32:36 -0300
committerFrederico Linhares <fred@linhares.blue>2024-12-31 19:03:51 -0300
commit736637680ac7b2cd0d0b878401a7e044fde0ee6a (patch)
treebf4feaf3f3f0e48207bf7a31ad8bcbff0f244091 /src/blucat/job_queue.cpp
parent083e64da1d4b5b68579288bc1690ca90d3f0a2c0 (diff)
refa Split BluCat into several namespacesHEADmaster
Diffstat (limited to 'src/blucat/job_queue.cpp')
-rw-r--r--src/blucat/job_queue.cpp61
1 files changed, 0 insertions, 61 deletions
diff --git a/src/blucat/job_queue.cpp b/src/blucat/job_queue.cpp
deleted file mode 100644
index 49bf34f..0000000
--- a/src/blucat/job_queue.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2022 Frederico de Oliveira Linhares
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "job_queue.hpp"
-
-#include <chrono>
-
-JobQueue::JobQueue():
- jobs{},
- _stop{false}
-{
-}
-
-void
-JobQueue::stop()
-{
- using namespace std::chrono_literals;
-
- while(!this->jobs.empty()) std::this_thread::sleep_for(1000ms);
- this->_stop = true;
- this->condition.notify_all();
-}
-
-void
-JobQueue::push(Job job)
-{
- std::unique_lock<std::mutex> lock{this->access};
- this->jobs.push_back(job);
- this->condition.notify_one();
-}
-
-Job
-JobQueue::pop()
-{
- std::unique_lock<std::mutex> lock{this->access};
- this->condition.wait(lock, [this]{
- return !this->jobs.empty() || this->_stop;});
- if(!this->jobs.empty())
- {
- auto job{std::move(this->jobs.front())};
- this->jobs.pop_front();
- return job;
- }
- else
- {
- return Job{nullptr};
- }
-}