First try to shutdown the thread if it is not used for long enough
This commit is contained in:
@@ -113,7 +113,7 @@ std::expected<void, std::string> AsyncHttpRequest::endTask()
|
|||||||
if (const auto bits = m_eventGroup.waitBits(TASK_ENDED_BIT, true, false, std::chrono::ceil<espcpputils::ticks>(1s).count());
|
if (const auto bits = m_eventGroup.waitBits(TASK_ENDED_BIT, true, false, std::chrono::ceil<espcpputils::ticks>(1s).count());
|
||||||
bits & TASK_ENDED_BIT)
|
bits & TASK_ENDED_BIT)
|
||||||
{
|
{
|
||||||
ESP_LOGD(TAG, "http task %s ended", m_taskName);
|
ESP_LOGI(TAG, "http task %s ended", m_taskName);
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ std::expected<void, std::string> AsyncHttpRequest::endTask()
|
|||||||
bits & TASK_ENDED_BIT)
|
bits & TASK_ENDED_BIT)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
ESP_LOGD(TAG, "http task %s ended", m_taskName);
|
ESP_LOGI(TAG, "http task %s ended", m_taskName);
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
@@ -453,9 +453,11 @@ void AsyncHttpRequest::requestTask(void *ptr)
|
|||||||
void AsyncHttpRequest::requestTask()
|
void AsyncHttpRequest::requestTask()
|
||||||
{
|
{
|
||||||
m_eventGroup.setBits(TASK_RUNNING_BIT);
|
m_eventGroup.setBits(TASK_RUNNING_BIT);
|
||||||
|
ESP_LOGI(TAG, "%s task started", m_taskName);
|
||||||
|
|
||||||
// cleanup on task exit
|
// cleanup on task exit
|
||||||
auto helper = cpputils::makeCleanupHelper([&](){
|
auto helper = cpputils::makeCleanupHelper([&](){
|
||||||
|
ESP_LOGI(TAG, "%s task ended", m_taskName);
|
||||||
m_eventGroup.clearBits(TASK_RUNNING_BIT);
|
m_eventGroup.clearBits(TASK_RUNNING_BIT);
|
||||||
m_eventGroup.setBits(TASK_ENDED_BIT);
|
m_eventGroup.setBits(TASK_ENDED_BIT);
|
||||||
m_taskHandle = NULL;
|
m_taskHandle = NULL;
|
||||||
@@ -464,11 +466,23 @@ void AsyncHttpRequest::requestTask()
|
|||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
if (const auto bits = m_eventGroup.waitBits(START_REQUEST_BIT|END_TASK_BIT, true, false, portMAX_DELAY);
|
ESP_LOGI(TAG, "%s waiting for instructions...", m_taskName);
|
||||||
|
if (const auto bits = m_eventGroup.waitBits(START_REQUEST_BIT|END_TASK_BIT, true, false, std::chrono::ceil<espcpputils::ticks>(15s).count());
|
||||||
bits & END_TASK_BIT)
|
bits & END_TASK_BIT)
|
||||||
|
{
|
||||||
|
ESP_LOGI(TAG, "%s task end requested", m_taskName);
|
||||||
break;
|
break;
|
||||||
else if (!(bits & START_REQUEST_BIT))
|
}
|
||||||
continue;
|
else if (bits & START_REQUEST_BIT)
|
||||||
|
{
|
||||||
|
ESP_LOGI(TAG, "%s start request requested", m_taskName);
|
||||||
|
//break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ESP_LOGI(TAG, "%s timeout ends task", m_taskName);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
assert(m_client);
|
assert(m_client);
|
||||||
|
|
||||||
@@ -482,6 +496,7 @@ void AsyncHttpRequest::requestTask()
|
|||||||
m_eventGroup.setBits(REQUEST_RUNNING_BIT);
|
m_eventGroup.setBits(REQUEST_RUNNING_BIT);
|
||||||
|
|
||||||
auto helper2 = cpputils::makeCleanupHelper([&](){
|
auto helper2 = cpputils::makeCleanupHelper([&](){
|
||||||
|
ESP_LOGI(TAG, "%s request finished", m_taskName);
|
||||||
m_eventGroup.clearBits(REQUEST_RUNNING_BIT | ABORT_REQUEST_BIT);
|
m_eventGroup.clearBits(REQUEST_RUNNING_BIT | ABORT_REQUEST_BIT);
|
||||||
m_eventGroup.setBits(REQUEST_FINISHED_BIT);
|
m_eventGroup.setBits(REQUEST_FINISHED_BIT);
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user