From: <no...@us...> - 2003-06-20 10:48:01
|
Log Message: ----------- Add framework for shortcircuit Modified Files: -------------- /cvsroot/decaldev/source/DecalFilters: IdentifyQueue.cpp IdentifyQueue.h Revision Data ------------- Index: IdentifyQueue.cpp =================================================================== RCS file: /cvsroot/decaldev/source/DecalFilters/IdentifyQueue.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- IdentifyQueue.cpp 20 Jun 2003 10:33:36 -0000 1.13 +++ IdentifyQueue.cpp 20 Jun 2003 10:48:00 -0000 1.14 @@ -34,11 +34,10 @@ m_pRequest = reinterpret_cast< RequestPtr >( lRequestIDMemloc ); return S_OK; } - - else - return E_FAIL; } + + m_pService.Release(); return E_FAIL; } @@ -103,12 +102,34 @@ return S_OK; } } - + IDStruct *QueueObj = new IDStruct(); QueueObj->lObjectID = lObjectID; QueueObj->lTime = timeGetTime(); m_Queue.push_back( QueueObj ); - + + if( !m_bWaiting ) + Request(); + + return S_OK; +} + +STDMETHODIMP CIdentifyQueue::ShortcircuitID( long lObjectID ) +{ + if( !m_Queue.empty() ) + { + for( IDContainer::iterator pDeque = m_Queue.begin(); pDeque != m_Queue.end(); pDeque++ ) + { + if ( (*pDeque)->lObjectID == lObjectID ) + pDeque = m_Queue.erase( pDeque ); + } + } + + IDStruct *QueueObj = new IDStruct(); + QueueObj->lObjectID = lObjectID; + QueueObj->lTime = timeGetTime(); + m_Queue.push_front( QueueObj ); + if( !m_bWaiting ) Request(); @@ -133,8 +154,8 @@ long lObjectID; pMembers->get_NextInt( _bstr_t( "object" ), &lObjectID ); - - + + for( IDContainer::iterator pDeque = m_Queue.begin(); pDeque != m_Queue.end(); pDeque++ ) { if ( (*pDeque)->lObjectID == lObjectID ) Index: IdentifyQueue.h =================================================================== RCS file: /cvsroot/decaldev/source/DecalFilters/IdentifyQueue.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- IdentifyQueue.h 20 Jun 2003 10:30:57 -0000 1.5 +++ IdentifyQueue.h 20 Jun 2003 10:48:00 -0000 1.6 @@ -72,6 +72,7 @@ // IKitchenSink STDMETHOD(AddToQueue)( long lObjectID ); + STDMETHOD(ShortcircuitID)( long lObjectID ); }; #endif //__IDQUEUE_H_ |