Change-Id: I5fc3740c1e990eec816fff7d19a476204d04ea2d
Signed-off-by: Kyungwook Tak <k.tak@samsung.com>
auto hExt = reinterpret_cast<Client::HandleExt *>(handle);
- if (hExt->isStopped())
- return CSR_ERROR_NONE;
+ if (!hExt->hasRunning() || hExt->isStopped())
+ return CSR_ERROR_NO_TASK;
hExt->stop();
return m_stop.load();
}
+bool HandleExt::hasRunning()
+{
+ std::unique_lock<std::mutex> l(m_mutex);
+ auto it = m_workerMap.begin();
+
+ while (it != m_workerMap.end()) {
+ if (!it->second.isDone.load())
+ return true;
+ }
+
+ return false;
+}
+
void HandleExt::eraseJoinableIf(std::function<bool(const WorkerMapPair &)> pred)
{
std::unique_lock<std::mutex> l(m_mutex);
void dispatchAsync(const Task &task);
void stop(void);
bool isStopped(void) const;
+ bool hasRunning(void);
Callback m_cb; // TODO: to refine..