Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add explicit exceptions during command calls / handling #210

Open
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

hikinggrass
Copy link
Contributor

@hikinggrass hikinggrass commented Oct 14, 2024

Allow exceptions thrown in cmd handlers to be propagated to the calling module

This allows the caller to handle certain error conditions more gracefully (and could be extended for shutdown handling during cmd callc in the future as well)

A module could handle these new exceptions in the following way:

try {
    req->call_something();
} catch (const Everest::HandlerException& e) {
    EVLOG_error << "got a HandlerException: " << e.what();
} catch (const Everest::CmdTimeout& e) {
    EVLOG_error << "got a CmdTimeout: " << e.what();
} catch (const Everest::CmdError& e) {
    EVLOG_error << "got a CmdError: " << e.what();
}

HandlerExceptions and CmdTimeout inherit from CmdError so a caller could also just catch this.

(naming still up for debate)

Signed-off-by: Kai-Uwe Hermann <[email protected]>
# Conflicts:
#	lib/everest.cpp

Signed-off-by: Kai-Uwe Hermann <[email protected]>
Signed-off-by: Kai-Uwe Hermann <[email protected]>
Handle cmd timeout with new cmd error mechanism

Add HandlerException and CmdTimeout exceptions that modules can specifically handle

Signed-off-by: Kai-Uwe Hermann <[email protected]>
@hikinggrass hikinggrass changed the title WIP: exceptions during command calls / handling Add explicit exceptions during command calls / handling Jan 24, 2025
@hikinggrass hikinggrass marked this pull request as ready for review January 24, 2025 17:50
@@ -34,6 +34,49 @@ using TelemetryEntry = std::variant<std::string, const char*, bool, int32_t, uin
using TelemetryMap = std::map<std::string, TelemetryEntry>;
using UnsubscribeToken = std::function<void()>;

enum class ErrorType {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ErrorType might be a bit vague and could lead to confusions with the "error framework"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant