From 43a876887194edf05ee50a6282c1ee082aed2f50 Mon Sep 17 00:00:00 2001 From: Richard Frith-MacDonald Date: Tue, 9 Apr 2013 11:31:01 +0000 Subject: [PATCH] Add a couple of convenience methods git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/ec/trunk@36496 72102866-910b-0410-8b05-ffd578937521 --- EcAlarm.h | 2 ++ EcProcess.h | 25 +++++++++++++++++++++++++ EcProcess.m | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 76 insertions(+), 2 deletions(-) diff --git a/EcAlarm.h b/EcAlarm.h index 7e31d6b..ad91d83 100644 --- a/EcAlarm.h +++ b/EcAlarm.h @@ -461,6 +461,8 @@ EcMakeManagedObject(NSString *host, NSString *process, NSString *component); /** * Initialises the receiver as an alarm for a particular event.
+ * The managedObject argument may be nil if the alarm should use the + * default managed object value for the current process.
* The eventDate argument may be nil if the alarm should use the current * timestamp.
* The managedObject, eventType, probableCause, and specificProblem diff --git a/EcProcess.h b/EcProcess.h index 5b66fe7..e664c79 100644 --- a/EcProcess.h +++ b/EcProcess.h @@ -345,10 +345,35 @@ extern NSString* cmdVersion(NSString *ver); */ @interface EcProcess : NSObject +/** Convenience method to produce a generic configuration alarm and send + * it via the -alarm: method.
+ * The managed object may be nil (in which case it's the current process).
+ * The implied event type is EcAlarmEventTypeProcessingError.
+ * The implied probable cause is EcAlarmConfigurationOrCustomizationError.
+ * The implied severity is EcAlarmSeverityMajor unless isCritical is YES.
+ * The implied trend is EcAlarmTrendNone.
+ * The implied proposed repair action is to check/correct the config.
+ * The specific problem and additional text should be used to suggest + * what is wrong with the config and where the config error should be + * found/corrected. + */ +- (EcAlarm*) alarmConfigurationFor: (NSString*)managedObject + specificProblem: (NSString*)specificProblem + additionalText: (NSString*)additionalText + critical: (BOOL)isCritical; + /** Returns the array of current alarms. */ - (NSArray*) alarms; +/** Convenience method to clear an alarm as produced by the + * -alarmConfigErrorFor:specificProblem:perceivedSeverity:additionalText: + * method. + */ +- (void) clearConfigurationFor: (NSString*)managedObject + specificProblem: (NSString*)specificProblem + additionalText: (NSString*)additionalText; + /** Return a short copyright notice ... subclasses should override. */ - (NSString*) ecCopyright; diff --git a/EcProcess.m b/EcProcess.m index 662e574..3764124 100644 --- a/EcProcess.m +++ b/EcProcess.m @@ -1310,14 +1310,61 @@ static NSString *noFiles = @"No log files to archive"; return started; } +- (oneway void) alarm: (in bycopy EcAlarm*)event +{ + [alarmDestination alarm: event]; +} + +- (EcAlarm*) alarmConfigurationFor: (NSString*)managedObject + specificProblem: (NSString*)specificProblem + additionalText: (NSString*)additionalText + critical: (BOOL)isCritical +{ + EcAlarmSeverity severity; + NSString *action; + EcAlarm *a; + + if (YES == isCritical) + { + severity = EcAlarmSeverityCritical; + } + else + { + severity = EcAlarmSeverityMajor; + } + action = @"Check/correct configuration"; // FIXME ... localize + a = [EcAlarm alarmForManagedObject: managedObject + at: nil + withEventType: EcAlarmEventTypeProcessingError + probableCause: EcAlarmConfigurationOrCustomizationError + specificProblem: specificProblem + perceivedSeverity: severity + proposedRepairAction: action + additionalText: additionalText]; + [self alarm: a]; + return a; +} + - (NSArray*) alarms { return [alarmDestination alarms]; } -- (oneway void) alarm: (in bycopy EcAlarm*)event +- (void) clearConfigurationFor: (NSString*)managedObject + specificProblem: (NSString*)specificProblem + additionalText: (NSString*)additionalText { - [alarmDestination alarm: event]; + EcAlarm *a; + + a = [EcAlarm alarmForManagedObject: managedObject + at: nil + withEventType: EcAlarmEventTypeProcessingError + probableCause: EcAlarmConfigurationOrCustomizationError + specificProblem: specificProblem + perceivedSeverity: EcAlarmSeverityCleared + proposedRepairAction: nil + additionalText: additionalText]; + [self alarm: a]; } - (oneway void) domanage: (in bycopy NSString*)managedObject