本文整理汇总了C++中DatabaseConnection::onDestroyEvent方法的典型用法代码示例。如果您正苦于以下问题:C++ DatabaseConnection::onDestroyEvent方法的具体用法?C++ DatabaseConnection::onDestroyEvent怎么用?C++ DatabaseConnection::onDestroyEvent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DatabaseConnection
的用法示例。
在下文中一共展示了DatabaseConnection::onDestroyEvent方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: lock
//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
void
DatabaseService::onDestroy(wpDatabaseConnection_type _pConnection)
{
Threading::CriticalSection lock(m_pConnectionsGuard);
connections_types::iterator iter = m_namedConnections.find(_pConnection->getName());
if (iter != m_namedConnections.end())
{
// This is safe since the only place that this can transition
// from expired to non-expired is in connect() where m_pConnectionsGuard
// is acquired.
if (iter->second.expired())
{
m_namedConnections.erase(iter);
DatabaseConnection* pConn = dynamic_cast<DatabaseConnection*>(_pConnection.get());
pConn->onDestroyEvent(_pConnection);
delete pConn;
}
else
{
// Not expired, so we are here for no reason
// We can get here during race conditions where one shared_ptr
// is being deleted while connect() is being called and connect()
// beat onDestroy() to the lock(m_pConnectionsGuard).
return;
}
}
else
{
// TODO Severe error, should never get here
}
}