Upgraded the severity of some warnings to errors and cleaned up internal API error adding

checksum-failure-logging
EricLiu2000 2019-06-21 15:08:08 -04:00
parent cb6f88c6bb
commit f9d88b4743
2 changed files with 10 additions and 42 deletions

View File

@ -216,12 +216,7 @@ APIError::Severity APIError::SeverityForType(ErrorType type) {
switch(type) { switch(type) {
// API Warnings // API Warnings
case OutputTruncated: case OutputTruncated:
case DeviceCurrentlyOpen:
case DeviceCurrentlyClosed:
case DeviceCurrentlyOnline:
case DeviceCurrentlyOffline:
case DeviceCurrentlyPolling:
case DeviceNotCurrentlyPolling:
// Device Warnings // Device Warnings
case PollingMessageOverflow: case PollingMessageOverflow:
case DeviceFirmwareOutOfDate: case DeviceFirmwareOutOfDate:
@ -240,6 +235,12 @@ APIError::Severity APIError::SeverityForType(ErrorType type) {
case MessageMaxLengthExceeded: case MessageMaxLengthExceeded:
// Device Errors // Device Errors
case DeviceCurrentlyOpen:
case DeviceCurrentlyClosed:
case DeviceCurrentlyOnline:
case DeviceCurrentlyOffline:
case DeviceCurrentlyPolling:
case DeviceNotCurrentlyPolling:
case NoSerialNumber: case NoSerialNumber:
case IncorrectSerialNumber: case IncorrectSerialNumber:
case SettingsReadError: case SettingsReadError:

View File

@ -36,13 +36,14 @@ public:
} }
void add(APIError::ErrorType type) { void add(APIError::ErrorType type) {
std::lock_guard<std::mutex> lk(mutex); std::lock_guard<std::mutex> lk(mutex);
add_internal(type); add_internal(APIError::APIError(type));
} }
void add(APIError::ErrorType type, const Device* forDevice) { void add(APIError::ErrorType type, const Device* forDevice) {
std::lock_guard<std::mutex> lk(mutex); std::lock_guard<std::mutex> lk(mutex);
add_internal(type, forDevice); add_internal(APIError::APIError(type, forDevice));
} }
void discard(ErrorFilter filter = ErrorFilter()); void discard(ErrorFilter filter = ErrorFilter());
void setErrorLimit(size_t newLimit) { void setErrorLimit(size_t newLimit) {
@ -92,40 +93,6 @@ private:
errors.push_back(error); errors.push_back(error);
} }
} }
void add_internal(APIError::ErrorType type) {
// Ensure the error list is at most exactly full (size of errorLimit - 1, leaving room for a potential APIError::TooManyErrors)
enforceLimit();
// We are exactly full, either because the list was truncated or because we were simply full before
if(errors.size() == errorLimit - 1) {
// If the error is worth adding
if(APIError::SeverityForType(type) >= lowestCurrentSeverity()) {
discardLeastSevere(1);
errors.emplace_back(type);
}
errors.push_back(APIError(APIError::TooManyErrors));
} else {
errors.emplace_back(type);
}
}
void add_internal(APIError::ErrorType type, const Device* forDevice) {
// Ensure the error list is at most exactly full (size of errorLimit - 1, leaving room for a potential APIError::TooManyErrors)
enforceLimit();
// We are exactly full, either because the list was truncated or because we were simply full before
if(errors.size() == errorLimit - 1) {
// If the error is worth adding
if(APIError::SeverityForType(type) >= lowestCurrentSeverity()) {
discardLeastSevere(1);
errors.emplace_back(type);
}
errors.push_back(APIError(APIError::TooManyErrors));
} else {
errors.emplace_back(type, forDevice);
}
}
bool enforceLimit(); // Returns whether the limit enforcement resulted in an overflow bool enforceLimit(); // Returns whether the limit enforcement resulted in an overflow