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_
|