1254721Semaste//===-- SBListener.h --------------------------------------------*- C++ -*-===// 2254721Semaste// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6254721Semaste// 7254721Semaste//===----------------------------------------------------------------------===// 8254721Semaste 9254721Semaste#ifndef LLDB_SBListener_h_ 10254721Semaste#define LLDB_SBListener_h_ 11254721Semaste 12254721Semaste#include "lldb/API/SBDefines.h" 13254721Semaste 14254721Semastenamespace lldb { 15254721Semaste 16314564Sdimclass LLDB_API SBListener { 17254721Semastepublic: 18314564Sdim SBListener(); 19254721Semaste 20314564Sdim SBListener(const char *name); 21254721Semaste 22314564Sdim SBListener(const SBListener &rhs); 23254721Semaste 24314564Sdim ~SBListener(); 25254721Semaste 26314564Sdim const lldb::SBListener &operator=(const lldb::SBListener &rhs); 27254721Semaste 28314564Sdim void AddEvent(const lldb::SBEvent &event); 29254721Semaste 30314564Sdim void Clear(); 31254721Semaste 32353358Sdim explicit operator bool() const; 33353358Sdim 34314564Sdim bool IsValid() const; 35254721Semaste 36314564Sdim uint32_t StartListeningForEventClass(SBDebugger &debugger, 37314564Sdim const char *broadcaster_class, 38314564Sdim uint32_t event_mask); 39254721Semaste 40314564Sdim bool StopListeningForEventClass(SBDebugger &debugger, 41314564Sdim const char *broadcaster_class, 42314564Sdim uint32_t event_mask); 43254721Semaste 44314564Sdim uint32_t StartListeningForEvents(const lldb::SBBroadcaster &broadcaster, 45314564Sdim uint32_t event_mask); 46254721Semaste 47314564Sdim bool StopListeningForEvents(const lldb::SBBroadcaster &broadcaster, 48314564Sdim uint32_t event_mask); 49254721Semaste 50314564Sdim // Returns true if an event was received, false if we timed out. 51314564Sdim bool WaitForEvent(uint32_t num_seconds, lldb::SBEvent &event); 52254721Semaste 53314564Sdim bool WaitForEventForBroadcaster(uint32_t num_seconds, 54314564Sdim const lldb::SBBroadcaster &broadcaster, 55314564Sdim lldb::SBEvent &sb_event); 56254721Semaste 57314564Sdim bool WaitForEventForBroadcasterWithType( 58314564Sdim uint32_t num_seconds, const lldb::SBBroadcaster &broadcaster, 59314564Sdim uint32_t event_type_mask, lldb::SBEvent &sb_event); 60254721Semaste 61314564Sdim bool PeekAtNextEvent(lldb::SBEvent &sb_event); 62254721Semaste 63314564Sdim bool PeekAtNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster, 64314564Sdim lldb::SBEvent &sb_event); 65254721Semaste 66314564Sdim bool 67314564Sdim PeekAtNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster, 68254721Semaste uint32_t event_type_mask, 69254721Semaste lldb::SBEvent &sb_event); 70254721Semaste 71314564Sdim bool GetNextEvent(lldb::SBEvent &sb_event); 72254721Semaste 73314564Sdim bool GetNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster, 74314564Sdim lldb::SBEvent &sb_event); 75314564Sdim 76314564Sdim bool 77314564Sdim GetNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster, 78314564Sdim uint32_t event_type_mask, 79314564Sdim lldb::SBEvent &sb_event); 80314564Sdim 81314564Sdim bool HandleBroadcastEvent(const lldb::SBEvent &event); 82314564Sdim 83254721Semasteprotected: 84314564Sdim friend class SBAttachInfo; 85314564Sdim friend class SBBroadcaster; 86314564Sdim friend class SBCommandInterpreter; 87314564Sdim friend class SBDebugger; 88314564Sdim friend class SBLaunchInfo; 89314564Sdim friend class SBTarget; 90254721Semaste 91314564Sdim SBListener(const lldb::ListenerSP &listener_sp); 92280031Sdim 93321369Sdim lldb::ListenerSP GetSP(); 94280031Sdim 95254721Semasteprivate: 96314564Sdim lldb_private::Listener *operator->() const; 97254721Semaste 98314564Sdim lldb_private::Listener *get() const; 99254721Semaste 100314564Sdim void reset(lldb::ListenerSP listener_sp); 101254721Semaste 102314564Sdim lldb::ListenerSP m_opaque_sp; 103314564Sdim lldb_private::Listener *m_unused_ptr; 104254721Semaste}; 105254721Semaste 106254721Semaste} // namespace lldb 107254721Semaste 108314564Sdim#endif // LLDB_SBListener_h_ 109