DirectedGraph::~DirectedGraph() { // Delete all vertices. vector<const Vertex*>::iterator it = m_listOfVertices.begin(); while (it != m_listOfVertices.end()) { const Vertex *v = (*it++); OPENDAVINCI_CORE_DELETE_POINTER(v); } // Delete all edges. vector<const Edge*>::iterator jt = m_listOfEdges.begin(); while (jt != m_listOfEdges.end()) { const Edge *e = (*jt++); OPENDAVINCI_CORE_DELETE_POINTER(e); } }
void DisposalService::QueueCleaner::run() { while (isRunning()) { m_queueCondition->lock(); m_queueCondition->waitOnSignal(); m_queueCondition->unlock(); // Delay removal. ConcurrencyFactory::usleepFor(1000); if (isRunning()) { uint32_t numberOfEntries = 0; // Determine the amount of current entries. m_queueMutex.lock(); { numberOfEntries = static_cast<uint32_t>(m_queue.size()); } m_queueMutex.unlock(); if (numberOfEntries > 0) { // Lock final removal method. m_finalRemovalMutex.lock(); // Read all entries and clean up. Disposable **disposable = NULL; for (uint32_t i = 0; i < numberOfEntries; i++) { // Acquire next entry. m_queueMutex.lock(); { disposable = m_queue.front(); } m_queueMutex.unlock(); // Remove entry. OPENDAVINCI_CORE_DELETE_POINTER(*disposable); // Delay removal. ConcurrencyFactory::usleepFor(5); // Remove processed entry. m_queueMutex.lock(); { m_queue.pop_front(); } m_queueMutex.unlock(); } m_finalRemovalMutex.unlock(); } } } }
void PointIDDriver::cleanUp() { OPENDAVINCI_CORE_DELETE_POINTER(m_startType); OPENDAVINCI_CORE_DELETE_POINTER(m_stopType); }