Esempio n. 1
0
            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);
                }
            }
Esempio n. 2
0
        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();
                    }
                }
            }
        }
Esempio n. 3
0
 void PointIDDriver::cleanUp() {
     OPENDAVINCI_CORE_DELETE_POINTER(m_startType);
     OPENDAVINCI_CORE_DELETE_POINTER(m_stopType);
 }