ASyncDBConnection uses Qt signals now for reporting state changes and notices

This commit is contained in:
Eelke Klein 2017-09-03 10:06:32 +02:00
parent 90d0a14b63
commit 3befef2464
7 changed files with 30 additions and 73 deletions

View file

@ -72,13 +72,10 @@ void ASyncDBConnection::doStateCallback(State state)
m_connection.setNoticeReceiver(
[this](const PGresult *result) { processNotice(result); });
}
std::lock_guard<std::mutex> lg(m_stateCallback.m_mutex);
if (m_stateCallback.m_func) {
m_stateCallback.m_func(state);
}
emit onStateChanged(state);
}
}
void ASyncDBConnection::closeConnection()
@ -155,23 +152,8 @@ bool ASyncDBConnection::cancel()
return m_canceller.cancel(nullptr);
}
void ASyncDBConnection::setStateCallback(on_state_callback state_callback)
{
std::lock_guard<std::mutex> lg(m_stateCallback.m_mutex);
m_stateCallback.m_func = state_callback;
}
void ASyncDBConnection::setNoticeCallback(on_notice_callback notice_callback)
{
std::lock_guard<std::mutex> lg(m_noticeCallback.m_mutex);
m_noticeCallback.m_func = notice_callback;
}
void ASyncDBConnection::processNotice(const PGresult *result)
{
std::lock_guard<std::mutex> lg(m_noticeCallback.m_mutex);
if (m_noticeCallback.m_func) {
Pgsql::ErrorDetails details = Pgsql::ErrorDetails::createErrorDetailsFromPGresult(result);
m_noticeCallback.m_func(details);
}
Pgsql::ErrorDetails details = Pgsql::ErrorDetails::createErrorDetailsFromPGresult(result);
emit onNotice(details);
}