[Lldb-commits] [lldb] r349157 - Move Broadcaster+Listener+Event combo from Core into Utility
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Fri Dec 14 07:59:50 PST 2018
Author: labath
Date: Fri Dec 14 07:59:49 2018
New Revision: 349157
URL: http://llvm.org/viewvc/llvm-project?rev=349157&view=rev
Log:
Move Broadcaster+Listener+Event combo from Core into Utility
Summary:
These are general purpose "utility" classes, whose functionality is not
debugger-specific in any way. As such, I believe they belong in the
Utility module.
This doesn't break any particular dependency (yet), but it reduces the
number of Core dependencies across the board.
Reviewers: zturner, jingham, teemperor, clayborg
Subscribers: mgorny, lldb-commits
Differential Revision: https://reviews.llvm.org/D55361
Added:
lldb/trunk/include/lldb/Utility/Broadcaster.h
- copied, changed from r349154, lldb/trunk/include/lldb/Core/Broadcaster.h
lldb/trunk/include/lldb/Utility/Event.h
- copied, changed from r349154, lldb/trunk/include/lldb/Core/Event.h
lldb/trunk/include/lldb/Utility/Listener.h
- copied, changed from r349154, lldb/trunk/include/lldb/Core/Listener.h
lldb/trunk/source/Utility/Broadcaster.cpp
- copied, changed from r349154, lldb/trunk/source/Core/Broadcaster.cpp
lldb/trunk/source/Utility/Event.cpp
- copied, changed from r349154, lldb/trunk/source/Core/Event.cpp
lldb/trunk/source/Utility/Listener.cpp
- copied, changed from r349154, lldb/trunk/source/Core/Listener.cpp
lldb/trunk/unittests/Utility/BroadcasterTest.cpp
- copied, changed from r349154, lldb/trunk/unittests/Core/BroadcasterTest.cpp
lldb/trunk/unittests/Utility/EventTest.cpp
- copied, changed from r349154, lldb/trunk/unittests/Core/EventTest.cpp
lldb/trunk/unittests/Utility/ListenerTest.cpp
- copied, changed from r349154, lldb/trunk/unittests/Core/ListenerTest.cpp
Removed:
lldb/trunk/include/lldb/Core/Broadcaster.h
lldb/trunk/include/lldb/Core/Event.h
lldb/trunk/include/lldb/Core/Listener.h
lldb/trunk/source/Core/Broadcaster.cpp
lldb/trunk/source/Core/Event.cpp
lldb/trunk/source/Core/Listener.cpp
lldb/trunk/unittests/Core/BroadcasterTest.cpp
lldb/trunk/unittests/Core/EventTest.cpp
lldb/trunk/unittests/Core/ListenerTest.cpp
Modified:
lldb/trunk/include/lldb/Breakpoint/Breakpoint.h
lldb/trunk/include/lldb/Breakpoint/BreakpointName.h
lldb/trunk/include/lldb/Core/Communication.h
lldb/trunk/include/lldb/Core/Debugger.h
lldb/trunk/include/lldb/Core/StructuredDataImpl.h
lldb/trunk/include/lldb/Interpreter/CommandInterpreter.h
lldb/trunk/include/lldb/Interpreter/ScriptInterpreter.h
lldb/trunk/include/lldb/Target/Process.h
lldb/trunk/include/lldb/Target/Target.h
lldb/trunk/include/lldb/Target/TargetList.h
lldb/trunk/include/lldb/Target/Thread.h
lldb/trunk/source/API/SBBroadcaster.cpp
lldb/trunk/source/API/SBCommandInterpreter.cpp
lldb/trunk/source/API/SBEvent.cpp
lldb/trunk/source/API/SBListener.cpp
lldb/trunk/source/API/SBStructuredData.cpp
lldb/trunk/source/Core/CMakeLists.txt
lldb/trunk/source/Core/Communication.cpp
lldb/trunk/source/Core/Debugger.cpp
lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h
lldb/trunk/source/Plugins/Process/Utility/HistoryThread.h
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.h
lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
lldb/trunk/source/Target/Process.cpp
lldb/trunk/source/Target/Target.cpp
lldb/trunk/source/Target/TargetList.cpp
lldb/trunk/source/Utility/CMakeLists.txt
lldb/trunk/unittests/Core/CMakeLists.txt
lldb/trunk/unittests/Utility/CMakeLists.txt
Modified: lldb/trunk/include/lldb/Breakpoint/Breakpoint.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Breakpoint/Breakpoint.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Breakpoint/Breakpoint.h (original)
+++ lldb/trunk/include/lldb/Breakpoint/Breakpoint.h Fri Dec 14 07:59:49 2018
@@ -21,8 +21,8 @@
#include "lldb/Breakpoint/BreakpointName.h"
#include "lldb/Breakpoint/BreakpointOptions.h"
#include "lldb/Breakpoint/Stoppoint.h"
-#include "lldb/Core/Event.h"
#include "lldb/Core/SearchFilter.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/StringList.h"
#include "lldb/Utility/StructuredData.h"
Modified: lldb/trunk/include/lldb/Breakpoint/BreakpointName.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Breakpoint/BreakpointName.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Breakpoint/BreakpointName.h (original)
+++ lldb/trunk/include/lldb/Breakpoint/BreakpointName.h Fri Dec 14 07:59:49 2018
@@ -20,8 +20,8 @@
#include "lldb/Breakpoint/BreakpointLocationList.h"
#include "lldb/Breakpoint/BreakpointOptions.h"
#include "lldb/Breakpoint/Stoppoint.h"
-#include "lldb/Core/Event.h"
#include "lldb/Core/SearchFilter.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/Flags.h"
#include "lldb/Utility/StringList.h"
#include "lldb/Utility/StructuredData.h"
Removed: lldb/trunk/include/lldb/Core/Broadcaster.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Broadcaster.h?rev=349156&view=auto
==============================================================================
--- lldb/trunk/include/lldb/Core/Broadcaster.h (original)
+++ lldb/trunk/include/lldb/Core/Broadcaster.h (removed)
@@ -1,598 +0,0 @@
-//===-- Broadcaster.h -------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef liblldb_Broadcaster_h_
-#define liblldb_Broadcaster_h_
-
-#include "lldb/Utility/ConstString.h"
-#include "lldb/lldb-defines.h"
-#include "lldb/lldb-forward.h"
-
-#include "llvm/ADT/SmallVector.h"
-
-#include <cstdint>
-#include <map>
-#include <memory>
-#include <mutex>
-#include <set>
-#include <string>
-#include <utility>
-#include <vector>
-
-namespace lldb_private {
-class Broadcaster;
-}
-namespace lldb_private {
-class EventData;
-}
-namespace lldb_private {
-class Listener;
-}
-namespace lldb_private {
-class Stream;
-}
-
-namespace lldb_private {
-
-//----------------------------------------------------------------------
-// lldb::BroadcastEventSpec
-//
-// This class is used to specify a kind of event to register for. The Debugger
-// maintains a list of BroadcastEventSpec's and when it is made
-//----------------------------------------------------------------------
-class BroadcastEventSpec {
-public:
- BroadcastEventSpec(const ConstString &broadcaster_class, uint32_t event_bits)
- : m_broadcaster_class(broadcaster_class), m_event_bits(event_bits) {}
-
- BroadcastEventSpec(const BroadcastEventSpec &rhs);
-
- ~BroadcastEventSpec() = default;
-
- const ConstString &GetBroadcasterClass() const { return m_broadcaster_class; }
-
- uint32_t GetEventBits() const { return m_event_bits; }
-
- // Tell whether this BroadcastEventSpec is contained in in_spec. That is: (a)
- // the two spec's share the same broadcaster class (b) the event bits of this
- // spec are wholly contained in those of in_spec.
- bool IsContainedIn(BroadcastEventSpec in_spec) const {
- if (m_broadcaster_class != in_spec.GetBroadcasterClass())
- return false;
- uint32_t in_bits = in_spec.GetEventBits();
- if (in_bits == m_event_bits)
- return true;
- else {
- if ((m_event_bits & in_bits) != 0 && (m_event_bits & ~in_bits) == 0)
- return true;
- }
- return false;
- }
-
- bool operator<(const BroadcastEventSpec &rhs) const;
- BroadcastEventSpec &operator=(const BroadcastEventSpec &rhs);
-
-private:
- ConstString m_broadcaster_class;
- uint32_t m_event_bits;
-};
-
-class BroadcasterManager
- : public std::enable_shared_from_this<BroadcasterManager> {
-public:
- friend class Listener;
-
-protected:
- BroadcasterManager();
-
-public:
- // Listeners hold onto weak pointers to their broadcaster managers. So they
- // must be made into shared pointers, which you do with
- // MakeBroadcasterManager.
-
- static lldb::BroadcasterManagerSP MakeBroadcasterManager();
-
- ~BroadcasterManager() = default;
-
- uint32_t RegisterListenerForEvents(const lldb::ListenerSP &listener_sp,
- BroadcastEventSpec event_spec);
-
- bool UnregisterListenerForEvents(const lldb::ListenerSP &listener_sp,
- BroadcastEventSpec event_spec);
-
- lldb::ListenerSP GetListenerForEventSpec(BroadcastEventSpec event_spec) const;
-
- void SignUpListenersForBroadcaster(Broadcaster &broadcaster);
-
- void RemoveListener(const lldb::ListenerSP &listener_sp);
-
- void RemoveListener(Listener *listener);
-
- void Clear();
-
-private:
- typedef std::pair<BroadcastEventSpec, lldb::ListenerSP> event_listener_key;
- typedef std::map<BroadcastEventSpec, lldb::ListenerSP> collection;
- typedef std::set<lldb::ListenerSP> listener_collection;
- collection m_event_map;
- listener_collection m_listeners;
-
- mutable std::recursive_mutex m_manager_mutex;
-
- // A couple of comparator classes for find_if:
-
- class BroadcasterClassMatches {
- public:
- BroadcasterClassMatches(const ConstString &broadcaster_class)
- : m_broadcaster_class(broadcaster_class) {}
-
- ~BroadcasterClassMatches() = default;
-
- bool operator()(const event_listener_key input) const {
- return (input.first.GetBroadcasterClass() == m_broadcaster_class);
- }
-
- private:
- ConstString m_broadcaster_class;
- };
-
- class BroadcastEventSpecMatches {
- public:
- BroadcastEventSpecMatches(BroadcastEventSpec broadcaster_spec)
- : m_broadcaster_spec(broadcaster_spec) {}
-
- ~BroadcastEventSpecMatches() = default;
-
- bool operator()(const event_listener_key input) const {
- return (input.first.IsContainedIn(m_broadcaster_spec));
- }
-
- private:
- BroadcastEventSpec m_broadcaster_spec;
- };
-
- class ListenerMatchesAndSharedBits {
- public:
- explicit ListenerMatchesAndSharedBits(BroadcastEventSpec broadcaster_spec,
- const lldb::ListenerSP listener_sp)
- : m_broadcaster_spec(broadcaster_spec), m_listener_sp(listener_sp) {}
-
- ~ListenerMatchesAndSharedBits() = default;
-
- bool operator()(const event_listener_key input) const {
- return (input.first.GetBroadcasterClass() ==
- m_broadcaster_spec.GetBroadcasterClass() &&
- (input.first.GetEventBits() &
- m_broadcaster_spec.GetEventBits()) != 0 &&
- input.second == m_listener_sp);
- }
-
- private:
- BroadcastEventSpec m_broadcaster_spec;
- const lldb::ListenerSP m_listener_sp;
- };
-
- class ListenerMatches {
- public:
- explicit ListenerMatches(const lldb::ListenerSP in_listener_sp)
- : m_listener_sp(in_listener_sp) {}
-
- ~ListenerMatches() = default;
-
- bool operator()(const event_listener_key input) const {
- if (input.second == m_listener_sp)
- return true;
- else
- return false;
- }
-
- private:
- const lldb::ListenerSP m_listener_sp;
- };
-
- class ListenerMatchesPointer {
- public:
- ListenerMatchesPointer(const Listener *in_listener)
- : m_listener(in_listener) {}
-
- ~ListenerMatchesPointer() = default;
-
- bool operator()(const event_listener_key input) const {
- if (input.second.get() == m_listener)
- return true;
- else
- return false;
- }
-
- bool operator()(const lldb::ListenerSP input) const {
- if (input.get() == m_listener)
- return true;
- else
- return false;
- }
-
- private:
- const Listener *m_listener;
- };
-};
-
-//----------------------------------------------------------------------
-/// @class Broadcaster Broadcaster.h "lldb/Core/Broadcaster.h" An event
-/// broadcasting class.
-///
-/// The Broadcaster class is designed to be subclassed by objects that wish to
-/// vend events in a multi-threaded environment. Broadcaster objects can each
-/// vend 32 events. Each event is represented by a bit in a 32 bit value and
-/// these bits can be set:
-/// @see Broadcaster::SetEventBits(uint32_t)
-/// or cleared:
-/// @see Broadcaster::ResetEventBits(uint32_t)
-/// When an event gets set the Broadcaster object will notify the Listener
-/// object that is listening for the event (if there is one).
-///
-/// Subclasses should provide broadcast bit definitions for any events they
-/// vend, typically using an enumeration:
-/// \code
-/// class Foo : public Broadcaster
-/// {
-/// public:
-/// //----------------------------------------------------------
-/// // Broadcaster event bits definitions.
-/// //----------------------------------------------------------
-/// enum
-/// {
-/// eBroadcastBitOne = (1 << 0),
-/// eBroadcastBitTwo = (1 << 1),
-/// eBroadcastBitThree = (1 << 2),
-/// ...
-/// };
-/// \endcode
-//----------------------------------------------------------------------
-class Broadcaster {
- friend class Listener;
- friend class Event;
-
-public:
- //------------------------------------------------------------------
- /// Construct with a broadcaster with a name.
- ///
- /// @param[in] name
- /// A NULL terminated C string that contains the name of the
- /// broadcaster object.
- //------------------------------------------------------------------
- Broadcaster(lldb::BroadcasterManagerSP manager_sp, const char *name);
-
- //------------------------------------------------------------------
- /// Destructor.
- ///
- /// The destructor is virtual since this class gets subclassed.
- //------------------------------------------------------------------
- virtual ~Broadcaster();
-
- void CheckInWithManager();
-
- //------------------------------------------------------------------
- /// Broadcast an event which has no associated data.
- ///
- /// @param[in] event_type
- /// The element from the enum defining this broadcaster's events
- /// that is being broadcast.
- ///
- /// @param[in] event_data
- /// User event data that will be owned by the lldb::Event that
- /// is created internally.
- ///
- /// @param[in] unique
- /// If true, then only add an event of this type if there isn't
- /// one already in the queue.
- ///
- //------------------------------------------------------------------
- void BroadcastEvent(lldb::EventSP &event_sp) {
- m_broadcaster_sp->BroadcastEvent(event_sp);
- }
-
- void BroadcastEventIfUnique(lldb::EventSP &event_sp) {
- m_broadcaster_sp->BroadcastEventIfUnique(event_sp);
- }
-
- void BroadcastEvent(uint32_t event_type,
- const lldb::EventDataSP &event_data_sp) {
- m_broadcaster_sp->BroadcastEvent(event_type, event_data_sp);
- }
-
- void BroadcastEvent(uint32_t event_type, EventData *event_data = nullptr) {
- m_broadcaster_sp->BroadcastEvent(event_type, event_data);
- }
-
- void BroadcastEventIfUnique(uint32_t event_type,
- EventData *event_data = nullptr) {
- m_broadcaster_sp->BroadcastEventIfUnique(event_type, event_data);
- }
-
- void Clear() { m_broadcaster_sp->Clear(); }
-
- virtual void AddInitialEventsToListener(const lldb::ListenerSP &listener_sp,
- uint32_t requested_events);
-
- //------------------------------------------------------------------
- /// Listen for any events specified by \a event_mask.
- ///
- /// Only one listener can listen to each event bit in a given Broadcaster.
- /// Once a listener has acquired an event bit, no other broadcaster will
- /// have access to it until it is relinquished by the first listener that
- /// gets it. The actual event bits that get acquired by \a listener may be
- /// different from what is requested in \a event_mask, and to track this the
- /// actual event bits that are acquired get returned.
- ///
- /// @param[in] listener
- /// The Listener object that wants to monitor the events that
- /// get broadcast by this object.
- ///
- /// @param[in] event_mask
- /// A bit mask that indicates which events the listener is
- /// asking to monitor.
- ///
- /// @return
- /// The actual event bits that were acquired by \a listener.
- //------------------------------------------------------------------
- uint32_t AddListener(const lldb::ListenerSP &listener_sp,
- uint32_t event_mask) {
- return m_broadcaster_sp->AddListener(listener_sp, event_mask);
- }
-
- //------------------------------------------------------------------
- /// Get the NULL terminated C string name of this Broadcaster object.
- ///
- /// @return
- /// The NULL terminated C string name of this Broadcaster.
- //------------------------------------------------------------------
- const ConstString &GetBroadcasterName() { return m_broadcaster_name; }
-
- //------------------------------------------------------------------
- /// Get the event name(s) for one or more event bits.
- ///
- /// @param[in] event_mask
- /// A bit mask that indicates which events to get names for.
- ///
- /// @return
- /// The NULL terminated C string name of this Broadcaster.
- //------------------------------------------------------------------
- bool GetEventNames(Stream &s, const uint32_t event_mask,
- bool prefix_with_broadcaster_name) const {
- return m_broadcaster_sp->GetEventNames(s, event_mask,
- prefix_with_broadcaster_name);
- }
-
- //------------------------------------------------------------------
- /// Set the name for an event bit.
- ///
- /// @param[in] event_mask
- /// A bit mask that indicates which events the listener is
- /// asking to monitor.
- ///
- /// @return
- /// The NULL terminated C string name of this Broadcaster.
- //------------------------------------------------------------------
- void SetEventName(uint32_t event_mask, const char *name) {
- m_broadcaster_sp->SetEventName(event_mask, name);
- }
-
- const char *GetEventName(uint32_t event_mask) const {
- return m_broadcaster_sp->GetEventName(event_mask);
- }
-
- bool EventTypeHasListeners(uint32_t event_type) {
- return m_broadcaster_sp->EventTypeHasListeners(event_type);
- }
-
- //------------------------------------------------------------------
- /// Removes a Listener from this broadcasters list and frees the event bits
- /// specified by \a event_mask that were previously acquired by \a listener
- /// (assuming \a listener was listening to this object) for other listener
- /// objects to use.
- ///
- /// @param[in] listener
- /// A Listener object that previously called AddListener.
- ///
- /// @param[in] event_mask
- /// The event bits \a listener wishes to relinquish.
- ///
- /// @return
- /// \b True if the listener was listening to this broadcaster
- /// and was removed, \b false otherwise.
- ///
- /// @see uint32_t Broadcaster::AddListener (Listener*, uint32_t)
- //------------------------------------------------------------------
- bool RemoveListener(const lldb::ListenerSP &listener_sp,
- uint32_t event_mask = UINT32_MAX) {
- return m_broadcaster_sp->RemoveListener(listener_sp, event_mask);
- }
-
- //------------------------------------------------------------------
- /// Provides a simple mechanism to temporarily redirect events from
- /// broadcaster. When you call this function passing in a listener and
- /// event type mask, all events from the broadcaster matching the mask will
- /// now go to the hijacking listener. Only one hijack can occur at a time.
- /// If we need more than this we will have to implement a Listener stack.
- ///
- /// @param[in] listener
- /// A Listener object. You do not need to call StartListeningForEvents
- /// for this broadcaster (that would fail anyway since the event bits
- /// would most likely be taken by the listener(s) you are usurping.
- ///
- /// @param[in] event_mask
- /// The event bits \a listener wishes to hijack.
- ///
- /// @return
- /// \b True if the event mask could be hijacked, \b false otherwise.
- ///
- /// @see uint32_t Broadcaster::AddListener (Listener*, uint32_t)
- //------------------------------------------------------------------
- bool HijackBroadcaster(const lldb::ListenerSP &listener_sp,
- uint32_t event_mask = UINT32_MAX) {
- return m_broadcaster_sp->HijackBroadcaster(listener_sp, event_mask);
- }
-
- bool IsHijackedForEvent(uint32_t event_mask) {
- return m_broadcaster_sp->IsHijackedForEvent(event_mask);
- }
-
- //------------------------------------------------------------------
- /// Restore the state of the Broadcaster from a previous hijack attempt.
- ///
- //------------------------------------------------------------------
- void RestoreBroadcaster() { m_broadcaster_sp->RestoreBroadcaster(); }
-
- // This needs to be filled in if you are going to register the broadcaster
- // with the broadcaster manager and do broadcaster class matching.
- // FIXME: Probably should make a ManagedBroadcaster subclass with all the bits
- // needed to work
- // with the BroadcasterManager, so that it is clearer how to add one.
- virtual ConstString &GetBroadcasterClass() const;
-
- lldb::BroadcasterManagerSP GetManager();
-
-protected:
- // BroadcasterImpl contains the actual Broadcaster implementation. The
- // Broadcaster makes a BroadcasterImpl which lives as long as it does. The
- // Listeners & the Events hold a weak pointer to the BroadcasterImpl, so that
- // they can survive if a Broadcaster they were listening to is destroyed w/o
- // their being able to unregister from it (which can happen if the
- // Broadcasters & Listeners are being destroyed on separate threads
- // simultaneously. The Broadcaster itself can't be shared out as a weak
- // pointer, because some things that are broadcasters (e.g. the Target and
- // the Process) are shared in their own right.
- //
- // For the most part, the Broadcaster functions dispatch to the
- // BroadcasterImpl, and are documented in the public Broadcaster API above.
-
- class BroadcasterImpl {
- friend class Listener;
- friend class Broadcaster;
-
- public:
- BroadcasterImpl(Broadcaster &broadcaster);
-
- ~BroadcasterImpl() = default;
-
- void BroadcastEvent(lldb::EventSP &event_sp);
-
- void BroadcastEventIfUnique(lldb::EventSP &event_sp);
-
- void BroadcastEvent(uint32_t event_type, EventData *event_data = nullptr);
-
- void BroadcastEvent(uint32_t event_type,
- const lldb::EventDataSP &event_data_sp);
-
- void BroadcastEventIfUnique(uint32_t event_type,
- EventData *event_data = nullptr);
-
- void Clear();
-
- uint32_t AddListener(const lldb::ListenerSP &listener_sp,
- uint32_t event_mask);
-
- const char *GetBroadcasterName() const {
- return m_broadcaster.GetBroadcasterName().AsCString();
- }
-
- Broadcaster *GetBroadcaster();
-
- bool GetEventNames(Stream &s, const uint32_t event_mask,
- bool prefix_with_broadcaster_name) const;
-
- void SetEventName(uint32_t event_mask, const char *name) {
- m_event_names[event_mask] = name;
- }
-
- const char *GetEventName(uint32_t event_mask) const {
- const auto pos = m_event_names.find(event_mask);
- if (pos != m_event_names.end())
- return pos->second.c_str();
- return nullptr;
- }
-
- bool EventTypeHasListeners(uint32_t event_type);
-
- bool RemoveListener(lldb_private::Listener *listener,
- uint32_t event_mask = UINT32_MAX);
-
- bool RemoveListener(const lldb::ListenerSP &listener_sp,
- uint32_t event_mask = UINT32_MAX);
-
- bool HijackBroadcaster(const lldb::ListenerSP &listener_sp,
- uint32_t event_mask = UINT32_MAX);
-
- bool IsHijackedForEvent(uint32_t event_mask);
-
- void RestoreBroadcaster();
-
- protected:
- void PrivateBroadcastEvent(lldb::EventSP &event_sp, bool unique);
-
- const char *GetHijackingListenerName();
-
- //------------------------------------------------------------------
- //
- //------------------------------------------------------------------
- typedef llvm::SmallVector<std::pair<lldb::ListenerWP, uint32_t>, 4>
- collection;
- typedef std::map<uint32_t, std::string> event_names_map;
-
- llvm::SmallVector<std::pair<lldb::ListenerSP, uint32_t &>, 4>
- GetListeners();
-
- Broadcaster &m_broadcaster; ///< The broadcaster that this implements
- event_names_map m_event_names; ///< Optionally define event names for
- ///readability and logging for each event bit
- collection m_listeners; ///< A list of Listener / event_mask pairs that are
- ///listening to this broadcaster.
- std::recursive_mutex
- m_listeners_mutex; ///< A mutex that protects \a m_listeners.
- std::vector<lldb::ListenerSP> m_hijacking_listeners; // A simple mechanism
- // to intercept events
- // from a broadcaster
- std::vector<uint32_t> m_hijacking_masks; // At some point we may want to
- // have a stack or Listener
- // collections, but for now this is just for private hijacking.
-
- private:
- //------------------------------------------------------------------
- // For Broadcaster only
- //------------------------------------------------------------------
- DISALLOW_COPY_AND_ASSIGN(BroadcasterImpl);
- };
-
- typedef std::shared_ptr<BroadcasterImpl> BroadcasterImplSP;
- typedef std::weak_ptr<BroadcasterImpl> BroadcasterImplWP;
-
- BroadcasterImplSP GetBroadcasterImpl() { return m_broadcaster_sp; }
-
- const char *GetHijackingListenerName() {
- return m_broadcaster_sp->GetHijackingListenerName();
- }
- //------------------------------------------------------------------
- // Classes that inherit from Broadcaster can see and modify these
- //------------------------------------------------------------------
-
-private:
- //------------------------------------------------------------------
- // For Broadcaster only
- //------------------------------------------------------------------
- BroadcasterImplSP m_broadcaster_sp;
- lldb::BroadcasterManagerSP m_manager_sp;
- const ConstString
- m_broadcaster_name; ///< The name of this broadcaster object.
-
- DISALLOW_COPY_AND_ASSIGN(Broadcaster);
-};
-
-} // namespace lldb_private
-
-#endif // liblldb_Broadcaster_h_
Modified: lldb/trunk/include/lldb/Core/Communication.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Communication.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/Communication.h (original)
+++ lldb/trunk/include/lldb/Core/Communication.h Fri Dec 14 07:59:49 2018
@@ -10,8 +10,8 @@
#ifndef liblldb_Communication_h_
#define liblldb_Communication_h_
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Host/HostThread.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/Timeout.h"
#include "lldb/lldb-defines.h"
#include "lldb/lldb-enumerations.h"
Modified: lldb/trunk/include/lldb/Core/Debugger.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Debugger.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/Debugger.h (original)
+++ lldb/trunk/include/lldb/Core/Debugger.h Fri Dec 14 07:59:49 2018
@@ -15,7 +15,6 @@
#include <memory>
#include <vector>
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Core/FormatEntity.h"
#include "lldb/Core/IOHandler.h"
#include "lldb/Core/SourceManager.h"
@@ -25,6 +24,7 @@
#include "lldb/Target/ExecutionContext.h"
#include "lldb/Target/Platform.h"
#include "lldb/Target/TargetList.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/ConstString.h"
#include "lldb/Utility/FileSpec.h"
#include "lldb/Utility/Status.h"
Removed: lldb/trunk/include/lldb/Core/Event.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Event.h?rev=349156&view=auto
==============================================================================
--- lldb/trunk/include/lldb/Core/Event.h (original)
+++ lldb/trunk/include/lldb/Core/Event.h (removed)
@@ -1,274 +0,0 @@
-//===-- Event.h -------------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef liblldb_Event_h_
-#define liblldb_Event_h_
-
-#include "lldb/Core/Broadcaster.h"
-#include "lldb/Utility/ConstString.h"
-#include "lldb/Utility/Predicate.h"
-#include "lldb/Utility/StructuredData.h"
-#include "lldb/lldb-defines.h"
-#include "lldb/lldb-forward.h"
-
-#include "llvm/ADT/StringRef.h"
-
-#include <chrono>
-#include <memory>
-#include <string>
-
-#include <stddef.h>
-#include <stdint.h>
-
-namespace lldb_private {
-class Event;
-}
-namespace lldb_private {
-class Stream;
-}
-
-namespace lldb_private {
-
-//----------------------------------------------------------------------
-// lldb::EventData
-//----------------------------------------------------------------------
-class EventData {
- friend class Event;
-
-public:
- EventData();
-
- virtual ~EventData();
-
- virtual const ConstString &GetFlavor() const = 0;
-
- virtual void Dump(Stream *s) const;
-
-private:
- virtual void DoOnRemoval(Event *event_ptr) {}
-
- DISALLOW_COPY_AND_ASSIGN(EventData);
-};
-
-//----------------------------------------------------------------------
-// lldb::EventDataBytes
-//----------------------------------------------------------------------
-class EventDataBytes : public EventData {
-public:
- //------------------------------------------------------------------
- // Constructors
- //------------------------------------------------------------------
- EventDataBytes();
-
- EventDataBytes(const char *cstr);
-
- EventDataBytes(llvm::StringRef str);
-
- EventDataBytes(const void *src, size_t src_len);
-
- ~EventDataBytes() override;
-
- //------------------------------------------------------------------
- // Member functions
- //------------------------------------------------------------------
- const ConstString &GetFlavor() const override;
-
- void Dump(Stream *s) const override;
-
- const void *GetBytes() const;
-
- size_t GetByteSize() const;
-
- void SetBytes(const void *src, size_t src_len);
-
- void SwapBytes(std::string &new_bytes);
-
- void SetBytesFromCString(const char *cstr);
-
- //------------------------------------------------------------------
- // Static functions
- //------------------------------------------------------------------
- static const EventDataBytes *GetEventDataFromEvent(const Event *event_ptr);
-
- static const void *GetBytesFromEvent(const Event *event_ptr);
-
- static size_t GetByteSizeFromEvent(const Event *event_ptr);
-
- static const ConstString &GetFlavorString();
-
-private:
- std::string m_bytes;
-
- DISALLOW_COPY_AND_ASSIGN(EventDataBytes);
-};
-
-class EventDataReceipt : public EventData {
-public:
- EventDataReceipt() : EventData(), m_predicate(false) {}
-
- ~EventDataReceipt() override {}
-
- static const ConstString &GetFlavorString() {
- static ConstString g_flavor("Process::ProcessEventData");
- return g_flavor;
- }
-
- const ConstString &GetFlavor() const override { return GetFlavorString(); }
-
- bool WaitForEventReceived(const Timeout<std::micro> &timeout = llvm::None) {
- return m_predicate.WaitForValueEqualTo(true, timeout);
- }
-
-private:
- Predicate<bool> m_predicate;
-
- void DoOnRemoval(Event *event_ptr) override {
- m_predicate.SetValue(true, eBroadcastAlways);
- }
-};
-
-//----------------------------------------------------------------------
-/// This class handles one or more StructuredData::Dictionary entries
-/// that are raised for structured data events.
-//----------------------------------------------------------------------
-
-class EventDataStructuredData : public EventData {
-public:
- //------------------------------------------------------------------
- // Constructors
- //------------------------------------------------------------------
- EventDataStructuredData();
-
- EventDataStructuredData(const lldb::ProcessSP &process_sp,
- const StructuredData::ObjectSP &object_sp,
- const lldb::StructuredDataPluginSP &plugin_sp);
-
- ~EventDataStructuredData() override;
-
- //------------------------------------------------------------------
- // Member functions
- //------------------------------------------------------------------
- const ConstString &GetFlavor() const override;
-
- void Dump(Stream *s) const override;
-
- const lldb::ProcessSP &GetProcess() const;
-
- const StructuredData::ObjectSP &GetObject() const;
-
- const lldb::StructuredDataPluginSP &GetStructuredDataPlugin() const;
-
- void SetProcess(const lldb::ProcessSP &process_sp);
-
- void SetObject(const StructuredData::ObjectSP &object_sp);
-
- void SetStructuredDataPlugin(const lldb::StructuredDataPluginSP &plugin_sp);
-
- //------------------------------------------------------------------
- // Static functions
- //------------------------------------------------------------------
- static const EventDataStructuredData *
- GetEventDataFromEvent(const Event *event_ptr);
-
- static lldb::ProcessSP GetProcessFromEvent(const Event *event_ptr);
-
- static StructuredData::ObjectSP GetObjectFromEvent(const Event *event_ptr);
-
- static lldb::StructuredDataPluginSP
- GetPluginFromEvent(const Event *event_ptr);
-
- static const ConstString &GetFlavorString();
-
-private:
- lldb::ProcessSP m_process_sp;
- StructuredData::ObjectSP m_object_sp;
- lldb::StructuredDataPluginSP m_plugin_sp;
-
- DISALLOW_COPY_AND_ASSIGN(EventDataStructuredData);
-};
-
-//----------------------------------------------------------------------
-// lldb::Event
-//----------------------------------------------------------------------
-class Event {
- friend class Listener;
- friend class EventData;
- friend class Broadcaster::BroadcasterImpl;
-
-public:
- Event(Broadcaster *broadcaster, uint32_t event_type,
- EventData *data = nullptr);
-
- Event(Broadcaster *broadcaster, uint32_t event_type,
- const lldb::EventDataSP &event_data_sp);
-
- Event(uint32_t event_type, EventData *data = nullptr);
-
- Event(uint32_t event_type, const lldb::EventDataSP &event_data_sp);
-
- ~Event();
-
- void Dump(Stream *s) const;
-
- EventData *GetData() { return m_data_sp.get(); }
-
- const EventData *GetData() const { return m_data_sp.get(); }
-
- void SetData(EventData *new_data) { m_data_sp.reset(new_data); }
-
- uint32_t GetType() const { return m_type; }
-
- void SetType(uint32_t new_type) { m_type = new_type; }
-
- Broadcaster *GetBroadcaster() const {
- Broadcaster::BroadcasterImplSP broadcaster_impl_sp =
- m_broadcaster_wp.lock();
- if (broadcaster_impl_sp)
- return broadcaster_impl_sp->GetBroadcaster();
- else
- return nullptr;
- }
-
- bool BroadcasterIs(Broadcaster *broadcaster) {
- Broadcaster::BroadcasterImplSP broadcaster_impl_sp =
- m_broadcaster_wp.lock();
- if (broadcaster_impl_sp)
- return broadcaster_impl_sp->GetBroadcaster() == broadcaster;
- else
- return false;
- }
-
- void Clear() { m_data_sp.reset(); }
-
-private:
- // This is only called by Listener when it pops an event off the queue for
- // the listener. It calls the Event Data's DoOnRemoval() method, which is
- // virtual and can be overridden by the specific data classes.
-
- void DoOnRemoval();
-
- // Called by Broadcaster::BroadcastEvent prior to letting all the listeners
- // know about it update the contained broadcaster so that events can be
- // popped off one queue and re-broadcast to others.
- void SetBroadcaster(Broadcaster *broadcaster) {
- m_broadcaster_wp = broadcaster->GetBroadcasterImpl();
- }
-
- Broadcaster::BroadcasterImplWP
- m_broadcaster_wp; // The broadcaster that sent this event
- uint32_t m_type; // The bit describing this event
- lldb::EventDataSP m_data_sp; // User specific data for this event
-
- DISALLOW_COPY_AND_ASSIGN(Event);
- Event(); // Disallow default constructor
-};
-
-} // namespace lldb_private
-
-#endif // liblldb_Event_h_
Removed: lldb/trunk/include/lldb/Core/Listener.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Listener.h?rev=349156&view=auto
==============================================================================
--- lldb/trunk/include/lldb/Core/Listener.h (original)
+++ lldb/trunk/include/lldb/Core/Listener.h (removed)
@@ -1,161 +0,0 @@
-//===-- Listener.h ----------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef liblldb_Select_h_
-#define liblldb_Select_h_
-
-#include "lldb/Core/Broadcaster.h"
-#include "lldb/Utility/Timeout.h"
-#include "lldb/lldb-defines.h"
-#include "lldb/lldb-forward.h"
-
-#include <condition_variable>
-#include <list>
-#include <map>
-#include <memory>
-#include <mutex>
-#include <ratio>
-#include <string>
-#include <vector>
-
-#include <stddef.h>
-#include <stdint.h>
-
-namespace lldb_private {
-class ConstString;
-}
-namespace lldb_private {
-class Event;
-}
-
-namespace lldb_private {
-
-class Listener : public std::enable_shared_from_this<Listener> {
-public:
- typedef bool (*HandleBroadcastCallback)(lldb::EventSP &event_sp, void *baton);
-
- friend class Broadcaster;
- friend class BroadcasterManager;
-
- //------------------------------------------------------------------
- // Constructors and Destructors
- //------------------------------------------------------------------
- //
- // Listeners have to be constructed into shared pointers - at least if you
- // want them to listen to Broadcasters,
-protected:
- Listener(const char *name);
-
-public:
- static lldb::ListenerSP MakeListener(const char *name);
-
- ~Listener();
-
- void AddEvent(lldb::EventSP &event);
-
- void Clear();
-
- const char *GetName() { return m_name.c_str(); }
-
- uint32_t StartListeningForEventSpec(lldb::BroadcasterManagerSP manager_sp,
- const BroadcastEventSpec &event_spec);
-
- bool StopListeningForEventSpec(lldb::BroadcasterManagerSP manager_sp,
- const BroadcastEventSpec &event_spec);
-
- uint32_t StartListeningForEvents(Broadcaster *broadcaster,
- uint32_t event_mask);
-
- uint32_t StartListeningForEvents(Broadcaster *broadcaster,
- uint32_t event_mask,
- HandleBroadcastCallback callback,
- void *callback_user_data);
-
- bool StopListeningForEvents(Broadcaster *broadcaster, uint32_t event_mask);
-
- Event *PeekAtNextEvent();
-
- Event *PeekAtNextEventForBroadcaster(Broadcaster *broadcaster);
-
- Event *PeekAtNextEventForBroadcasterWithType(Broadcaster *broadcaster,
- uint32_t event_type_mask);
-
- // Returns true if an event was received, false if we timed out.
- bool GetEvent(lldb::EventSP &event_sp, const Timeout<std::micro> &timeout);
-
- bool GetEventForBroadcaster(Broadcaster *broadcaster, lldb::EventSP &event_sp,
- const Timeout<std::micro> &timeout);
-
- bool GetEventForBroadcasterWithType(Broadcaster *broadcaster,
- uint32_t event_type_mask,
- lldb::EventSP &event_sp,
- const Timeout<std::micro> &timeout);
-
- size_t HandleBroadcastEvent(lldb::EventSP &event_sp);
-
-private:
- //------------------------------------------------------------------
- // Classes that inherit from Listener can see and modify these
- //------------------------------------------------------------------
- struct BroadcasterInfo {
- BroadcasterInfo(uint32_t mask, HandleBroadcastCallback cb = nullptr,
- void *ud = nullptr)
- : event_mask(mask), callback(cb), callback_user_data(ud) {}
-
- uint32_t event_mask;
- HandleBroadcastCallback callback;
- void *callback_user_data;
- };
-
- typedef std::multimap<Broadcaster::BroadcasterImplWP, BroadcasterInfo,
- std::owner_less<Broadcaster::BroadcasterImplWP>>
- broadcaster_collection;
- typedef std::list<lldb::EventSP> event_collection;
- typedef std::vector<lldb::BroadcasterManagerWP>
- broadcaster_manager_collection;
-
- bool
- FindNextEventInternal(std::unique_lock<std::mutex> &lock,
- Broadcaster *broadcaster, // nullptr for any broadcaster
- const ConstString *sources, // nullptr for any event
- uint32_t num_sources, uint32_t event_type_mask,
- lldb::EventSP &event_sp, bool remove);
-
- bool GetEventInternal(const Timeout<std::micro> &timeout,
- Broadcaster *broadcaster, // nullptr for any broadcaster
- const ConstString *sources, // nullptr for any event
- uint32_t num_sources, uint32_t event_type_mask,
- lldb::EventSP &event_sp);
-
- std::string m_name;
- broadcaster_collection m_broadcasters;
- std::recursive_mutex m_broadcasters_mutex; // Protects m_broadcasters
- event_collection m_events;
- std::mutex m_events_mutex; // Protects m_broadcasters and m_events
- std::condition_variable m_events_condition;
- broadcaster_manager_collection m_broadcaster_managers;
-
- void BroadcasterWillDestruct(Broadcaster *);
-
- void BroadcasterManagerWillDestruct(lldb::BroadcasterManagerSP manager_sp);
-
- // broadcaster_collection::iterator
- // FindBroadcasterWithMask (Broadcaster *broadcaster,
- // uint32_t event_mask,
- // bool exact);
-
- //------------------------------------------------------------------
- // For Listener only
- //------------------------------------------------------------------
- DISALLOW_COPY_AND_ASSIGN(Listener);
-};
-
-} // namespace lldb_private
-
-#endif // liblldb_Select_h_
Modified: lldb/trunk/include/lldb/Core/StructuredDataImpl.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/StructuredDataImpl.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/StructuredDataImpl.h (original)
+++ lldb/trunk/include/lldb/Core/StructuredDataImpl.h Fri Dec 14 07:59:49 2018
@@ -10,8 +10,8 @@
#ifndef liblldb_StructuredDataImpl_h_
#define liblldb_StructuredDataImpl_h_
-#include "lldb/Core/Event.h"
#include "lldb/Target/StructuredDataPlugin.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/Status.h"
#include "lldb/Utility/Stream.h"
#include "lldb/Utility/StructuredData.h"
Modified: lldb/trunk/include/lldb/Interpreter/CommandInterpreter.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Interpreter/CommandInterpreter.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Interpreter/CommandInterpreter.h (original)
+++ lldb/trunk/include/lldb/Interpreter/CommandInterpreter.h Fri Dec 14 07:59:49 2018
@@ -10,21 +10,21 @@
#ifndef liblldb_CommandInterpreter_h_
#define liblldb_CommandInterpreter_h_
-#include <mutex>
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Core/Debugger.h"
-#include "lldb/Core/Event.h"
#include "lldb/Core/IOHandler.h"
#include "lldb/Interpreter/CommandAlias.h"
#include "lldb/Interpreter/CommandHistory.h"
#include "lldb/Interpreter/CommandObject.h"
#include "lldb/Interpreter/ScriptInterpreter.h"
#include "lldb/Utility/Args.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/CompletionRequest.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/StringList.h"
#include "lldb/lldb-forward.h"
#include "lldb/lldb-private.h"
+#include <mutex>
namespace lldb_private {
Modified: lldb/trunk/include/lldb/Interpreter/ScriptInterpreter.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Interpreter/ScriptInterpreter.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Interpreter/ScriptInterpreter.h (original)
+++ lldb/trunk/include/lldb/Interpreter/ScriptInterpreter.h Fri Dec 14 07:59:49 2018
@@ -13,9 +13,9 @@
#include "lldb/lldb-private.h"
#include "lldb/Breakpoint/BreakpointOptions.h"
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Core/PluginInterface.h"
#include "lldb/Core/SearchFilter.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/Status.h"
#include "lldb/Utility/StructuredData.h"
Modified: lldb/trunk/include/lldb/Target/Process.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Process.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Target/Process.h (original)
+++ lldb/trunk/include/lldb/Target/Process.h Fri Dec 14 07:59:49 2018
@@ -23,10 +23,7 @@
#include <vector>
#include "lldb/Breakpoint/BreakpointSiteList.h"
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Core/Communication.h"
-#include "lldb/Core/Event.h"
-#include "lldb/Core/Listener.h"
#include "lldb/Core/LoadedModuleInfoList.h"
#include "lldb/Core/PluginInterface.h"
#include "lldb/Core/ThreadSafeValue.h"
@@ -43,6 +40,9 @@
#include "lldb/Target/QueueList.h"
#include "lldb/Target/ThreadList.h"
#include "lldb/Utility/ArchSpec.h"
+#include "lldb/Utility/Broadcaster.h"
+#include "lldb/Utility/Event.h"
+#include "lldb/Utility/Listener.h"
#include "lldb/Utility/NameMatches.h"
#include "lldb/Utility/Status.h"
#include "lldb/Utility/StructuredData.h"
Modified: lldb/trunk/include/lldb/Target/Target.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Target.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Target/Target.h (original)
+++ lldb/trunk/include/lldb/Target/Target.h Fri Dec 14 07:59:49 2018
@@ -20,7 +20,6 @@
#include "lldb/Breakpoint/BreakpointName.h"
#include "lldb/Breakpoint/WatchpointList.h"
#include "lldb/Core/Architecture.h"
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Core/Disassembler.h"
#include "lldb/Core/ModuleList.h"
#include "lldb/Core/UserSettingsController.h"
@@ -31,6 +30,7 @@
#include "lldb/Target/ProcessLaunchInfo.h"
#include "lldb/Target/SectionLoadHistory.h"
#include "lldb/Utility/ArchSpec.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/LLDBAssert.h"
#include "lldb/Utility/Timeout.h"
#include "lldb/lldb-public.h"
Modified: lldb/trunk/include/lldb/Target/TargetList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/TargetList.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Target/TargetList.h (original)
+++ lldb/trunk/include/lldb/Target/TargetList.h Fri Dec 14 07:59:49 2018
@@ -13,8 +13,8 @@
#include <mutex>
#include <vector>
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Target/Target.h"
+#include "lldb/Utility/Broadcaster.h"
namespace lldb_private {
Modified: lldb/trunk/include/lldb/Target/Thread.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Thread.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Target/Thread.h (original)
+++ lldb/trunk/include/lldb/Target/Thread.h Fri Dec 14 07:59:49 2018
@@ -15,12 +15,12 @@
#include <string>
#include <vector>
-#include "lldb/Core/Broadcaster.h"
-#include "lldb/Core/Event.h"
#include "lldb/Core/UserSettingsController.h"
#include "lldb/Target/ExecutionContextScope.h"
#include "lldb/Target/RegisterCheckpoint.h"
#include "lldb/Target/StackFrameList.h"
+#include "lldb/Utility/Broadcaster.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/StructuredData.h"
#include "lldb/Utility/UserID.h"
#include "lldb/lldb-private.h"
Copied: lldb/trunk/include/lldb/Utility/Broadcaster.h (from r349154, lldb/trunk/include/lldb/Core/Broadcaster.h)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/Broadcaster.h?p2=lldb/trunk/include/lldb/Utility/Broadcaster.h&p1=lldb/trunk/include/lldb/Core/Broadcaster.h&r1=349154&r2=349157&rev=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/Broadcaster.h (original)
+++ lldb/trunk/include/lldb/Utility/Broadcaster.h Fri Dec 14 07:59:49 2018
@@ -7,8 +7,8 @@
//
//===----------------------------------------------------------------------===//
-#ifndef liblldb_Broadcaster_h_
-#define liblldb_Broadcaster_h_
+#ifndef LLDB_UTILITY_BROADCASTER_H
+#define LLDB_UTILITY_BROADCASTER_H
#include "lldb/Utility/ConstString.h"
#include "lldb/lldb-defines.h"
@@ -223,7 +223,7 @@ private:
};
//----------------------------------------------------------------------
-/// @class Broadcaster Broadcaster.h "lldb/Core/Broadcaster.h" An event
+/// @class Broadcaster Broadcaster.h "lldb/Utility/Broadcaster.h" An event
/// broadcasting class.
///
/// The Broadcaster class is designed to be subclassed by objects that wish to
@@ -595,4 +595,4 @@ private:
} // namespace lldb_private
-#endif // liblldb_Broadcaster_h_
+#endif // LLDB_UTILITY_BROADCASTER_H
Copied: lldb/trunk/include/lldb/Utility/Event.h (from r349154, lldb/trunk/include/lldb/Core/Event.h)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/Event.h?p2=lldb/trunk/include/lldb/Utility/Event.h&p1=lldb/trunk/include/lldb/Core/Event.h&r1=349154&r2=349157&rev=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/Event.h (original)
+++ lldb/trunk/include/lldb/Utility/Event.h Fri Dec 14 07:59:49 2018
@@ -7,10 +7,10 @@
//
//===----------------------------------------------------------------------===//
-#ifndef liblldb_Event_h_
-#define liblldb_Event_h_
+#ifndef LLDB_UTILITY_EVENT_H
+#define LLDB_UTILITY_EVENT_H
-#include "lldb/Core/Broadcaster.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/ConstString.h"
#include "lldb/Utility/Predicate.h"
#include "lldb/Utility/StructuredData.h"
@@ -271,4 +271,4 @@ private:
} // namespace lldb_private
-#endif // liblldb_Event_h_
+#endif // LLDB_UTILITY_EVENT_H
Copied: lldb/trunk/include/lldb/Utility/Listener.h (from r349154, lldb/trunk/include/lldb/Core/Listener.h)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/Listener.h?p2=lldb/trunk/include/lldb/Utility/Listener.h&p1=lldb/trunk/include/lldb/Core/Listener.h&r1=349154&r2=349157&rev=349157&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/Listener.h (original)
+++ lldb/trunk/include/lldb/Utility/Listener.h Fri Dec 14 07:59:49 2018
@@ -7,10 +7,10 @@
//
//===----------------------------------------------------------------------===//
-#ifndef liblldb_Select_h_
-#define liblldb_Select_h_
+#ifndef LLDB_UTILITY_LISTENER_H
+#define LLDB_UTILITY_LISTENER_H
-#include "lldb/Core/Broadcaster.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/Timeout.h"
#include "lldb/lldb-defines.h"
#include "lldb/lldb-forward.h"
@@ -158,4 +158,4 @@ private:
} // namespace lldb_private
-#endif // liblldb_Select_h_
+#endif // LLDB_UTILITY_LISTENER_H
Modified: lldb/trunk/source/API/SBBroadcaster.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBBroadcaster.cpp?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/API/SBBroadcaster.cpp (original)
+++ lldb/trunk/source/API/SBBroadcaster.cpp Fri Dec 14 07:59:49 2018
@@ -7,7 +7,7 @@
//
//===----------------------------------------------------------------------===//
-#include "lldb/Core/Broadcaster.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/Log.h"
#include "lldb/API/SBBroadcaster.h"
Modified: lldb/trunk/source/API/SBCommandInterpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBCommandInterpreter.cpp?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/API/SBCommandInterpreter.cpp (original)
+++ lldb/trunk/source/API/SBCommandInterpreter.cpp Fri Dec 14 07:59:49 2018
@@ -9,11 +9,11 @@
#include "lldb/lldb-types.h"
-#include "lldb/Core/Listener.h"
#include "lldb/Interpreter/CommandInterpreter.h"
#include "lldb/Interpreter/CommandObjectMultiword.h"
#include "lldb/Interpreter/CommandReturnObject.h"
#include "lldb/Target/Target.h"
+#include "lldb/Utility/Listener.h"
#include "lldb/API/SBBroadcaster.h"
#include "lldb/API/SBCommandInterpreter.h"
Modified: lldb/trunk/source/API/SBEvent.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBEvent.cpp?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/API/SBEvent.cpp (original)
+++ lldb/trunk/source/API/SBEvent.cpp Fri Dec 14 07:59:49 2018
@@ -12,11 +12,11 @@
#include "lldb/API/SBStream.h"
#include "lldb/Breakpoint/Breakpoint.h"
-#include "lldb/Core/Event.h"
#include "lldb/Core/StreamFile.h"
#include "lldb/Interpreter/CommandInterpreter.h"
#include "lldb/Target/Process.h"
#include "lldb/Utility/ConstString.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/Stream.h"
using namespace lldb;
Modified: lldb/trunk/source/API/SBListener.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBListener.cpp?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/API/SBListener.cpp (original)
+++ lldb/trunk/source/API/SBListener.cpp Fri Dec 14 07:59:49 2018
@@ -12,9 +12,9 @@
#include "lldb/API/SBDebugger.h"
#include "lldb/API/SBEvent.h"
#include "lldb/API/SBStream.h"
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Core/Debugger.h"
-#include "lldb/Core/Listener.h"
+#include "lldb/Utility/Broadcaster.h"
+#include "lldb/Utility/Listener.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/StreamString.h"
Modified: lldb/trunk/source/API/SBStructuredData.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBStructuredData.cpp?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/API/SBStructuredData.cpp (original)
+++ lldb/trunk/source/API/SBStructuredData.cpp Fri Dec 14 07:59:49 2018
@@ -11,9 +11,9 @@
#include "lldb/API/SBStream.h"
#include "lldb/API/SBStringList.h"
-#include "lldb/Core/Event.h"
#include "lldb/Core/StructuredDataImpl.h"
#include "lldb/Target/StructuredDataPlugin.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/Status.h"
#include "lldb/Utility/Stream.h"
#include "lldb/Utility/StructuredData.h"
Removed: lldb/trunk/source/Core/Broadcaster.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Broadcaster.cpp?rev=349156&view=auto
==============================================================================
--- lldb/trunk/source/Core/Broadcaster.cpp (original)
+++ lldb/trunk/source/Core/Broadcaster.cpp (removed)
@@ -1,479 +0,0 @@
-//===-- Broadcaster.cpp -----------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "lldb/Core/Broadcaster.h"
-
-#include "lldb/Core/Event.h"
-#include "lldb/Core/Listener.h"
-#include "lldb/Utility/Log.h"
-#include "lldb/Utility/Logging.h"
-#include "lldb/Utility/Stream.h"
-#include "lldb/Utility/StreamString.h"
-
-#include <algorithm>
-#include <memory>
-#include <type_traits>
-
-#include <assert.h>
-#include <stddef.h>
-
-using namespace lldb;
-using namespace lldb_private;
-
-Broadcaster::Broadcaster(BroadcasterManagerSP manager_sp, const char *name)
- : m_broadcaster_sp(std::make_shared<BroadcasterImpl>(*this)),
- m_manager_sp(manager_sp), m_broadcaster_name(name) {
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_OBJECT));
- if (log)
- log->Printf("%p Broadcaster::Broadcaster(\"%s\")",
- static_cast<void *>(this), GetBroadcasterName().AsCString());
-}
-
-Broadcaster::BroadcasterImpl::BroadcasterImpl(Broadcaster &broadcaster)
- : m_broadcaster(broadcaster), m_listeners(), m_listeners_mutex(),
- m_hijacking_listeners(), m_hijacking_masks() {}
-
-Broadcaster::~Broadcaster() {
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_OBJECT));
- if (log)
- log->Printf("%p Broadcaster::~Broadcaster(\"%s\")",
- static_cast<void *>(this), m_broadcaster_name.AsCString());
-
- Clear();
-}
-
-void Broadcaster::CheckInWithManager() {
- if (m_manager_sp) {
- m_manager_sp->SignUpListenersForBroadcaster(*this);
- }
-}
-
-llvm::SmallVector<std::pair<ListenerSP, uint32_t &>, 4>
-Broadcaster::BroadcasterImpl::GetListeners() {
- llvm::SmallVector<std::pair<ListenerSP, uint32_t &>, 4> listeners;
- listeners.reserve(m_listeners.size());
-
- for (auto it = m_listeners.begin(); it != m_listeners.end();) {
- lldb::ListenerSP curr_listener_sp(it->first.lock());
- if (curr_listener_sp && it->second) {
- listeners.emplace_back(std::move(curr_listener_sp), it->second);
- ++it;
- } else
- it = m_listeners.erase(it);
- }
-
- return listeners;
-}
-
-void Broadcaster::BroadcasterImpl::Clear() {
- std::lock_guard<std::recursive_mutex> guard(m_listeners_mutex);
-
- // Make sure the listener forgets about this broadcaster. We do this in the
- // broadcaster in case the broadcaster object initiates the removal.
- for (auto &pair : GetListeners())
- pair.first->BroadcasterWillDestruct(&m_broadcaster);
-
- m_listeners.clear();
-}
-
-Broadcaster *Broadcaster::BroadcasterImpl::GetBroadcaster() {
- return &m_broadcaster;
-}
-
-bool Broadcaster::BroadcasterImpl::GetEventNames(
- Stream &s, uint32_t event_mask, bool prefix_with_broadcaster_name) const {
- uint32_t num_names_added = 0;
- if (event_mask && !m_event_names.empty()) {
- event_names_map::const_iterator end = m_event_names.end();
- for (uint32_t bit = 1u, mask = event_mask; mask != 0 && bit != 0;
- bit <<= 1, mask >>= 1) {
- if (mask & 1) {
- event_names_map::const_iterator pos = m_event_names.find(bit);
- if (pos != end) {
- if (num_names_added > 0)
- s.PutCString(", ");
-
- if (prefix_with_broadcaster_name) {
- s.PutCString(GetBroadcasterName());
- s.PutChar('.');
- }
- s.PutCString(pos->second);
- ++num_names_added;
- }
- }
- }
- }
- return num_names_added > 0;
-}
-
-void Broadcaster::AddInitialEventsToListener(
- const lldb::ListenerSP &listener_sp, uint32_t requested_events) {}
-
-uint32_t
-Broadcaster::BroadcasterImpl::AddListener(const lldb::ListenerSP &listener_sp,
- uint32_t event_mask) {
- if (!listener_sp)
- return 0;
-
- std::lock_guard<std::recursive_mutex> guard(m_listeners_mutex);
-
- // See if we already have this listener, and if so, update its mask
-
- bool handled = false;
-
- for (auto &pair : GetListeners()) {
- if (pair.first == listener_sp) {
- handled = true;
- pair.second |= event_mask;
- m_broadcaster.AddInitialEventsToListener(listener_sp, event_mask);
- break;
- }
- }
-
- if (!handled) {
- // Grant a new listener the available event bits
- m_listeners.push_back(
- std::make_pair(lldb::ListenerWP(listener_sp), event_mask));
-
- // Individual broadcasters decide whether they have outstanding data when a
- // listener attaches, and insert it into the listener with this method.
- m_broadcaster.AddInitialEventsToListener(listener_sp, event_mask);
- }
-
- // Return the event bits that were granted to the listener
- return event_mask;
-}
-
-bool Broadcaster::BroadcasterImpl::EventTypeHasListeners(uint32_t event_type) {
- std::lock_guard<std::recursive_mutex> guard(m_listeners_mutex);
-
- if (!m_hijacking_listeners.empty() && event_type & m_hijacking_masks.back())
- return true;
-
- for (auto &pair : GetListeners()) {
- if (pair.second & event_type)
- return true;
- }
- return false;
-}
-
-bool Broadcaster::BroadcasterImpl::RemoveListener(
- lldb_private::Listener *listener, uint32_t event_mask) {
- if (!listener)
- return false;
-
- std::lock_guard<std::recursive_mutex> guard(m_listeners_mutex);
- for (auto &pair : GetListeners()) {
- if (pair.first.get() == listener) {
- pair.second &= ~event_mask;
- return true;
- }
- }
- return false;
-}
-
-bool Broadcaster::BroadcasterImpl::RemoveListener(
- const lldb::ListenerSP &listener_sp, uint32_t event_mask) {
- return RemoveListener(listener_sp.get(), event_mask);
-}
-
-void Broadcaster::BroadcasterImpl::BroadcastEvent(EventSP &event_sp) {
- return PrivateBroadcastEvent(event_sp, false);
-}
-
-void Broadcaster::BroadcasterImpl::BroadcastEventIfUnique(EventSP &event_sp) {
- return PrivateBroadcastEvent(event_sp, true);
-}
-
-void Broadcaster::BroadcasterImpl::PrivateBroadcastEvent(EventSP &event_sp,
- bool unique) {
- // Can't add a nullptr event...
- if (!event_sp)
- return;
-
- // Update the broadcaster on this event
- event_sp->SetBroadcaster(&m_broadcaster);
-
- const uint32_t event_type = event_sp->GetType();
-
- std::lock_guard<std::recursive_mutex> guard(m_listeners_mutex);
-
- ListenerSP hijacking_listener_sp;
-
- if (!m_hijacking_listeners.empty()) {
- assert(!m_hijacking_masks.empty());
- hijacking_listener_sp = m_hijacking_listeners.back();
- if ((event_type & m_hijacking_masks.back()) == 0)
- hijacking_listener_sp.reset();
- }
-
- Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_EVENTS));
- if (log) {
- StreamString event_description;
- event_sp->Dump(&event_description);
- log->Printf("%p Broadcaster(\"%s\")::BroadcastEvent (event_sp = {%s}, "
- "unique =%i) hijack = %p",
- static_cast<void *>(this), GetBroadcasterName(),
- event_description.GetData(), unique,
- static_cast<void *>(hijacking_listener_sp.get()));
- }
-
- if (hijacking_listener_sp) {
- if (unique &&
- hijacking_listener_sp->PeekAtNextEventForBroadcasterWithType(
- &m_broadcaster, event_type))
- return;
- hijacking_listener_sp->AddEvent(event_sp);
- } else {
- for (auto &pair : GetListeners()) {
- if (!(pair.second & event_type))
- continue;
- if (unique &&
- pair.first->PeekAtNextEventForBroadcasterWithType(&m_broadcaster,
- event_type))
- continue;
-
- pair.first->AddEvent(event_sp);
- }
- }
-}
-
-void Broadcaster::BroadcasterImpl::BroadcastEvent(uint32_t event_type,
- EventData *event_data) {
- auto event_sp = std::make_shared<Event>(event_type, event_data);
- PrivateBroadcastEvent(event_sp, false);
-}
-
-void Broadcaster::BroadcasterImpl::BroadcastEvent(
- uint32_t event_type, const lldb::EventDataSP &event_data_sp) {
- auto event_sp = std::make_shared<Event>(event_type, event_data_sp);
- PrivateBroadcastEvent(event_sp, false);
-}
-
-void Broadcaster::BroadcasterImpl::BroadcastEventIfUnique(
- uint32_t event_type, EventData *event_data) {
- auto event_sp = std::make_shared<Event>(event_type, event_data);
- PrivateBroadcastEvent(event_sp, true);
-}
-
-bool Broadcaster::BroadcasterImpl::HijackBroadcaster(
- const lldb::ListenerSP &listener_sp, uint32_t event_mask) {
- std::lock_guard<std::recursive_mutex> guard(m_listeners_mutex);
-
- Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_EVENTS));
- if (log)
- log->Printf(
- "%p Broadcaster(\"%s\")::HijackBroadcaster (listener(\"%s\")=%p)",
- static_cast<void *>(this), GetBroadcasterName(),
- listener_sp->m_name.c_str(), static_cast<void *>(listener_sp.get()));
- m_hijacking_listeners.push_back(listener_sp);
- m_hijacking_masks.push_back(event_mask);
- return true;
-}
-
-bool Broadcaster::BroadcasterImpl::IsHijackedForEvent(uint32_t event_mask) {
- std::lock_guard<std::recursive_mutex> guard(m_listeners_mutex);
-
- if (!m_hijacking_listeners.empty())
- return (event_mask & m_hijacking_masks.back()) != 0;
- return false;
-}
-
-const char *Broadcaster::BroadcasterImpl::GetHijackingListenerName() {
- if (m_hijacking_listeners.size()) {
- return m_hijacking_listeners.back()->GetName();
- } else {
- return nullptr;
- }
-}
-
-void Broadcaster::BroadcasterImpl::RestoreBroadcaster() {
- std::lock_guard<std::recursive_mutex> guard(m_listeners_mutex);
-
- if (!m_hijacking_listeners.empty()) {
- Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_EVENTS));
- if (log) {
- ListenerSP listener_sp = m_hijacking_listeners.back();
- log->Printf("%p Broadcaster(\"%s\")::RestoreBroadcaster (about to pop "
- "listener(\"%s\")=%p)",
- static_cast<void *>(this), GetBroadcasterName(),
- listener_sp->m_name.c_str(),
- static_cast<void *>(listener_sp.get()));
- }
- m_hijacking_listeners.pop_back();
- }
- if (!m_hijacking_masks.empty())
- m_hijacking_masks.pop_back();
-}
-
-ConstString &Broadcaster::GetBroadcasterClass() const {
- static ConstString class_name("lldb.anonymous");
- return class_name;
-}
-
-BroadcastEventSpec::BroadcastEventSpec(const BroadcastEventSpec &rhs) = default;
-
-bool BroadcastEventSpec::operator<(const BroadcastEventSpec &rhs) const {
- if (GetBroadcasterClass() == rhs.GetBroadcasterClass()) {
- return GetEventBits() < rhs.GetEventBits();
- } else {
- return GetBroadcasterClass() < rhs.GetBroadcasterClass();
- }
-}
-
-BroadcastEventSpec &BroadcastEventSpec::
-operator=(const BroadcastEventSpec &rhs) = default;
-
-BroadcasterManager::BroadcasterManager() : m_manager_mutex() {}
-
-lldb::BroadcasterManagerSP BroadcasterManager::MakeBroadcasterManager() {
- return lldb::BroadcasterManagerSP(new BroadcasterManager());
-}
-
-uint32_t BroadcasterManager::RegisterListenerForEvents(
- const lldb::ListenerSP &listener_sp, BroadcastEventSpec event_spec) {
- std::lock_guard<std::recursive_mutex> guard(m_manager_mutex);
-
- collection::iterator iter = m_event_map.begin(), end_iter = m_event_map.end();
- uint32_t available_bits = event_spec.GetEventBits();
-
- while (iter != end_iter &&
- (iter = find_if(iter, end_iter,
- BroadcasterClassMatches(
- event_spec.GetBroadcasterClass()))) != end_iter) {
- available_bits &= ~((*iter).first.GetEventBits());
- iter++;
- }
-
- if (available_bits != 0) {
- m_event_map.insert(event_listener_key(
- BroadcastEventSpec(event_spec.GetBroadcasterClass(), available_bits),
- listener_sp));
- m_listeners.insert(listener_sp);
- }
-
- return available_bits;
-}
-
-bool BroadcasterManager::UnregisterListenerForEvents(
- const lldb::ListenerSP &listener_sp, BroadcastEventSpec event_spec) {
- std::lock_guard<std::recursive_mutex> guard(m_manager_mutex);
- bool removed_some = false;
-
- if (m_listeners.erase(listener_sp) == 0)
- return false;
-
- ListenerMatchesAndSharedBits predicate(event_spec, listener_sp);
- std::vector<BroadcastEventSpec> to_be_readded;
- uint32_t event_bits_to_remove = event_spec.GetEventBits();
-
- // Go through the map and delete the exact matches, and build a list of
- // matches that weren't exact to re-add:
- while (true) {
- collection::iterator iter, end_iter = m_event_map.end();
- iter = find_if(m_event_map.begin(), end_iter, predicate);
- if (iter == end_iter) {
- break;
- } else {
- uint32_t iter_event_bits = (*iter).first.GetEventBits();
- removed_some = true;
-
- if (event_bits_to_remove != iter_event_bits) {
- uint32_t new_event_bits = iter_event_bits & ~event_bits_to_remove;
- to_be_readded.push_back(BroadcastEventSpec(
- event_spec.GetBroadcasterClass(), new_event_bits));
- }
- m_event_map.erase(iter);
- }
- }
-
- // Okay now add back the bits that weren't completely removed:
- for (size_t i = 0; i < to_be_readded.size(); i++) {
- m_event_map.insert(event_listener_key(to_be_readded[i], listener_sp));
- }
-
- return removed_some;
-}
-
-ListenerSP BroadcasterManager::GetListenerForEventSpec(
- BroadcastEventSpec event_spec) const {
- std::lock_guard<std::recursive_mutex> guard(m_manager_mutex);
-
- collection::const_iterator iter, end_iter = m_event_map.end();
- iter = find_if(m_event_map.begin(), end_iter,
- BroadcastEventSpecMatches(event_spec));
- if (iter != end_iter)
- return (*iter).second;
- else
- return nullptr;
-}
-
-void BroadcasterManager::RemoveListener(Listener *listener) {
- std::lock_guard<std::recursive_mutex> guard(m_manager_mutex);
- ListenerMatchesPointer predicate(listener);
- listener_collection::iterator iter = m_listeners.begin(),
- end_iter = m_listeners.end();
-
- std::find_if(iter, end_iter, predicate);
- if (iter != end_iter)
- m_listeners.erase(iter);
-
- while (true) {
- collection::iterator iter, end_iter = m_event_map.end();
- iter = find_if(m_event_map.begin(), end_iter, predicate);
- if (iter == end_iter)
- break;
- else
- m_event_map.erase(iter);
- }
-}
-
-void BroadcasterManager::RemoveListener(const lldb::ListenerSP &listener_sp) {
- std::lock_guard<std::recursive_mutex> guard(m_manager_mutex);
- ListenerMatches predicate(listener_sp);
-
- if (m_listeners.erase(listener_sp) == 0)
- return;
-
- while (true) {
- collection::iterator iter, end_iter = m_event_map.end();
- iter = find_if(m_event_map.begin(), end_iter, predicate);
- if (iter == end_iter)
- break;
- else
- m_event_map.erase(iter);
- }
-}
-
-void BroadcasterManager::SignUpListenersForBroadcaster(
- Broadcaster &broadcaster) {
- std::lock_guard<std::recursive_mutex> guard(m_manager_mutex);
-
- collection::iterator iter = m_event_map.begin(), end_iter = m_event_map.end();
-
- while (iter != end_iter &&
- (iter = find_if(iter, end_iter,
- BroadcasterClassMatches(
- broadcaster.GetBroadcasterClass()))) != end_iter) {
- (*iter).second->StartListeningForEvents(&broadcaster,
- (*iter).first.GetEventBits());
- iter++;
- }
-}
-
-void BroadcasterManager::Clear() {
- std::lock_guard<std::recursive_mutex> guard(m_manager_mutex);
- listener_collection::iterator end_iter = m_listeners.end();
-
- for (listener_collection::iterator iter = m_listeners.begin();
- iter != end_iter; iter++)
- (*iter)->BroadcasterManagerWillDestruct(this->shared_from_this());
- m_listeners.clear();
- m_event_map.clear();
-}
Modified: lldb/trunk/source/Core/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/CMakeLists.txt?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Core/CMakeLists.txt (original)
+++ lldb/trunk/source/Core/CMakeLists.txt Fri Dec 14 07:59:49 2018
@@ -13,7 +13,6 @@ add_lldb_library(lldbCore
AddressResolver.cpp
AddressResolverFileLine.cpp
AddressResolverName.cpp
- Broadcaster.cpp
Communication.cpp
Debugger.cpp
Disassembler.cpp
@@ -21,13 +20,11 @@ add_lldb_library(lldbCore
DumpRegisterValue.cpp
DynamicLoader.cpp
EmulateInstruction.cpp
- Event.cpp
FileLineResolver.cpp
FileSpecList.cpp
FormatEntity.cpp
Highlighter.cpp
IOHandler.cpp
- Listener.cpp
Mangled.cpp
Module.cpp
ModuleChild.cpp
Modified: lldb/trunk/source/Core/Communication.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Communication.cpp?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Core/Communication.cpp (original)
+++ lldb/trunk/source/Core/Communication.cpp Fri Dec 14 07:59:49 2018
@@ -9,12 +9,12 @@
#include "lldb/Core/Communication.h"
-#include "lldb/Core/Event.h"
-#include "lldb/Core/Listener.h"
#include "lldb/Host/HostThread.h"
#include "lldb/Host/ThreadLauncher.h"
#include "lldb/Utility/Connection.h"
#include "lldb/Utility/ConstString.h"
+#include "lldb/Utility/Event.h"
+#include "lldb/Utility/Listener.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/Logging.h"
#include "lldb/Utility/Status.h"
Modified: lldb/trunk/source/Core/Debugger.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Debugger.cpp?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Core/Debugger.cpp (original)
+++ lldb/trunk/source/Core/Debugger.cpp Fri Dec 14 07:59:49 2018
@@ -10,9 +10,7 @@
#include "lldb/Core/Debugger.h"
#include "lldb/Breakpoint/Breakpoint.h"
-#include "lldb/Core/Event.h"
#include "lldb/Core/FormatEntity.h"
-#include "lldb/Core/Listener.h"
#include "lldb/Core/Mangled.h"
#include "lldb/Core/ModuleList.h"
#include "lldb/Core/PluginManager.h"
@@ -43,6 +41,8 @@
#include "lldb/Target/Thread.h"
#include "lldb/Target/ThreadList.h"
#include "lldb/Utility/AnsiTerminal.h"
+#include "lldb/Utility/Event.h"
+#include "lldb/Utility/Listener.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/Reproducer.h"
#include "lldb/Utility/State.h"
Removed: lldb/trunk/source/Core/Event.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Event.cpp?rev=349156&view=auto
==============================================================================
--- lldb/trunk/source/Core/Event.cpp (original)
+++ lldb/trunk/source/Core/Event.cpp (removed)
@@ -1,301 +0,0 @@
-//===-- Event.cpp -----------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "lldb/Core/Event.h"
-
-#include "lldb/Core/Broadcaster.h"
-#include "lldb/Utility/DataExtractor.h"
-#include "lldb/Utility/Endian.h"
-#include "lldb/Utility/Stream.h"
-#include "lldb/Utility/StreamString.h"
-#include "lldb/lldb-enumerations.h"
-
-#include <algorithm>
-
-#include <ctype.h>
-
-using namespace lldb;
-using namespace lldb_private;
-
-#pragma mark -
-#pragma mark Event
-
-//------------------------------------------------------------------
-// Event functions
-//------------------------------------------------------------------
-
-Event::Event(Broadcaster *broadcaster, uint32_t event_type, EventData *data)
- : m_broadcaster_wp(broadcaster->GetBroadcasterImpl()), m_type(event_type),
- m_data_sp(data) {}
-
-Event::Event(Broadcaster *broadcaster, uint32_t event_type,
- const EventDataSP &event_data_sp)
- : m_broadcaster_wp(broadcaster->GetBroadcasterImpl()), m_type(event_type),
- m_data_sp(event_data_sp) {}
-
-Event::Event(uint32_t event_type, EventData *data)
- : m_broadcaster_wp(), m_type(event_type), m_data_sp(data) {}
-
-Event::Event(uint32_t event_type, const EventDataSP &event_data_sp)
- : m_broadcaster_wp(), m_type(event_type), m_data_sp(event_data_sp) {}
-
-Event::~Event() = default;
-
-void Event::Dump(Stream *s) const {
- Broadcaster *broadcaster;
- Broadcaster::BroadcasterImplSP broadcaster_impl_sp(m_broadcaster_wp.lock());
- if (broadcaster_impl_sp)
- broadcaster = broadcaster_impl_sp->GetBroadcaster();
- else
- broadcaster = nullptr;
-
- if (broadcaster) {
- StreamString event_name;
- if (broadcaster->GetEventNames(event_name, m_type, false))
- s->Printf("%p Event: broadcaster = %p (%s), type = 0x%8.8x (%s), data = ",
- static_cast<const void *>(this),
- static_cast<void *>(broadcaster),
- broadcaster->GetBroadcasterName().GetCString(), m_type,
- event_name.GetData());
- else
- s->Printf("%p Event: broadcaster = %p (%s), type = 0x%8.8x, data = ",
- static_cast<const void *>(this),
- static_cast<void *>(broadcaster),
- broadcaster->GetBroadcasterName().GetCString(), m_type);
- } else
- s->Printf("%p Event: broadcaster = NULL, type = 0x%8.8x, data = ",
- static_cast<const void *>(this), m_type);
-
- if (m_data_sp) {
- s->PutChar('{');
- m_data_sp->Dump(s);
- s->PutChar('}');
- } else
- s->Printf("<NULL>");
-}
-
-void Event::DoOnRemoval() {
- if (m_data_sp)
- m_data_sp->DoOnRemoval(this);
-}
-
-#pragma mark -
-#pragma mark EventData
-
-//------------------------------------------------------------------
-// EventData functions
-//------------------------------------------------------------------
-
-EventData::EventData() = default;
-
-EventData::~EventData() = default;
-
-void EventData::Dump(Stream *s) const { s->PutCString("Generic Event Data"); }
-
-#pragma mark -
-#pragma mark EventDataBytes
-
-//------------------------------------------------------------------
-// EventDataBytes functions
-//------------------------------------------------------------------
-
-EventDataBytes::EventDataBytes() : m_bytes() {}
-
-EventDataBytes::EventDataBytes(const char *cstr) : m_bytes() {
- SetBytesFromCString(cstr);
-}
-
-EventDataBytes::EventDataBytes(llvm::StringRef str) : m_bytes() {
- SetBytes(str.data(), str.size());
-}
-
-EventDataBytes::EventDataBytes(const void *src, size_t src_len) : m_bytes() {
- SetBytes(src, src_len);
-}
-
-EventDataBytes::~EventDataBytes() = default;
-
-const ConstString &EventDataBytes::GetFlavorString() {
- static ConstString g_flavor("EventDataBytes");
- return g_flavor;
-}
-
-const ConstString &EventDataBytes::GetFlavor() const {
- return EventDataBytes::GetFlavorString();
-}
-
-void EventDataBytes::Dump(Stream *s) const {
- size_t num_printable_chars =
- std::count_if(m_bytes.begin(), m_bytes.end(), isprint);
- if (num_printable_chars == m_bytes.size())
- s->Format("\"{0}\"", m_bytes);
- else
- s->Format("{0:$[ ]@[x-2]}", llvm::make_range(
- reinterpret_cast<const uint8_t *>(m_bytes.data()),
- reinterpret_cast<const uint8_t *>(m_bytes.data() +
- m_bytes.size())));
-}
-
-const void *EventDataBytes::GetBytes() const {
- return (m_bytes.empty() ? nullptr : m_bytes.data());
-}
-
-size_t EventDataBytes::GetByteSize() const { return m_bytes.size(); }
-
-void EventDataBytes::SetBytes(const void *src, size_t src_len) {
- if (src != nullptr && src_len > 0)
- m_bytes.assign((const char *)src, src_len);
- else
- m_bytes.clear();
-}
-
-void EventDataBytes::SetBytesFromCString(const char *cstr) {
- if (cstr != nullptr && cstr[0])
- m_bytes.assign(cstr);
- else
- m_bytes.clear();
-}
-
-const void *EventDataBytes::GetBytesFromEvent(const Event *event_ptr) {
- const EventDataBytes *e = GetEventDataFromEvent(event_ptr);
- if (e != nullptr)
- return e->GetBytes();
- return nullptr;
-}
-
-size_t EventDataBytes::GetByteSizeFromEvent(const Event *event_ptr) {
- const EventDataBytes *e = GetEventDataFromEvent(event_ptr);
- if (e != nullptr)
- return e->GetByteSize();
- return 0;
-}
-
-const EventDataBytes *
-EventDataBytes::GetEventDataFromEvent(const Event *event_ptr) {
- if (event_ptr != nullptr) {
- const EventData *event_data = event_ptr->GetData();
- if (event_data &&
- event_data->GetFlavor() == EventDataBytes::GetFlavorString())
- return static_cast<const EventDataBytes *>(event_data);
- }
- return nullptr;
-}
-
-void EventDataBytes::SwapBytes(std::string &new_bytes) {
- m_bytes.swap(new_bytes);
-}
-
-#pragma mark -
-#pragma mark EventStructuredData
-
-//------------------------------------------------------------------
-// EventDataStructuredData definitions
-//------------------------------------------------------------------
-
-EventDataStructuredData::EventDataStructuredData()
- : EventData(), m_process_sp(), m_object_sp(), m_plugin_sp() {}
-
-EventDataStructuredData::EventDataStructuredData(
- const ProcessSP &process_sp, const StructuredData::ObjectSP &object_sp,
- const lldb::StructuredDataPluginSP &plugin_sp)
- : EventData(), m_process_sp(process_sp), m_object_sp(object_sp),
- m_plugin_sp(plugin_sp) {}
-
-EventDataStructuredData::~EventDataStructuredData() {}
-
-//------------------------------------------------------------------
-// EventDataStructuredData member functions
-//------------------------------------------------------------------
-
-const ConstString &EventDataStructuredData::GetFlavor() const {
- return EventDataStructuredData::GetFlavorString();
-}
-
-void EventDataStructuredData::Dump(Stream *s) const {
- if (!s)
- return;
-
- if (m_object_sp)
- m_object_sp->Dump(*s);
-}
-
-const ProcessSP &EventDataStructuredData::GetProcess() const {
- return m_process_sp;
-}
-
-const StructuredData::ObjectSP &EventDataStructuredData::GetObject() const {
- return m_object_sp;
-}
-
-const lldb::StructuredDataPluginSP &
-EventDataStructuredData::GetStructuredDataPlugin() const {
- return m_plugin_sp;
-}
-
-void EventDataStructuredData::SetProcess(const ProcessSP &process_sp) {
- m_process_sp = process_sp;
-}
-
-void EventDataStructuredData::SetObject(
- const StructuredData::ObjectSP &object_sp) {
- m_object_sp = object_sp;
-}
-
-void EventDataStructuredData::SetStructuredDataPlugin(
- const lldb::StructuredDataPluginSP &plugin_sp) {
- m_plugin_sp = plugin_sp;
-}
-
-//------------------------------------------------------------------
-// EventDataStructuredData static functions
-//------------------------------------------------------------------
-
-const EventDataStructuredData *
-EventDataStructuredData::GetEventDataFromEvent(const Event *event_ptr) {
- if (event_ptr == nullptr)
- return nullptr;
-
- const EventData *event_data = event_ptr->GetData();
- if (!event_data ||
- event_data->GetFlavor() != EventDataStructuredData::GetFlavorString())
- return nullptr;
-
- return static_cast<const EventDataStructuredData *>(event_data);
-}
-
-ProcessSP EventDataStructuredData::GetProcessFromEvent(const Event *event_ptr) {
- auto event_data = EventDataStructuredData::GetEventDataFromEvent(event_ptr);
- if (event_data)
- return event_data->GetProcess();
- else
- return ProcessSP();
-}
-
-StructuredData::ObjectSP
-EventDataStructuredData::GetObjectFromEvent(const Event *event_ptr) {
- auto event_data = EventDataStructuredData::GetEventDataFromEvent(event_ptr);
- if (event_data)
- return event_data->GetObject();
- else
- return StructuredData::ObjectSP();
-}
-
-lldb::StructuredDataPluginSP
-EventDataStructuredData::GetPluginFromEvent(const Event *event_ptr) {
- auto event_data = EventDataStructuredData::GetEventDataFromEvent(event_ptr);
- if (event_data)
- return event_data->GetStructuredDataPlugin();
- else
- return StructuredDataPluginSP();
-}
-
-const ConstString &EventDataStructuredData::GetFlavorString() {
- static ConstString s_flavor("EventDataStructuredData");
- return s_flavor;
-}
Removed: lldb/trunk/source/Core/Listener.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Listener.cpp?rev=349156&view=auto
==============================================================================
--- lldb/trunk/source/Core/Listener.cpp (original)
+++ lldb/trunk/source/Core/Listener.cpp (removed)
@@ -1,470 +0,0 @@
-//===-- Listener.cpp --------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "lldb/Core/Listener.h"
-
-#include "lldb/Core/Broadcaster.h"
-#include "lldb/Core/Event.h"
-#include "lldb/Utility/ConstString.h"
-#include "lldb/Utility/Log.h"
-#include "lldb/Utility/Logging.h"
-
-#include "llvm/ADT/Optional.h"
-
-#include <algorithm>
-#include <memory>
-#include <utility>
-
-using namespace lldb;
-using namespace lldb_private;
-
-namespace {
-class BroadcasterManagerWPMatcher {
-public:
- BroadcasterManagerWPMatcher(BroadcasterManagerSP manager_sp)
- : m_manager_sp(manager_sp) {}
- bool operator()(const BroadcasterManagerWP input_wp) const {
- BroadcasterManagerSP input_sp = input_wp.lock();
- return (input_sp && input_sp == m_manager_sp);
- }
-
- BroadcasterManagerSP m_manager_sp;
-};
-} // anonymous namespace
-
-Listener::Listener(const char *name)
- : m_name(name), m_broadcasters(), m_broadcasters_mutex(), m_events(),
- m_events_mutex() {
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_OBJECT));
- if (log != nullptr)
- log->Printf("%p Listener::Listener('%s')", static_cast<void *>(this),
- m_name.c_str());
-}
-
-Listener::~Listener() {
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_OBJECT));
-
- Clear();
-
- if (log)
- log->Printf("%p Listener::%s('%s')", static_cast<void *>(this),
- __FUNCTION__, m_name.c_str());
-}
-
-void Listener::Clear() {
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_OBJECT));
- std::lock_guard<std::recursive_mutex> broadcasters_guard(
- m_broadcasters_mutex);
- broadcaster_collection::iterator pos, end = m_broadcasters.end();
- for (pos = m_broadcasters.begin(); pos != end; ++pos) {
- Broadcaster::BroadcasterImplSP broadcaster_sp(pos->first.lock());
- if (broadcaster_sp)
- broadcaster_sp->RemoveListener(this, pos->second.event_mask);
- }
- m_broadcasters.clear();
-
- std::lock_guard<std::mutex> events_guard(m_events_mutex);
- m_events.clear();
- size_t num_managers = m_broadcaster_managers.size();
-
- for (size_t i = 0; i < num_managers; i++) {
- BroadcasterManagerSP manager_sp(m_broadcaster_managers[i].lock());
- if (manager_sp)
- manager_sp->RemoveListener(this);
- }
-
- if (log)
- log->Printf("%p Listener::%s('%s')", static_cast<void *>(this),
- __FUNCTION__, m_name.c_str());
-}
-
-uint32_t Listener::StartListeningForEvents(Broadcaster *broadcaster,
- uint32_t event_mask) {
- if (broadcaster) {
- // Scope for "locker"
- // Tell the broadcaster to add this object as a listener
- {
- std::lock_guard<std::recursive_mutex> broadcasters_guard(
- m_broadcasters_mutex);
- Broadcaster::BroadcasterImplWP impl_wp(broadcaster->GetBroadcasterImpl());
- m_broadcasters.insert(
- std::make_pair(impl_wp, BroadcasterInfo(event_mask)));
- }
-
- uint32_t acquired_mask =
- broadcaster->AddListener(this->shared_from_this(), event_mask);
-
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EVENTS));
- if (log != nullptr)
- log->Printf("%p Listener::StartListeningForEvents (broadcaster = %p, "
- "mask = 0x%8.8x) acquired_mask = 0x%8.8x for %s",
- static_cast<void *>(this), static_cast<void *>(broadcaster),
- event_mask, acquired_mask, m_name.c_str());
-
- return acquired_mask;
- }
- return 0;
-}
-
-uint32_t Listener::StartListeningForEvents(Broadcaster *broadcaster,
- uint32_t event_mask,
- HandleBroadcastCallback callback,
- void *callback_user_data) {
- if (broadcaster) {
- // Scope for "locker"
- // Tell the broadcaster to add this object as a listener
- {
- std::lock_guard<std::recursive_mutex> broadcasters_guard(
- m_broadcasters_mutex);
- Broadcaster::BroadcasterImplWP impl_wp(broadcaster->GetBroadcasterImpl());
- m_broadcasters.insert(std::make_pair(
- impl_wp, BroadcasterInfo(event_mask, callback, callback_user_data)));
- }
-
- uint32_t acquired_mask =
- broadcaster->AddListener(this->shared_from_this(), event_mask);
-
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EVENTS));
- if (log != nullptr) {
- void **pointer = reinterpret_cast<void **>(&callback);
- log->Printf("%p Listener::StartListeningForEvents (broadcaster = %p, "
- "mask = 0x%8.8x, callback = %p, user_data = %p) "
- "acquired_mask = 0x%8.8x for %s",
- static_cast<void *>(this), static_cast<void *>(broadcaster),
- event_mask, *pointer, static_cast<void *>(callback_user_data),
- acquired_mask, m_name.c_str());
- }
-
- return acquired_mask;
- }
- return 0;
-}
-
-bool Listener::StopListeningForEvents(Broadcaster *broadcaster,
- uint32_t event_mask) {
- if (broadcaster) {
- // Scope for "locker"
- {
- std::lock_guard<std::recursive_mutex> broadcasters_guard(
- m_broadcasters_mutex);
- m_broadcasters.erase(broadcaster->GetBroadcasterImpl());
- }
- // Remove the broadcaster from our set of broadcasters
- return broadcaster->RemoveListener(this->shared_from_this(), event_mask);
- }
-
- return false;
-}
-
-// Called when a Broadcaster is in its destructor. We need to remove all
-// knowledge of this broadcaster and any events that it may have queued up
-void Listener::BroadcasterWillDestruct(Broadcaster *broadcaster) {
- // Scope for "broadcasters_locker"
- {
- std::lock_guard<std::recursive_mutex> broadcasters_guard(
- m_broadcasters_mutex);
- m_broadcasters.erase(broadcaster->GetBroadcasterImpl());
- }
-
- // Scope for "event_locker"
- {
- std::lock_guard<std::mutex> events_guard(m_events_mutex);
- // Remove all events for this broadcaster object.
- event_collection::iterator pos = m_events.begin();
- while (pos != m_events.end()) {
- if ((*pos)->GetBroadcaster() == broadcaster)
- pos = m_events.erase(pos);
- else
- ++pos;
- }
- }
-}
-
-void Listener::BroadcasterManagerWillDestruct(BroadcasterManagerSP manager_sp) {
- // Just need to remove this broadcast manager from the list of managers:
- broadcaster_manager_collection::iterator iter,
- end_iter = m_broadcaster_managers.end();
- BroadcasterManagerWP manager_wp;
-
- BroadcasterManagerWPMatcher matcher(manager_sp);
- iter = std::find_if<broadcaster_manager_collection::iterator,
- BroadcasterManagerWPMatcher>(
- m_broadcaster_managers.begin(), end_iter, matcher);
- if (iter != end_iter)
- m_broadcaster_managers.erase(iter);
-}
-
-void Listener::AddEvent(EventSP &event_sp) {
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EVENTS));
- if (log != nullptr)
- log->Printf("%p Listener('%s')::AddEvent (event_sp = {%p})",
- static_cast<void *>(this), m_name.c_str(),
- static_cast<void *>(event_sp.get()));
-
- std::lock_guard<std::mutex> guard(m_events_mutex);
- m_events.push_back(event_sp);
- m_events_condition.notify_all();
-}
-
-class EventBroadcasterMatches {
-public:
- EventBroadcasterMatches(Broadcaster *broadcaster)
- : m_broadcaster(broadcaster) {}
-
- bool operator()(const EventSP &event_sp) const {
- return event_sp->BroadcasterIs(m_broadcaster);
- }
-
-private:
- Broadcaster *m_broadcaster;
-};
-
-class EventMatcher {
-public:
- EventMatcher(Broadcaster *broadcaster, const ConstString *broadcaster_names,
- uint32_t num_broadcaster_names, uint32_t event_type_mask)
- : m_broadcaster(broadcaster), m_broadcaster_names(broadcaster_names),
- m_num_broadcaster_names(num_broadcaster_names),
- m_event_type_mask(event_type_mask) {}
-
- bool operator()(const EventSP &event_sp) const {
- if (m_broadcaster && !event_sp->BroadcasterIs(m_broadcaster))
- return false;
-
- if (m_broadcaster_names) {
- bool found_source = false;
- const ConstString &event_broadcaster_name =
- event_sp->GetBroadcaster()->GetBroadcasterName();
- for (uint32_t i = 0; i < m_num_broadcaster_names; ++i) {
- if (m_broadcaster_names[i] == event_broadcaster_name) {
- found_source = true;
- break;
- }
- }
- if (!found_source)
- return false;
- }
-
- if (m_event_type_mask == 0 || m_event_type_mask & event_sp->GetType())
- return true;
- return false;
- }
-
-private:
- Broadcaster *m_broadcaster;
- const ConstString *m_broadcaster_names;
- const uint32_t m_num_broadcaster_names;
- const uint32_t m_event_type_mask;
-};
-
-bool Listener::FindNextEventInternal(
- std::unique_lock<std::mutex> &lock,
- Broadcaster *broadcaster, // nullptr for any broadcaster
- const ConstString *broadcaster_names, // nullptr for any event
- uint32_t num_broadcaster_names, uint32_t event_type_mask, EventSP &event_sp,
- bool remove) {
- // NOTE: callers of this function must lock m_events_mutex using a
- // Mutex::Locker
- // and pass the locker as the first argument. m_events_mutex is no longer
- // recursive.
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EVENTS));
-
- if (m_events.empty())
- return false;
-
- Listener::event_collection::iterator pos = m_events.end();
-
- if (broadcaster == nullptr && broadcaster_names == nullptr &&
- event_type_mask == 0) {
- pos = m_events.begin();
- } else {
- pos = std::find_if(m_events.begin(), m_events.end(),
- EventMatcher(broadcaster, broadcaster_names,
- num_broadcaster_names, event_type_mask));
- }
-
- if (pos != m_events.end()) {
- event_sp = *pos;
-
- if (log != nullptr)
- log->Printf("%p '%s' Listener::FindNextEventInternal(broadcaster=%p, "
- "broadcaster_names=%p[%u], event_type_mask=0x%8.8x, "
- "remove=%i) event %p",
- static_cast<void *>(this), GetName(),
- static_cast<void *>(broadcaster),
- static_cast<const void *>(broadcaster_names),
- num_broadcaster_names, event_type_mask, remove,
- static_cast<void *>(event_sp.get()));
-
- if (remove) {
- m_events.erase(pos);
- // Unlock the event queue here. We've removed this event and are about
- // to return it so it should be okay to get the next event off the queue
- // here - and it might be useful to do that in the "DoOnRemoval".
- lock.unlock();
- event_sp->DoOnRemoval();
- }
- return true;
- }
-
- event_sp.reset();
- return false;
-}
-
-Event *Listener::PeekAtNextEvent() {
- std::unique_lock<std::mutex> guard(m_events_mutex);
- EventSP event_sp;
- if (FindNextEventInternal(guard, nullptr, nullptr, 0, 0, event_sp, false))
- return event_sp.get();
- return nullptr;
-}
-
-Event *Listener::PeekAtNextEventForBroadcaster(Broadcaster *broadcaster) {
- std::unique_lock<std::mutex> guard(m_events_mutex);
- EventSP event_sp;
- if (FindNextEventInternal(guard, broadcaster, nullptr, 0, 0, event_sp, false))
- return event_sp.get();
- return nullptr;
-}
-
-Event *
-Listener::PeekAtNextEventForBroadcasterWithType(Broadcaster *broadcaster,
- uint32_t event_type_mask) {
- std::unique_lock<std::mutex> guard(m_events_mutex);
- EventSP event_sp;
- if (FindNextEventInternal(guard, broadcaster, nullptr, 0, event_type_mask,
- event_sp, false))
- return event_sp.get();
- return nullptr;
-}
-
-bool Listener::GetEventInternal(
- const Timeout<std::micro> &timeout,
- Broadcaster *broadcaster, // nullptr for any broadcaster
- const ConstString *broadcaster_names, // nullptr for any event
- uint32_t num_broadcaster_names, uint32_t event_type_mask,
- EventSP &event_sp) {
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EVENTS));
- LLDB_LOG(log, "this = {0}, timeout = {1} for {2}", this, timeout, m_name);
-
- std::unique_lock<std::mutex> lock(m_events_mutex);
-
- while (true) {
- if (FindNextEventInternal(lock, broadcaster, broadcaster_names,
- num_broadcaster_names, event_type_mask, event_sp,
- true)) {
- return true;
- } else {
- std::cv_status result = std::cv_status::no_timeout;
- if (!timeout)
- m_events_condition.wait(lock);
- else
- result = m_events_condition.wait_for(lock, *timeout);
-
- if (result == std::cv_status::timeout) {
- log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EVENTS);
- if (log)
- log->Printf("%p Listener::GetEventInternal() timed out for %s",
- static_cast<void *>(this), m_name.c_str());
- return false;
- } else if (result != std::cv_status::no_timeout) {
- log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EVENTS);
- if (log)
- log->Printf("%p Listener::GetEventInternal() unknown error for %s",
- static_cast<void *>(this), m_name.c_str());
- return false;
- }
- }
- }
-
- return false;
-}
-
-bool Listener::GetEventForBroadcasterWithType(
- Broadcaster *broadcaster, uint32_t event_type_mask, EventSP &event_sp,
- const Timeout<std::micro> &timeout) {
- return GetEventInternal(timeout, broadcaster, nullptr, 0, event_type_mask,
- event_sp);
-}
-
-bool Listener::GetEventForBroadcaster(Broadcaster *broadcaster,
- EventSP &event_sp,
- const Timeout<std::micro> &timeout) {
- return GetEventInternal(timeout, broadcaster, nullptr, 0, 0, event_sp);
-}
-
-bool Listener::GetEvent(EventSP &event_sp, const Timeout<std::micro> &timeout) {
- return GetEventInternal(timeout, nullptr, nullptr, 0, 0, event_sp);
-}
-
-size_t Listener::HandleBroadcastEvent(EventSP &event_sp) {
- size_t num_handled = 0;
- std::lock_guard<std::recursive_mutex> guard(m_broadcasters_mutex);
- Broadcaster *broadcaster = event_sp->GetBroadcaster();
- if (!broadcaster)
- return 0;
- broadcaster_collection::iterator pos;
- broadcaster_collection::iterator end = m_broadcasters.end();
- Broadcaster::BroadcasterImplSP broadcaster_impl_sp(
- broadcaster->GetBroadcasterImpl());
- for (pos = m_broadcasters.find(broadcaster_impl_sp);
- pos != end && pos->first.lock() == broadcaster_impl_sp; ++pos) {
- BroadcasterInfo info = pos->second;
- if (event_sp->GetType() & info.event_mask) {
- if (info.callback != nullptr) {
- info.callback(event_sp, info.callback_user_data);
- ++num_handled;
- }
- }
- }
- return num_handled;
-}
-
-uint32_t
-Listener::StartListeningForEventSpec(BroadcasterManagerSP manager_sp,
- const BroadcastEventSpec &event_spec) {
- if (!manager_sp)
- return 0;
-
- // The BroadcasterManager mutex must be locked before m_broadcasters_mutex to
- // avoid violating the lock hierarchy (manager before broadcasters).
- std::lock_guard<std::recursive_mutex> manager_guard(
- manager_sp->m_manager_mutex);
- std::lock_guard<std::recursive_mutex> guard(m_broadcasters_mutex);
-
- uint32_t bits_acquired = manager_sp->RegisterListenerForEvents(
- this->shared_from_this(), event_spec);
- if (bits_acquired) {
- broadcaster_manager_collection::iterator iter,
- end_iter = m_broadcaster_managers.end();
- BroadcasterManagerWP manager_wp(manager_sp);
- BroadcasterManagerWPMatcher matcher(manager_sp);
- iter = std::find_if<broadcaster_manager_collection::iterator,
- BroadcasterManagerWPMatcher>(
- m_broadcaster_managers.begin(), end_iter, matcher);
- if (iter == end_iter)
- m_broadcaster_managers.push_back(manager_wp);
- }
-
- return bits_acquired;
-}
-
-bool Listener::StopListeningForEventSpec(BroadcasterManagerSP manager_sp,
- const BroadcastEventSpec &event_spec) {
- if (!manager_sp)
- return false;
-
- std::lock_guard<std::recursive_mutex> guard(m_broadcasters_mutex);
- return manager_sp->UnregisterListenerForEvents(this->shared_from_this(),
- event_spec);
-}
-
-ListenerSP Listener::MakeListener(const char *name) {
- return ListenerSP(new Listener(name));
-}
Modified: lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h (original)
+++ lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h Fri Dec 14 07:59:49 2018
@@ -15,8 +15,8 @@
#include <string>
#include "lldb/Core/Communication.h"
-#include "lldb/Core/Listener.h"
#include "lldb/Core/StreamBuffer.h"
+#include "lldb/Utility/Listener.h"
#include "lldb/Utility/Predicate.h"
#include "lldb/lldb-private.h"
Modified: lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h (original)
+++ lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h Fri Dec 14 07:59:49 2018
@@ -14,12 +14,12 @@
#include <list>
#include <vector>
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Core/ThreadSafeValue.h"
#include "lldb/Host/HostThread.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/Thread.h"
#include "lldb/Utility/ArchSpec.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/ConstString.h"
#include "lldb/Utility/Status.h"
#include "lldb/Utility/StreamString.h"
Modified: lldb/trunk/source/Plugins/Process/Utility/HistoryThread.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Utility/HistoryThread.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/Utility/HistoryThread.h (original)
+++ lldb/trunk/source/Plugins/Process/Utility/HistoryThread.h Fri Dec 14 07:59:49 2018
@@ -12,12 +12,12 @@
#include <mutex>
-#include "lldb/Core/Broadcaster.h"
-#include "lldb/Core/Event.h"
#include "lldb/Core/UserSettingsController.h"
#include "lldb/Target/ExecutionContextScope.h"
#include "lldb/Target/StackFrameList.h"
#include "lldb/Target/Thread.h"
+#include "lldb/Utility/Broadcaster.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/UserID.h"
#include "lldb/lldb-private.h"
Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h Fri Dec 14 07:59:49 2018
@@ -19,12 +19,12 @@
#include <vector>
#include "lldb/Core/Communication.h"
-#include "lldb/Core/Listener.h"
#include "lldb/Host/HostThread.h"
#include "lldb/Utility/Args.h"
+#include "lldb/Utility/Listener.h"
#include "lldb/Utility/Predicate.h"
-#include "lldb/lldb-public.h"
#include "lldb/Utility/StringExtractorGDBRemote.h"
+#include "lldb/lldb-public.h"
namespace lldb_private {
namespace process_gdb_remote {
Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.cpp?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.cpp (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.cpp Fri Dec 14 07:59:49 2018
@@ -19,9 +19,9 @@
#include <cstring>
// Project includes
-#include "lldb/Core/Event.h"
#include "lldb/Host/ThreadLauncher.h"
#include "lldb/Utility/ConstString.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/FileSpec.h"
#include "lldb/Utility/StreamString.h"
#include "lldb/Utility/StringExtractorGDBRemote.h"
Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.h (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.h Fri Dec 14 07:59:49 2018
@@ -15,8 +15,8 @@
#include "GDBRemoteCommunicationHistory.h"
// Project includes
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Host/HostThread.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/lldb-private-forward.h"
#include "llvm/Support/Error.h"
Modified: lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h Fri Dec 14 07:59:49 2018
@@ -16,7 +16,6 @@
#include <string>
#include <vector>
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Core/LoadedModuleInfoList.h"
#include "lldb/Core/ModuleSpec.h"
#include "lldb/Core/ThreadSafeValue.h"
@@ -24,6 +23,7 @@
#include "lldb/Target/Process.h"
#include "lldb/Target/Thread.h"
#include "lldb/Utility/ArchSpec.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/ConstString.h"
#include "lldb/Utility/Status.h"
#include "lldb/Utility/StreamGDBRemote.h"
Modified: lldb/trunk/source/Target/Process.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Process.cpp?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Target/Process.cpp (original)
+++ lldb/trunk/source/Target/Process.cpp Fri Dec 14 07:59:49 2018
@@ -17,7 +17,6 @@
#include "lldb/Breakpoint/BreakpointLocation.h"
#include "lldb/Breakpoint/StoppointCallbackContext.h"
#include "lldb/Core/Debugger.h"
-#include "lldb/Core/Event.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/ModuleSpec.h"
#include "lldb/Core/PluginManager.h"
@@ -62,6 +61,7 @@
#include "lldb/Target/ThreadPlan.h"
#include "lldb/Target/ThreadPlanBase.h"
#include "lldb/Target/UnixSignals.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/NameMatches.h"
#include "lldb/Utility/SelectHelper.h"
Modified: lldb/trunk/source/Target/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Target.cpp?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Target/Target.cpp (original)
+++ lldb/trunk/source/Target/Target.cpp Fri Dec 14 07:59:49 2018
@@ -7,7 +7,7 @@
//
//===----------------------------------------------------------------------===//
-#include <mutex>
+#include "lldb/Target/Target.h"
#include "Plugins/ExpressionParser/Clang/ClangASTSource.h"
#include "Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.h"
#include "Plugins/ExpressionParser/Clang/ClangPersistentVariables.h"
@@ -20,12 +20,11 @@
#include "lldb/Breakpoint/BreakpointResolverScripted.h"
#include "lldb/Breakpoint/Watchpoint.h"
#include "lldb/Core/Debugger.h"
-#include "lldb/Core/Event.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/ModuleSpec.h"
#include "lldb/Core/PluginManager.h"
-#include "lldb/Core/Section.h"
#include "lldb/Core/SearchFilter.h"
+#include "lldb/Core/Section.h"
#include "lldb/Core/SourceManager.h"
#include "lldb/Core/StreamFile.h"
#include "lldb/Core/StructuredDataImpl.h"
@@ -50,15 +49,16 @@
#include "lldb/Target/SectionLoadList.h"
#include "lldb/Target/StackFrame.h"
#include "lldb/Target/SystemRuntime.h"
-#include "lldb/Target/Target.h"
#include "lldb/Target/Thread.h"
#include "lldb/Target/ThreadSpec.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/FileSpec.h"
#include "lldb/Utility/LLDBAssert.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/State.h"
#include "lldb/Utility/StreamString.h"
#include "lldb/Utility/Timer.h"
+#include <mutex>
using namespace lldb;
using namespace lldb_private;
Modified: lldb/trunk/source/Target/TargetList.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/TargetList.cpp?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Target/TargetList.cpp (original)
+++ lldb/trunk/source/Target/TargetList.cpp Fri Dec 14 07:59:49 2018
@@ -8,9 +8,7 @@
//===----------------------------------------------------------------------===//
#include "lldb/Target/TargetList.h"
-#include "lldb/Core/Broadcaster.h"
#include "lldb/Core/Debugger.h"
-#include "lldb/Core/Event.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/ModuleSpec.h"
#include "lldb/Host/Host.h"
@@ -20,6 +18,8 @@
#include "lldb/Symbol/ObjectFile.h"
#include "lldb/Target/Platform.h"
#include "lldb/Target/Process.h"
+#include "lldb/Utility/Broadcaster.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/State.h"
#include "lldb/Utility/TildeExpressionResolver.h"
#include "lldb/Utility/Timer.h"
Copied: lldb/trunk/source/Utility/Broadcaster.cpp (from r349154, lldb/trunk/source/Core/Broadcaster.cpp)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/Broadcaster.cpp?p2=lldb/trunk/source/Utility/Broadcaster.cpp&p1=lldb/trunk/source/Core/Broadcaster.cpp&r1=349154&r2=349157&rev=349157&view=diff
==============================================================================
--- lldb/trunk/source/Core/Broadcaster.cpp (original)
+++ lldb/trunk/source/Utility/Broadcaster.cpp Fri Dec 14 07:59:49 2018
@@ -7,10 +7,10 @@
//
//===----------------------------------------------------------------------===//
-#include "lldb/Core/Broadcaster.h"
+#include "lldb/Utility/Broadcaster.h"
-#include "lldb/Core/Event.h"
-#include "lldb/Core/Listener.h"
+#include "lldb/Utility/Event.h"
+#include "lldb/Utility/Listener.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/Logging.h"
#include "lldb/Utility/Stream.h"
Modified: lldb/trunk/source/Utility/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/CMakeLists.txt?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/source/Utility/CMakeLists.txt (original)
+++ lldb/trunk/source/Utility/CMakeLists.txt Fri Dec 14 07:59:49 2018
@@ -45,6 +45,7 @@ add_lldb_library(lldbUtility
ArchSpec.cpp
Args.cpp
Baton.cpp
+ Broadcaster.cpp
Connection.cpp
ConstString.cpp
CompletionRequest.cpp
@@ -53,10 +54,12 @@ add_lldb_library(lldbUtility
DataEncoder.cpp
DataExtractor.cpp
Environment.cpp
+ Event.cpp
FileSpec.cpp
IOObject.cpp
JSON.cpp
LLDBAssert.cpp
+ Listener.cpp
Log.cpp
Logging.cpp
NameMatches.cpp
Copied: lldb/trunk/source/Utility/Event.cpp (from r349154, lldb/trunk/source/Core/Event.cpp)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/Event.cpp?p2=lldb/trunk/source/Utility/Event.cpp&p1=lldb/trunk/source/Core/Event.cpp&r1=349154&r2=349157&rev=349157&view=diff
==============================================================================
--- lldb/trunk/source/Core/Event.cpp (original)
+++ lldb/trunk/source/Utility/Event.cpp Fri Dec 14 07:59:49 2018
@@ -7,9 +7,9 @@
//
//===----------------------------------------------------------------------===//
-#include "lldb/Core/Event.h"
+#include "lldb/Utility/Event.h"
-#include "lldb/Core/Broadcaster.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/DataExtractor.h"
#include "lldb/Utility/Endian.h"
#include "lldb/Utility/Stream.h"
Copied: lldb/trunk/source/Utility/Listener.cpp (from r349154, lldb/trunk/source/Core/Listener.cpp)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/Listener.cpp?p2=lldb/trunk/source/Utility/Listener.cpp&p1=lldb/trunk/source/Core/Listener.cpp&r1=349154&r2=349157&rev=349157&view=diff
==============================================================================
--- lldb/trunk/source/Core/Listener.cpp (original)
+++ lldb/trunk/source/Utility/Listener.cpp Fri Dec 14 07:59:49 2018
@@ -7,11 +7,11 @@
//
//===----------------------------------------------------------------------===//
-#include "lldb/Core/Listener.h"
+#include "lldb/Utility/Listener.h"
-#include "lldb/Core/Broadcaster.h"
-#include "lldb/Core/Event.h"
+#include "lldb/Utility/Broadcaster.h"
#include "lldb/Utility/ConstString.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/Logging.h"
Removed: lldb/trunk/unittests/Core/BroadcasterTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Core/BroadcasterTest.cpp?rev=349156&view=auto
==============================================================================
--- lldb/trunk/unittests/Core/BroadcasterTest.cpp (original)
+++ lldb/trunk/unittests/Core/BroadcasterTest.cpp (removed)
@@ -1,75 +0,0 @@
-//===-- BroadcasterTest.cpp -------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "gtest/gtest.h"
-
-#include "lldb/Core/Broadcaster.h"
-#include "lldb/Core/Event.h"
-#include "lldb/Core/Listener.h"
-#include "lldb/Utility/Predicate.h"
-
-#include <thread>
-
-using namespace lldb;
-using namespace lldb_private;
-
-TEST(BroadcasterTest, BroadcastEvent) {
- EventSP event_sp;
- Broadcaster broadcaster(nullptr, "test-broadcaster");
- std::chrono::seconds timeout(0);
-
- // Create a listener, sign it up, make sure it receives an event.
- ListenerSP listener1_sp = Listener::MakeListener("test-listener1");
- const uint32_t event_mask1 = 1;
- EXPECT_EQ(event_mask1,
- listener1_sp->StartListeningForEvents(&broadcaster, event_mask1));
- broadcaster.BroadcastEvent(event_mask1, nullptr);
- EXPECT_TRUE(listener1_sp->GetEvent(event_sp, timeout));
- EXPECT_EQ(event_mask1, event_sp->GetType());
-
- {
- // Add one more listener, make sure it works as well.
- ListenerSP listener2_sp = Listener::MakeListener("test-listener2");
- const uint32_t event_mask2 = 1;
- EXPECT_EQ(event_mask2, listener2_sp->StartListeningForEvents(
- &broadcaster, event_mask1 | event_mask2));
- broadcaster.BroadcastEvent(event_mask2, nullptr);
- EXPECT_TRUE(listener2_sp->GetEvent(event_sp, timeout));
- EXPECT_EQ(event_mask2, event_sp->GetType());
-
- // Both listeners should get this event.
- broadcaster.BroadcastEvent(event_mask1, nullptr);
- EXPECT_TRUE(listener1_sp->GetEvent(event_sp, timeout));
- EXPECT_EQ(event_mask1, event_sp->GetType());
- EXPECT_TRUE(listener2_sp->GetEvent(event_sp, timeout));
- EXPECT_EQ(event_mask2, event_sp->GetType());
- }
-
- // Now again only one listener should be active.
- broadcaster.BroadcastEvent(event_mask1, nullptr);
- EXPECT_TRUE(listener1_sp->GetEvent(event_sp, timeout));
- EXPECT_EQ(event_mask1, event_sp->GetType());
-}
-
-TEST(BroadcasterTest, EventTypeHasListeners) {
- EventSP event_sp;
- Broadcaster broadcaster(nullptr, "test-broadcaster");
-
- const uint32_t event_mask = 1;
- EXPECT_FALSE(broadcaster.EventTypeHasListeners(event_mask));
-
- {
- ListenerSP listener_sp = Listener::MakeListener("test-listener");
- EXPECT_EQ(event_mask,
- listener_sp->StartListeningForEvents(&broadcaster, event_mask));
- EXPECT_TRUE(broadcaster.EventTypeHasListeners(event_mask));
- }
-
- EXPECT_FALSE(broadcaster.EventTypeHasListeners(event_mask));
-}
Modified: lldb/trunk/unittests/Core/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Core/CMakeLists.txt?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/unittests/Core/CMakeLists.txt (original)
+++ lldb/trunk/unittests/Core/CMakeLists.txt Fri Dec 14 07:59:49 2018
@@ -1,7 +1,4 @@
add_lldb_unittest(LLDBCoreTests
- BroadcasterTest.cpp
- EventTest.cpp
- ListenerTest.cpp
MangledTest.cpp
RangeTest.cpp
RichManglingContextTest.cpp
Removed: lldb/trunk/unittests/Core/EventTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Core/EventTest.cpp?rev=349156&view=auto
==============================================================================
--- lldb/trunk/unittests/Core/EventTest.cpp (original)
+++ lldb/trunk/unittests/Core/EventTest.cpp (removed)
@@ -1,25 +0,0 @@
-//===-- EventTest.cpp -------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "lldb/Core/Event.h"
-#include "lldb/Utility/StreamString.h"
-#include "gtest/gtest.h"
-
-using namespace lldb_private;
-
-static std::string to_string(const EventDataBytes &E) {
- StreamString S;
- E.Dump(&S);
- return S.GetString();
-}
-
-TEST(EventTest, DumpEventDataBytes) {
- EXPECT_EQ(R"("foo")", to_string(EventDataBytes("foo")));
- EXPECT_EQ("01 02 03", to_string(EventDataBytes("\x01\x02\x03")));
-}
Removed: lldb/trunk/unittests/Core/ListenerTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Core/ListenerTest.cpp?rev=349156&view=auto
==============================================================================
--- lldb/trunk/unittests/Core/ListenerTest.cpp (original)
+++ lldb/trunk/unittests/Core/ListenerTest.cpp (removed)
@@ -1,114 +0,0 @@
-//===-- ListenerTest.cpp ----------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "gtest/gtest.h"
-
-#include "lldb/Core/Broadcaster.h"
-#include "lldb/Core/Listener.h"
-#include <future>
-#include <thread>
-
-using namespace lldb;
-using namespace lldb_private;
-
-TEST(ListenerTest, GetEventImmediate) {
- EventSP event_sp;
- Broadcaster broadcaster(nullptr, "test-broadcaster");
-
- // Create a listener, sign it up, make sure it receives an event.
- ListenerSP listener_sp = Listener::MakeListener("test-listener");
- const uint32_t event_mask = 1;
- ASSERT_EQ(event_mask,
- listener_sp->StartListeningForEvents(&broadcaster, event_mask));
-
- const std::chrono::seconds timeout(0);
- // Without any events sent, these should return false.
- EXPECT_FALSE(listener_sp->GetEvent(event_sp, timeout));
- EXPECT_FALSE(listener_sp->GetEventForBroadcaster(nullptr, event_sp, timeout));
- EXPECT_FALSE(
- listener_sp->GetEventForBroadcaster(&broadcaster, event_sp, timeout));
- EXPECT_FALSE(listener_sp->GetEventForBroadcasterWithType(
- &broadcaster, event_mask, event_sp, timeout));
-
- // Now send events and make sure they get it.
- broadcaster.BroadcastEvent(event_mask, nullptr);
- EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout));
-
- broadcaster.BroadcastEvent(event_mask, nullptr);
- EXPECT_TRUE(listener_sp->GetEventForBroadcaster(nullptr, event_sp, timeout));
-
- broadcaster.BroadcastEvent(event_mask, nullptr);
- EXPECT_TRUE(
- listener_sp->GetEventForBroadcaster(&broadcaster, event_sp, timeout));
-
- broadcaster.BroadcastEvent(event_mask, nullptr);
- EXPECT_FALSE(listener_sp->GetEventForBroadcasterWithType(
- &broadcaster, event_mask * 2, event_sp, timeout));
- EXPECT_TRUE(listener_sp->GetEventForBroadcasterWithType(
- &broadcaster, event_mask, event_sp, timeout));
-}
-
-TEST(ListenerTest, GetEventWait) {
- EventSP event_sp;
- Broadcaster broadcaster(nullptr, "test-broadcaster");
-
- // Create a listener, sign it up, make sure it receives an event.
- ListenerSP listener_sp = Listener::MakeListener("test-listener");
- const uint32_t event_mask = 1;
- ASSERT_EQ(event_mask,
- listener_sp->StartListeningForEvents(&broadcaster, event_mask));
-
- // Without any events sent, these should make a short wait and return false.
- std::chrono::microseconds timeout(10);
- EXPECT_FALSE(listener_sp->GetEvent(event_sp, timeout));
- EXPECT_FALSE(listener_sp->GetEventForBroadcaster(nullptr, event_sp, timeout));
- EXPECT_FALSE(
- listener_sp->GetEventForBroadcaster(&broadcaster, event_sp, timeout));
- EXPECT_FALSE(listener_sp->GetEventForBroadcasterWithType(
- &broadcaster, event_mask, event_sp, timeout));
-
- // Now send events and make sure they get it.
- broadcaster.BroadcastEvent(event_mask, nullptr);
- EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout));
-
- broadcaster.BroadcastEvent(event_mask, nullptr);
- EXPECT_TRUE(listener_sp->GetEventForBroadcaster(nullptr, event_sp, timeout));
-
- broadcaster.BroadcastEvent(event_mask, nullptr);
- EXPECT_TRUE(
- listener_sp->GetEventForBroadcaster(&broadcaster, event_sp, timeout));
-
- broadcaster.BroadcastEvent(event_mask, nullptr);
- EXPECT_FALSE(listener_sp->GetEventForBroadcasterWithType(
- &broadcaster, event_mask * 2, event_sp, timeout));
- EXPECT_TRUE(listener_sp->GetEventForBroadcasterWithType(
- &broadcaster, event_mask, event_sp, timeout));
-
- auto delayed_broadcast = [&] {
- std::this_thread::sleep_for(std::chrono::milliseconds(10));
- broadcaster.BroadcastEvent(event_mask, nullptr);
- };
-
- // These should do an infinite wait at return the event our asynchronous
- // broadcast sends.
- std::future<void> async_broadcast =
- std::async(std::launch::async, delayed_broadcast);
- EXPECT_TRUE(listener_sp->GetEvent(event_sp, llvm::None));
- async_broadcast.get();
-
- async_broadcast = std::async(std::launch::async, delayed_broadcast);
- EXPECT_TRUE(
- listener_sp->GetEventForBroadcaster(&broadcaster, event_sp, llvm::None));
- async_broadcast.get();
-
- async_broadcast = std::async(std::launch::async, delayed_broadcast);
- EXPECT_TRUE(listener_sp->GetEventForBroadcasterWithType(
- &broadcaster, event_mask, event_sp, llvm::None));
- async_broadcast.get();
-}
Copied: lldb/trunk/unittests/Utility/BroadcasterTest.cpp (from r349154, lldb/trunk/unittests/Core/BroadcasterTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/BroadcasterTest.cpp?p2=lldb/trunk/unittests/Utility/BroadcasterTest.cpp&p1=lldb/trunk/unittests/Core/BroadcasterTest.cpp&r1=349154&r2=349157&rev=349157&view=diff
==============================================================================
--- lldb/trunk/unittests/Core/BroadcasterTest.cpp (original)
+++ lldb/trunk/unittests/Utility/BroadcasterTest.cpp Fri Dec 14 07:59:49 2018
@@ -9,9 +9,9 @@
#include "gtest/gtest.h"
-#include "lldb/Core/Broadcaster.h"
-#include "lldb/Core/Event.h"
-#include "lldb/Core/Listener.h"
+#include "lldb/Utility/Broadcaster.h"
+#include "lldb/Utility/Event.h"
+#include "lldb/Utility/Listener.h"
#include "lldb/Utility/Predicate.h"
#include <thread>
Modified: lldb/trunk/unittests/Utility/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/CMakeLists.txt?rev=349157&r1=349156&r2=349157&view=diff
==============================================================================
--- lldb/trunk/unittests/Utility/CMakeLists.txt (original)
+++ lldb/trunk/unittests/Utility/CMakeLists.txt Fri Dec 14 07:59:49 2018
@@ -3,14 +3,17 @@ add_lldb_unittest(UtilityTests
ArgsTest.cpp
OptionsWithRawTest.cpp
ArchSpecTest.cpp
+ BroadcasterTest.cpp
CleanUpTest.cpp
ConstStringTest.cpp
CompletionRequestTest.cpp
DataExtractorTest.cpp
EnvironmentTest.cpp
+ EventTest.cpp
FileSpecTest.cpp
FlagsTest.cpp
JSONTest.cpp
+ ListenerTest.cpp
LogTest.cpp
NameMatchesTest.cpp
PredicateTest.cpp
Copied: lldb/trunk/unittests/Utility/EventTest.cpp (from r349154, lldb/trunk/unittests/Core/EventTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/EventTest.cpp?p2=lldb/trunk/unittests/Utility/EventTest.cpp&p1=lldb/trunk/unittests/Core/EventTest.cpp&r1=349154&r2=349157&rev=349157&view=diff
==============================================================================
--- lldb/trunk/unittests/Core/EventTest.cpp (original)
+++ lldb/trunk/unittests/Utility/EventTest.cpp Fri Dec 14 07:59:49 2018
@@ -7,7 +7,7 @@
//
//===----------------------------------------------------------------------===//
-#include "lldb/Core/Event.h"
+#include "lldb/Utility/Event.h"
#include "lldb/Utility/StreamString.h"
#include "gtest/gtest.h"
Copied: lldb/trunk/unittests/Utility/ListenerTest.cpp (from r349154, lldb/trunk/unittests/Core/ListenerTest.cpp)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/ListenerTest.cpp?p2=lldb/trunk/unittests/Utility/ListenerTest.cpp&p1=lldb/trunk/unittests/Core/ListenerTest.cpp&r1=349154&r2=349157&rev=349157&view=diff
==============================================================================
--- lldb/trunk/unittests/Core/ListenerTest.cpp (original)
+++ lldb/trunk/unittests/Utility/ListenerTest.cpp Fri Dec 14 07:59:49 2018
@@ -9,8 +9,8 @@
#include "gtest/gtest.h"
-#include "lldb/Core/Broadcaster.h"
-#include "lldb/Core/Listener.h"
+#include "lldb/Utility/Broadcaster.h"
+#include "lldb/Utility/Listener.h"
#include <future>
#include <thread>
More information about the lldb-commits
mailing list