1 //===-- QueueList.cpp -------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include "lldb/Target/Process.h"
11 #include "lldb/Target/Queue.h"
12 #include "lldb/Target/QueueList.h"
13 
14 using namespace lldb;
15 using namespace lldb_private;
16 
17 QueueList::QueueList(Process *process) : m_process(process), m_stop_id(0), m_queues(), m_mutex()
18 {
19 }
20 
21 QueueList::~QueueList ()
22 {
23     Clear();
24 }
25 
26 uint32_t
27 QueueList::GetSize ()
28 {
29     std::lock_guard<std::mutex> guard(m_mutex);
30     return m_queues.size();
31 }
32 
33 lldb::QueueSP
34 QueueList::GetQueueAtIndex (uint32_t idx)
35 {
36     std::lock_guard<std::mutex> guard(m_mutex);
37     if (idx < m_queues.size())
38     {
39         return m_queues[idx];
40     }
41     else
42     {
43         return QueueSP();
44     }
45 }
46 
47 void
48 QueueList::Clear ()
49 {
50     std::lock_guard<std::mutex> guard(m_mutex);
51     m_queues.clear();
52 }
53 
54 void
55 QueueList::AddQueue (QueueSP queue_sp)
56 {
57     std::lock_guard<std::mutex> guard(m_mutex);
58     if (queue_sp.get ())
59     {
60         m_queues.push_back (queue_sp);
61     }
62 }
63 
64 lldb::QueueSP
65 QueueList::FindQueueByID (lldb::queue_id_t qid)
66 {
67     QueueSP ret;
68     for (QueueSP queue_sp : Queues())
69     {
70         if (queue_sp->GetID() == qid)
71         {
72             ret = queue_sp;
73             break;
74         }
75     }
76     return ret;
77 }
78 
79 lldb::QueueSP
80 QueueList::FindQueueByIndexID (uint32_t index_id)
81 {
82     QueueSP ret;
83     for (QueueSP queue_sp : Queues())
84     {
85         if (queue_sp->GetIndexID() == index_id)
86         {
87             ret = queue_sp;
88             break;
89         }
90     }
91     return ret;
92 }
93 
94 std::mutex &
95 QueueList::GetMutex()
96 {
97     return m_mutex;
98 }
99