================ @@ -737,19 +752,35 @@ class Debugger : public std::enable_shared_from_this<Debugger>, lldb::TargetSP m_dummy_target_sp; Diagnostics::CallbackID m_diagnostics_callback_id; - std::mutex m_destroy_callback_mutex; - lldb::callback_token_t m_destroy_callback_next_token = 0; - struct DestroyCallbackInfo { - DestroyCallbackInfo() {} - DestroyCallbackInfo(lldb::callback_token_t token, - lldb_private::DebuggerDestroyCallback callback, - void *baton) + template <typename T> struct CallbackInfo { + CallbackInfo() {} + CallbackInfo(lldb::callback_token_t token, T callback, void *baton) : token(token), callback(callback), baton(baton) {} lldb::callback_token_t token; - lldb_private::DebuggerDestroyCallback callback; + T callback; void *baton; }; - llvm::SmallVector<DestroyCallbackInfo, 2> m_destroy_callbacks; + template <typename T> + struct NotificationCallbackInfo : public CallbackInfo<T> { + NotificationCallbackInfo() {} + NotificationCallbackInfo(lldb::callback_token_t token, + lldb::NotificationType type, T callback, + void *baton, void *original_callback) + : CallbackInfo<T>(token, callback, baton), type(type), + original_callback(original_callback) {} + lldb::NotificationType type; + void *original_callback; + }; + static std::mutex s_notification_callback_mutex; + static lldb::callback_token_t s_notification_callback_next_token; + static llvm::SmallVector< ---------------- jimingham wrote:
Every action we perform with the notifications except for "deleting by token" knows the type of the notification that it's adding/looking up. We could even encode the type in the token and we'd always know. So it seems awkward to store them in a flat list. When we get around to listing these and other management tasks, those will very likely also be requests by type. Maybe storing them in a map of type -> vector of callbacks for that type would be a better data structure here? https://github.com/llvm/llvm-project/pull/111206 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits