15e8dce4dSJason Molenda //===-- Queue.cpp -----------------------------------------------*- C++ -*-===//
25e8dce4dSJason Molenda //
35e8dce4dSJason Molenda //                     The LLVM Compiler Infrastructure
45e8dce4dSJason Molenda //
55e8dce4dSJason Molenda // This file is distributed under the University of Illinois Open Source
65e8dce4dSJason Molenda // License. See LICENSE.TXT for details.
75e8dce4dSJason Molenda //
85e8dce4dSJason Molenda //===----------------------------------------------------------------------===//
95e8dce4dSJason Molenda 
105e8dce4dSJason Molenda #include "lldb/Target/Process.h"
115e8dce4dSJason Molenda #include "lldb/Target/Queue.h"
125e8dce4dSJason Molenda #include "lldb/Target/QueueList.h"
135e8dce4dSJason Molenda #include "lldb/Target/Thread.h"
145e8dce4dSJason Molenda 
155e8dce4dSJason Molenda using namespace lldb;
165e8dce4dSJason Molenda using namespace lldb_private;
175e8dce4dSJason Molenda 
185e8dce4dSJason Molenda Queue::Queue (ProcessSP process_sp, lldb::queue_id_t queue_id, const char *queue_name) :
19*b97f44d9SJason Molenda     m_process_wp (),
205e8dce4dSJason Molenda     m_queue_id (queue_id),
215e8dce4dSJason Molenda     m_queue_name (queue_name),
225e8dce4dSJason Molenda     m_enqueued_items()
235e8dce4dSJason Molenda {
24*b97f44d9SJason Molenda     m_process_wp = process_sp;
255e8dce4dSJason Molenda     m_index_id = process_sp->AssignIndexIDToQueue (queue_id);
265e8dce4dSJason Molenda }
275e8dce4dSJason Molenda 
285e8dce4dSJason Molenda Queue::~Queue ()
295e8dce4dSJason Molenda {
305e8dce4dSJason Molenda }
315e8dce4dSJason Molenda 
325e8dce4dSJason Molenda queue_id_t
335e8dce4dSJason Molenda Queue::GetID ()
345e8dce4dSJason Molenda {
355e8dce4dSJason Molenda     return m_queue_id;
365e8dce4dSJason Molenda }
375e8dce4dSJason Molenda 
385e8dce4dSJason Molenda const char *
395e8dce4dSJason Molenda Queue::GetName ()
405e8dce4dSJason Molenda {
415e8dce4dSJason Molenda     const char *result = NULL;
425e8dce4dSJason Molenda     if (m_queue_name.size() > 0)
435e8dce4dSJason Molenda         result = m_queue_name.c_str();
445e8dce4dSJason Molenda     return result;
455e8dce4dSJason Molenda }
465e8dce4dSJason Molenda 
475e8dce4dSJason Molenda uint32_t
485e8dce4dSJason Molenda Queue::GetIndexID ()
495e8dce4dSJason Molenda {
505e8dce4dSJason Molenda     return m_index_id;
515e8dce4dSJason Molenda }
525e8dce4dSJason Molenda 
535e8dce4dSJason Molenda std::vector<lldb::ThreadSP>
545e8dce4dSJason Molenda Queue::GetThreads ()
555e8dce4dSJason Molenda {
565e8dce4dSJason Molenda     std::vector<ThreadSP> result;
575e8dce4dSJason Molenda     ProcessSP process_sp = m_process_wp.lock();
585e8dce4dSJason Molenda     if (process_sp.get ())
595e8dce4dSJason Molenda     {
605e8dce4dSJason Molenda         for (ThreadSP thread_sp : process_sp->Threads())
615e8dce4dSJason Molenda         {
625e8dce4dSJason Molenda             if (thread_sp->GetQueueID() == m_queue_id)
635e8dce4dSJason Molenda             {
645e8dce4dSJason Molenda                 result.push_back (thread_sp);
655e8dce4dSJason Molenda             }
665e8dce4dSJason Molenda         }
675e8dce4dSJason Molenda     }
685e8dce4dSJason Molenda     return result;
695e8dce4dSJason Molenda }
70