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
14using namespace lldb;
15using namespace lldb_private;
16
17QueueList::QueueList (Process *process) :
18    m_process (process),
19    m_stop_id (0),
20    m_queues (),
21    m_mutex ()
22{
23}
24
25QueueList::~QueueList ()
26{
27    Clear();
28}
29
30uint32_t
31QueueList::GetSize ()
32{
33    Mutex::Locker locker (m_mutex);
34    return m_queues.size();
35}
36
37lldb::QueueSP
38QueueList::GetQueueAtIndex (uint32_t idx)
39{
40    Mutex::Locker locker (m_mutex);
41    if (idx < m_queues.size())
42    {
43        return m_queues[idx];
44    }
45    else
46    {
47        return QueueSP();
48    }
49}
50
51void
52QueueList::Clear ()
53{
54    Mutex::Locker locker (m_mutex);
55    m_queues.clear();
56}
57
58void
59QueueList::AddQueue (QueueSP queue_sp)
60{
61    Mutex::Locker locker (m_mutex);
62    if (queue_sp.get ())
63    {
64        m_queues.push_back (queue_sp);
65    }
66}
67
68lldb::QueueSP
69QueueList::FindQueueByID (lldb::queue_id_t qid)
70{
71    QueueSP ret;
72    for (QueueSP queue_sp : Queues())
73    {
74        if (queue_sp->GetID() == qid)
75        {
76            ret = queue_sp;
77            break;
78        }
79    }
80    return ret;
81}
82
83lldb::QueueSP
84QueueList::FindQueueByIndexID (uint32_t index_id)
85{
86    QueueSP ret;
87    for (QueueSP queue_sp : Queues())
88    {
89        if (queue_sp->GetIndexID() == index_id)
90        {
91            ret = queue_sp;
92            break;
93        }
94    }
95    return ret;
96}
97
98lldb_private::Mutex &
99QueueList::GetMutex ()
100{
101    return m_mutex;
102}
103