mirror of
https://github.com/gnustep/libs-ec.git
synced 2025-02-21 19:01:16 +00:00
Allow lookup for a recent match of an alarm
This commit is contained in:
parent
4f1029ec5c
commit
c49f244ca2
3 changed files with 48 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2021-12-19 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
|
* EcAlarmDestination.h:
|
||||||
|
* EcAlarmDestination.m:
|
||||||
|
Add (-latest:) method to find the most recent match for an alarm
|
||||||
|
in the queue/active/cleared data structures.
|
||||||
|
|
||||||
2021-12-16 Richard Frith-Macdonald <rfm@gnu.org>
|
2021-12-16 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
* EcCommand.m:
|
* EcCommand.m:
|
||||||
|
|
|
@ -184,6 +184,14 @@
|
||||||
*/
|
*/
|
||||||
- (BOOL) isRunning;
|
- (BOOL) isRunning;
|
||||||
|
|
||||||
|
/** Finds and returns the most recent alarm in the system which matches
|
||||||
|
* (is equal to) toFind. This searches the queue of alarms to be processed,
|
||||||
|
* the set of active alarms, and the set of cleared alarms (in that order)
|
||||||
|
* returning the first match found. If no match is found the method
|
||||||
|
* returns nil.
|
||||||
|
*/
|
||||||
|
- (EcAlarm*) latest: (EcAlarm*)toFind;
|
||||||
|
|
||||||
/** Returns an array containing the known managed objects.
|
/** Returns an array containing the known managed objects.
|
||||||
*/
|
*/
|
||||||
- (NSArray*) managed;
|
- (NSArray*) managed;
|
||||||
|
|
|
@ -374,6 +374,39 @@
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (EcAlarm*) latest: (EcAlarm*)toFind
|
||||||
|
{
|
||||||
|
EcAlarm *found = nil;
|
||||||
|
NSUInteger index;
|
||||||
|
|
||||||
|
[_alarmLock lock];
|
||||||
|
/* First try to find the most recent match in the queue
|
||||||
|
*/
|
||||||
|
index = [_alarmQueue count];
|
||||||
|
while (index-- > 0)
|
||||||
|
{
|
||||||
|
EcAlarm *a = [_alarmQueue objectAtIndex: index];
|
||||||
|
|
||||||
|
if ([a isEqual: toFind])
|
||||||
|
{
|
||||||
|
found = RETAIN(a);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nil == found)
|
||||||
|
{
|
||||||
|
/* Not in queue ... try active alarms or clears
|
||||||
|
*/
|
||||||
|
found = RETAIN([_alarmsActive member: toFind]);
|
||||||
|
if (nil == found)
|
||||||
|
{
|
||||||
|
found = RETAIN([_alarmsCleared member: toFind]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[_alarmLock unlock];
|
||||||
|
return AUTORELEASE(found);
|
||||||
|
}
|
||||||
|
|
||||||
- (NSArray*) managed
|
- (NSArray*) managed
|
||||||
{
|
{
|
||||||
NSArray *a;
|
NSArray *a;
|
||||||
|
|
Loading…
Reference in a new issue