1262182Semaste//===-- QueueList.cpp -------------------------------------------*- C++ -*-===//
2262182Semaste//
3262182Semaste//                     The LLVM Compiler Infrastructure
4262182Semaste//
5262182Semaste// This file is distributed under the University of Illinois Open Source
6262182Semaste// License. See LICENSE.TXT for details.
7262182Semaste//
8262182Semaste//===----------------------------------------------------------------------===//
9262182Semaste
10262182Semaste#include "lldb/Target/Process.h"
11262182Semaste#include "lldb/Target/Queue.h"
12262182Semaste#include "lldb/Target/QueueList.h"
13262182Semaste
14262182Semasteusing namespace lldb;
15262182Semasteusing namespace lldb_private;
16262182Semaste
17262182SemasteQueueList::QueueList (Process *process) :
18262182Semaste    m_process (process),
19262182Semaste    m_stop_id (0),
20262182Semaste    m_queues (),
21262182Semaste    m_mutex ()
22262182Semaste{
23262182Semaste}
24262182Semaste
25262182SemasteQueueList::~QueueList ()
26262182Semaste{
27262182Semaste    Clear();
28262182Semaste}
29262182Semaste
30262182Semasteuint32_t
31262182SemasteQueueList::GetSize ()
32262182Semaste{
33262182Semaste    Mutex::Locker locker (m_mutex);
34262182Semaste    return m_queues.size();
35262182Semaste}
36262182Semaste
37262182Semastelldb::QueueSP
38262182SemasteQueueList::GetQueueAtIndex (uint32_t idx)
39262182Semaste{
40262182Semaste    Mutex::Locker locker (m_mutex);
41262182Semaste    if (idx < m_queues.size())
42262182Semaste    {
43262182Semaste        return m_queues[idx];
44262182Semaste    }
45262182Semaste    else
46262182Semaste    {
47262182Semaste        return QueueSP();
48262182Semaste    }
49262182Semaste}
50262182Semaste
51262182Semastevoid
52262182SemasteQueueList::Clear ()
53262182Semaste{
54262182Semaste    Mutex::Locker locker (m_mutex);
55262182Semaste    m_queues.clear();
56262182Semaste}
57262182Semaste
58262182Semastevoid
59262182SemasteQueueList::AddQueue (QueueSP queue_sp)
60262182Semaste{
61262182Semaste    Mutex::Locker locker (m_mutex);
62262182Semaste    if (queue_sp.get ())
63262182Semaste    {
64262182Semaste        m_queues.push_back (queue_sp);
65262182Semaste    }
66262182Semaste}
67262182Semaste
68262182Semastelldb::QueueSP
69262182SemasteQueueList::FindQueueByID (lldb::queue_id_t qid)
70262182Semaste{
71262182Semaste    QueueSP ret;
72262182Semaste    for (QueueSP queue_sp : Queues())
73262182Semaste    {
74262182Semaste        if (queue_sp->GetID() == qid)
75262182Semaste        {
76262182Semaste            ret = queue_sp;
77262182Semaste            break;
78262182Semaste        }
79262182Semaste    }
80262182Semaste    return ret;
81262182Semaste}
82262182Semaste
83262182Semastelldb::QueueSP
84262182SemasteQueueList::FindQueueByIndexID (uint32_t index_id)
85262182Semaste{
86262182Semaste    QueueSP ret;
87262182Semaste    for (QueueSP queue_sp : Queues())
88262182Semaste    {
89262182Semaste        if (queue_sp->GetIndexID() == index_id)
90262182Semaste        {
91262182Semaste            ret = queue_sp;
92262182Semaste            break;
93262182Semaste        }
94262182Semaste    }
95262182Semaste    return ret;
96262182Semaste}
97262182Semaste
98262182Semastelldb_private::Mutex &
99262182SemasteQueueList::GetMutex ()
100262182Semaste{
101262182Semaste    return m_mutex;
102262182Semaste}
103