LLDB mainline
SBBroadcaster.cpp
Go to the documentation of this file.
1//===-- SBBroadcaster.cpp -------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
12
14#include "lldb/API/SBEvent.h"
15#include "lldb/API/SBListener.h"
17
18using namespace lldb;
19using namespace lldb_private;
20
22
24 : m_opaque_sp(new Broadcaster(nullptr, name)) {
25 LLDB_INSTRUMENT_VA(this, name);
26
28}
29
31 : m_opaque_sp(owns ? broadcaster : nullptr), m_opaque_ptr(broadcaster) {}
32
37
39 LLDB_INSTRUMENT_VA(this, rhs);
40
41 if (this != &rhs) {
44 }
45 return *this;
46}
47
49
50void SBBroadcaster::BroadcastEventByType(uint32_t event_type, bool unique) {
51 LLDB_INSTRUMENT_VA(this, event_type, unique);
52
53 if (m_opaque_ptr == nullptr)
54 return;
55
56 if (unique)
57 m_opaque_ptr->BroadcastEventIfUnique(event_type);
58 else
59 m_opaque_ptr->BroadcastEvent(event_type);
60}
61
62void SBBroadcaster::BroadcastEvent(const SBEvent &event, bool unique) {
63 LLDB_INSTRUMENT_VA(this, event, unique);
64
65 if (m_opaque_ptr == nullptr)
66 return;
67
68 EventSP event_sp = event.GetSP();
69 if (unique)
70 m_opaque_ptr->BroadcastEventIfUnique(event_sp);
71 else
72 m_opaque_ptr->BroadcastEvent(event_sp);
73}
74
76 uint32_t requested_events) {
77 LLDB_INSTRUMENT_VA(this, listener, requested_events);
78
79 if (m_opaque_ptr)
80 m_opaque_ptr->AddInitialEventsToListener(listener.m_opaque_sp,
81 requested_events);
82}
83
84uint32_t SBBroadcaster::AddListener(const SBListener &listener,
85 uint32_t event_mask) {
86 LLDB_INSTRUMENT_VA(this, listener, event_mask);
87
88 if (m_opaque_ptr)
89 return m_opaque_ptr->AddListener(listener.m_opaque_sp, event_mask);
90 return 0;
91}
92
93const char *SBBroadcaster::GetName() const {
95
96 if (m_opaque_ptr)
98 m_opaque_ptr->GetBroadcasterName());
99 return nullptr;
100}
101
102bool SBBroadcaster::EventTypeHasListeners(uint32_t event_type) {
103 LLDB_INSTRUMENT_VA(this, event_type);
104
105 if (m_opaque_ptr)
106 return m_opaque_ptr->EventTypeHasListeners(event_type);
107 return false;
108}
109
111 uint32_t event_mask) {
112 LLDB_INSTRUMENT_VA(this, listener, event_mask);
113
114 if (m_opaque_ptr)
115 return m_opaque_ptr->RemoveListener(listener.m_opaque_sp, event_mask);
116 return false;
117}
118
120
121void SBBroadcaster::reset(Broadcaster *broadcaster, bool owns) {
122 if (owns)
123 m_opaque_sp.reset(broadcaster);
124 else
125 m_opaque_sp.reset();
126 m_opaque_ptr = broadcaster;
127}
128
130 LLDB_INSTRUMENT_VA(this);
131 return this->operator bool();
132}
133SBBroadcaster::operator bool() const {
134 LLDB_INSTRUMENT_VA(this);
135
136 return m_opaque_ptr != nullptr;
137}
138
140 LLDB_INSTRUMENT_VA(this);
141
142 m_opaque_sp.reset();
143 m_opaque_ptr = nullptr;
144}
145
147 LLDB_INSTRUMENT_VA(this, rhs);
148
149 return m_opaque_ptr == rhs.m_opaque_ptr;
150}
151
153 LLDB_INSTRUMENT_VA(this, rhs);
154
155 return m_opaque_ptr != rhs.m_opaque_ptr;
156}
157
159 LLDB_INSTRUMENT_VA(this, rhs);
160
161 return m_opaque_ptr < rhs.m_opaque_ptr;
162}
#define LLDB_INSTRUMENT_VA(...)
bool RemoveListener(const lldb::SBListener &listener, uint32_t event_mask=UINT32_MAX)
const char * GetName() const
void AddInitialEventsToListener(const lldb::SBListener &listener, uint32_t requested_events)
lldb_private::Broadcaster * m_opaque_ptr
void reset(lldb_private::Broadcaster *broadcaster, bool owns)
bool operator!=(const lldb::SBBroadcaster &rhs) const
bool operator==(const lldb::SBBroadcaster &rhs) const
const SBBroadcaster & operator=(const SBBroadcaster &rhs)
friend class SBListener
friend class SBEvent
void BroadcastEventByType(uint32_t event_type, bool unique=false)
bool operator<(const lldb::SBBroadcaster &rhs) const
uint32_t AddListener(const lldb::SBListener &listener, uint32_t event_mask)
void BroadcastEvent(const lldb::SBEvent &event, bool unique=false)
bool EventTypeHasListeners(uint32_t event_type)
lldb_private::Broadcaster * get() const
lldb::BroadcasterSP m_opaque_sp
lldb::ListenerSP m_opaque_sp
Definition SBListener.h:102
An event broadcasting class.
const char * Intern(llvm::StringRef str) const
Definition StringPool.h:78
static StringPoolRef GetSystemPool()
The system pool. Only valid between Initialize and Terminate.
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::Event > EventSP