| // Copyright 2018 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef SRC_DEVELOPER_DEBUG_ZXDB_CLIENT_BREAKPOINT_OBSERVER_H_ | |
| #define SRC_DEVELOPER_DEBUG_ZXDB_CLIENT_BREAKPOINT_OBSERVER_H_ | |
| namespace zxdb { | |
| class Breakpoint; | |
| class Err; | |
| class BreakpointObserver { | |
| public: | |
| // Indicates that the breakpoint has matched one or more new locations. This could be a result of | |
| // creating the breakpoint, updating its settings, or the system automatically detecting new code | |
| // that the breakpoint could apply to. | |
| // | |
| // The |user_requested| flag will be set when this event was triggered by a user action like | |
| // updating the breakpoint settings. It will be false when the system automatically added the | |
| // locations due to dynamic code loading. | |
| // | |
| // If needed the added breakpoint locations could be added to this call. | |
| virtual void OnBreakpointMatched(Breakpoint* breakpoint, bool user_requested) {} | |
| // Breakpoints are installed asynchronously by the backend. If the backend fails to install (or | |
| // remove) the breakpoint, this callback will be issued with the error. If the breakpoint applies | |
| // to more than one location, some locations could have succeeded even in the presence of this | |
| // error. | |
| // | |
| // These backend errors can occur at any time, not just when setting new settings, because new | |
| // processes or dynamically loaded shared libraries can always be added that this breakpoint | |
| // could apply to. | |
| // | |
| // This will get issued for all breakpoints including internal ones. | |
| // | |
| // The implementation should not delete the breakpoint from within this callback as other | |
| // observers may need to be issued and the object will still be on the stack. | |
| virtual void OnBreakpointUpdateFailure(Breakpoint* breakpoint, const Err& err) {} | |
| }; | |
| } // namespace zxdb | |
| #endif // SRC_DEVELOPER_DEBUG_ZXDB_CLIENT_BREAKPOINT_OBSERVER_H_ |