SBQueue::GetNumPendingItems() should not force a fetch of the pending

items; the backing Queue object has the number of pending items
already cached.  Also, add SBQueue::GetNumRunningItems() to provide
that information.
<rdar://problem/16272016> 

llvm-svn: 203420
This commit is contained in:
Jason Molenda 2014-03-09 19:41:30 +00:00
parent 644aef8f84
commit fe95dc95b5
2 changed files with 32 additions and 6 deletions

View File

@ -62,6 +62,9 @@ public:
lldb::SBQueueItem
GetPendingItemAtIndex (uint32_t);
uint32_t
GetNumRunningItems ();
protected:
friend class SBProcess;

View File

@ -222,21 +222,24 @@ namespace lldb_private
}
return sb_thread;
}
uint32_t
GetNumPendingItems ()
{
uint32_t result = 0;
FetchItems();
if (m_pending_items_fetched)
QueueSP queue_sp = m_queue_wp.lock();
if (m_pending_items_fetched == false && queue_sp)
{
result = queue_sp->GetNumPendingWorkItems();
}
else
{
result = m_pending_items.size();
}
return result;
}
lldb::SBQueueItem
GetPendingItemAtIndex (uint32_t idx)
{
@ -248,6 +251,16 @@ namespace lldb_private
}
return result;
}
uint32_t
GetNumRunningItems ()
{
uint32_t result = 0;
QueueSP queue_sp = m_queue_wp.lock();
if (queue_sp)
result = queue_sp->GetNumRunningWorkItems();
return result;
}
lldb::SBProcess
GetProcess ()
@ -399,6 +412,16 @@ SBQueue::GetPendingItemAtIndex (uint32_t idx)
return m_opaque_sp->GetPendingItemAtIndex (idx);
}
uint32_t
SBQueue::GetNumRunningItems ()
{
uint32_t running_items = m_opaque_sp->GetNumRunningItems ();
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
if (log)
log->Printf("SBQueue(0x%" PRIx64 ")::GetNumRunningItems() == %d", m_opaque_sp->GetQueueID(), running_items);
return running_items;
}
SBProcess
SBQueue::GetProcess ()
{