Log Message:
-----------
Update for queue
Modified Files:
--------------
/cvsroot/decaldev/source/DecalFilters:
IdentifyQueue.h
IdentifyQueue.cpp
Revision Data
-------------
Index: IdentifyQueue.h
===================================================================
RCS file: /cvsroot/decaldev/source/DecalFilters/IdentifyQueue.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- IdentifyQueue.h 20 Jun 2003 10:48:00 -0000 1.6
+++ IdentifyQueue.h 22 Jun 2003 08:44:04 -0000 1.7
@@ -33,6 +33,7 @@
{
m_bWaiting = false;
m_lAttempts = 0;
+ m_lLastManualAttempt = 0;
}
DECLARE_REGISTRY_RESOURCEID(IDR_IDENTIFYQUEUE)
@@ -53,14 +54,15 @@
IDContainer m_Queue;
bool m_bWaiting;
long m_lAttempts;
+ long m_lLastManualAttempt;
// Id Func pointer
- RequestPtr m_pRequest;
+ RequestPtr m_pfRequestFunc;
- void DoGameEvent( IMessageIterator *pMembers );
- void DoIDItem( IMessageIterator *pMembers );
+ void MsgGameEvent( IMessageIterator *pMembers );
+ void MsgIDItem( IMessageIterator *pMembers );
- void Request();
+ void Request();
public:
// INetworkFilterImpl
Index: IdentifyQueue.cpp
===================================================================
RCS file: /cvsroot/decaldev/source/DecalFilters/IdentifyQueue.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- IdentifyQueue.cpp 20 Jun 2003 12:37:12 -0000 1.15
+++ IdentifyQueue.cpp 22 Jun 2003 08:44:04 -0000 1.16
@@ -31,7 +31,7 @@
long lRequestIDMemloc;
if( m_pHooks->QueryMemLoc( _bstr_t( "RequestID" ), &lRequestIDMemloc ) == S_OK )
{
- m_pRequest = reinterpret_cast< RequestPtr >( lRequestIDMemloc );
+ m_pfRequestFunc = reinterpret_cast< RequestPtr >( lRequestIDMemloc );
return S_OK;
}
}
@@ -46,7 +46,7 @@
m_pDecal.Release();
m_pHooks.Release();
- m_pRequest = NULL;
+ m_pfRequestFunc = NULL;
return S_OK;
}
@@ -61,7 +61,7 @@
switch( lType )
{
- case msgGameEvent: DoGameEvent( pMembers ); break;
+ case msgGameEvent: MsgGameEvent( pMembers ); break;
}
if( m_Queue.empty() )
@@ -116,6 +116,8 @@
STDMETHODIMP CIdentifyQueue::ShortcircuitID( long lObjectID )
{
+ m_lLastManualAttempt = lObjectID;
+
if( !m_Queue.empty() )
{
for( IDContainer::iterator pDeque = m_Queue.begin(); pDeque != m_Queue.end(); ++pDeque )
@@ -139,18 +141,18 @@
return S_OK;
}
-void CIdentifyQueue::DoGameEvent( IMessageIterator *pMembers )
+void CIdentifyQueue::MsgGameEvent( IMessageIterator *pMembers )
{
long lEvent;
pMembers->get_NextInt( _bstr_t( "event" ), &lEvent );
switch( lEvent )
{
- case gevIDItem: DoIDItem( pMembers ); break;
+ case gevIDItem: MsgIDItem( pMembers ); break;
}
}
-void CIdentifyQueue::DoIDItem( IMessageIterator *pMembers )
+void CIdentifyQueue::MsgIDItem( IMessageIterator *pMembers )
{
if( m_Queue.empty() )
return;
@@ -178,18 +180,28 @@
void CIdentifyQueue::Request()
{
- if( m_Queue.empty() )
- {
- m_pRequest( 0 );
- return;
- }
-
if( !m_bWaiting )
{
- m_pRequest( m_Queue[0]->lObjectID );
+ if( m_Queue.empty() )
+ {
+ if( m_lLastManualAttempt != 0 )
+ {
+ m_pfRequestFunc( m_lLastManualAttempt );
+ m_bWaiting = true;
+ }
+
+ else
+ m_pfRequestFunc( 0 );
+
+ return;
+ }
+
+ IDStruct *pQueueBegin = *m_Queue.begin();
+
+ m_pfRequestFunc( pQueueBegin->lObjectID );
m_bWaiting = true;
- if( m_Queue[0]->lObjectID == 0 )
+ if( pQueueBegin->lObjectID == 0 )
{
m_bWaiting = false;
m_Queue.erase( m_Queue.begin() );
|