Allow registration of multiple data handlers
This commit is contained in:
parent
cbfa8d8298
commit
29c0741984
|
@ -113,7 +113,7 @@ void BuildProcessSession::registerWebSession(std::shared_ptr<WebAPI::Session> &&
|
||||||
void BuildProcessSession::registerNewDataHandler(std::function<void(BuildProcessSession::BufferType, std::size_t)> &&handler)
|
void BuildProcessSession::registerNewDataHandler(std::function<void(BuildProcessSession::BufferType, std::size_t)> &&handler)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(m_mutex);
|
std::unique_lock<std::mutex> lock(m_mutex);
|
||||||
m_newDataHandler = std::move(handler);
|
m_newDataHandlers.emplace_back(std::move(handler));
|
||||||
}
|
}
|
||||||
|
|
||||||
void BuildProcessSession::prpareLogFile()
|
void BuildProcessSession::prpareLogFile()
|
||||||
|
@ -176,8 +176,10 @@ void BuildProcessSession::writeDataFromPipe(boost::system::error_code ec, std::s
|
||||||
sessionInfo->outstandingBuffersToSend.emplace_back(std::pair(m_buffer, bytesTransferred));
|
sessionInfo->outstandingBuffersToSend.emplace_back(std::pair(m_buffer, bytesTransferred));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_newDataHandler) {
|
for (const auto &handler : m_newDataHandlers) {
|
||||||
m_newDataHandler(m_buffer, bytesTransferred);
|
if (handler) {
|
||||||
|
handler(m_buffer, bytesTransferred);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// continue reading from the pipe unless there was an error
|
// continue reading from the pipe unless there was an error
|
||||||
|
|
|
@ -186,7 +186,7 @@ private:
|
||||||
std::mutex m_mutex;
|
std::mutex m_mutex;
|
||||||
BuffersToWrite m_logFileBuffers;
|
BuffersToWrite m_logFileBuffers;
|
||||||
std::unordered_map<std::shared_ptr<WebAPI::Session>, std::unique_ptr<DataForWebSession>> m_registeredWebSessions;
|
std::unordered_map<std::shared_ptr<WebAPI::Session>, std::unique_ptr<DataForWebSession>> m_registeredWebSessions;
|
||||||
std::function<void(BufferType, std::size_t)> m_newDataHandler;
|
std::vector<std::function<void(BufferType, std::size_t)>> m_newDataHandlers;
|
||||||
AssociatedLocks m_locks;
|
AssociatedLocks m_locks;
|
||||||
std::atomic_bool m_exited = false;
|
std::atomic_bool m_exited = false;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue