================
@@ -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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits