1 //===-- SBListener.h --------------------------------------------*- 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 #ifndef LLDB_SBListener_h_ 11 #define LLDB_SBListener_h_ 12 13 #include "lldb/API/SBDefines.h" 14 15 namespace lldb { 16 17 class LLDB_API SBListener { 18 public: 19 SBListener(); 20 21 SBListener(const char *name); 22 23 SBListener(const SBListener &rhs); 24 25 ~SBListener(); 26 27 const lldb::SBListener &operator=(const lldb::SBListener &rhs); 28 29 void AddEvent(const lldb::SBEvent &event); 30 31 void Clear(); 32 33 bool IsValid() const; 34 35 uint32_t StartListeningForEventClass(SBDebugger &debugger, 36 const char *broadcaster_class, 37 uint32_t event_mask); 38 39 bool StopListeningForEventClass(SBDebugger &debugger, 40 const char *broadcaster_class, 41 uint32_t event_mask); 42 43 uint32_t StartListeningForEvents(const lldb::SBBroadcaster &broadcaster, 44 uint32_t event_mask); 45 46 bool StopListeningForEvents(const lldb::SBBroadcaster &broadcaster, 47 uint32_t event_mask); 48 49 // Returns true if an event was received, false if we timed out. 50 bool WaitForEvent(uint32_t num_seconds, lldb::SBEvent &event); 51 52 bool WaitForEventForBroadcaster(uint32_t num_seconds, 53 const lldb::SBBroadcaster &broadcaster, 54 lldb::SBEvent &sb_event); 55 56 bool WaitForEventForBroadcasterWithType( 57 uint32_t num_seconds, const lldb::SBBroadcaster &broadcaster, 58 uint32_t event_type_mask, lldb::SBEvent &sb_event); 59 60 bool PeekAtNextEvent(lldb::SBEvent &sb_event); 61 62 bool PeekAtNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster, 63 lldb::SBEvent &sb_event); 64 65 bool 66 PeekAtNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster, 67 uint32_t event_type_mask, 68 lldb::SBEvent &sb_event); 69 70 bool GetNextEvent(lldb::SBEvent &sb_event); 71 72 bool GetNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster, 73 lldb::SBEvent &sb_event); 74 75 bool 76 GetNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster, 77 uint32_t event_type_mask, 78 lldb::SBEvent &sb_event); 79 80 bool HandleBroadcastEvent(const lldb::SBEvent &event); 81 82 protected: 83 friend class SBAttachInfo; 84 friend class SBBroadcaster; 85 friend class SBCommandInterpreter; 86 friend class SBDebugger; 87 friend class SBLaunchInfo; 88 friend class SBTarget; 89 90 SBListener(const lldb::ListenerSP &listener_sp); 91 92 lldb::ListenerSP GetSP(); 93 94 private: 95 lldb_private::Listener *operator->() const; 96 97 lldb_private::Listener *get() const; 98 99 void reset(lldb::ListenerSP listener_sp); 100 101 lldb::ListenerSP m_opaque_sp; 102 lldb_private::Listener *m_unused_ptr; 103 }; 104 105 } // namespace lldb 106 107 #endif // LLDB_SBListener_h_ 108