[Pkg] Sake : Sake-Scheduler-kph.10.mcz
squeak-dev-noreply at lists.squeakfoundation.org
squeak-dev-noreply at lists.squeakfoundation.org
Thu Feb 26 14:09:38 UTC 2009
A new version of Sake-Scheduler was added to project Sake :
http://www.squeaksource.com/Sake/Sake-Scheduler-kph.10.mcz
==================== Summary ====================
Name: Sake-Scheduler-kph.10
Author: kph
Time: 26 February 2009, 2:09:35 pm
UUID: 18f59660-040f-11de-a647-000a95edb42a
Ancestors: Sake-Scheduler-kph.9
Added ScheduledLoggedTask
=============== Diff against Sake-Scheduler-kph.9 ===============
Item was added:
+ ----- Method: ScheduledTask>>nextRunTime: (in category 'accessing') -----
+ nextRunTime: newTime
+
+ nextRunTime := newTime!
Item was changed:
----- Method: ScheduledTask>>setNextRunTime (in category 'private') -----
setNextRunTime
+ | dt |
self scheduleHasOnlyZeroDuration ifTrue: [^ self].
+ dt := DateAndTime now.
+
schedule scheduleDo:
+ [:each | (each > dt) ifTrue: [ self nextRunTime: each. ^ self]].
- [:each | (each > DateAndTime now) ifTrue: [nextRunTime := each. ^ self]].
self delete "delete if no more scheduled tasks"!
Item was changed:
----- Method: ScheduledTask>>schedule: (in category 'accessing') -----
schedule: aSchedule
schedule := aSchedule.
nextRunTime := schedule start.
self setNextRunTime
!
Item was added:
+ ----- Method: ScheduledLoggedTask>>logNextRunTime (in category 'as yet unclassified') -----
+ logNextRunTime
+
+ nextRunTime ifNil: [ ^ self ].
+ self thisLog info desc: self description nextRunTime: nextRunTime asTimeStamp
+ !
Item was added:
+ ----- Method: ScheduledLoggedTask>>stop (in category 'as yet unclassified') -----
+ stop
+ self thisLog value info: 'STOP'.
+ super stop
+
+ !
Item was added:
+ ----- Method: ScheduledLoggedTask>>resume (in category 'as yet unclassified') -----
+ resume
+ self thisLog value info: 'RESUME'.
+ super resume
+
+ !
Item was added:
+ ----- Method: ScheduledLoggedTask>>thisLog (in category 'as yet unclassified') -----
+ thisLog
+
+ ^ (thisLog ifNil: [ thisLog := LogCurrent new.
+ self thisLogInitialize: thisLog adapters.
+ thisLog ]) inSender: thisContext sender
+
+
+ !
Item was added:
+ ----- Method: ScheduledTask>>runNow (in category 'private') -----
+ runNow
+
+ nextRunTime := DateAndTime now!
Item was changed:
----- Method: Scheduler>>start (in category 'executing') -----
start
| process |
running ifTrue: [^ self].
running := true.
process := [
[running] whileTrue:
[0.25 seconds asDelay wait.
self tasksDo: [:each | each runIfNecessary]]] newProcess.
+ (process respondsTo: #name:) ifTrue: [process name: 'Scheduler'].
- (process respondsTo: #name:) ifTrue: [process name: 'taskScheduler'].
process priority: Processor systemBackgroundPriority.
process resume.
!
Item was changed:
----- Method: ScheduledTask>>startDateAndTime:duration: (in category 'accessing') -----
startDateAndTime: aDateAndTime duration: aDuration
| timeParameter |
timeParameter := self convertToTimeParameter: aDateAndTime.
nextRunTime := ((timeParameter isKindOf: Time)
ifTrue:
[DateAndTime date: Date today time: timeParameter]
ifFalse:
[timeParameter]).
schedule := Schedule starting: self nextRunTime duration: 1000 weeks.
schedule schedule: {aDuration}.
self setNextRunTime
!
Item was added:
+ ----- Method: ScheduledLoggedTask>>schedule: (in category 'as yet unclassified') -----
+ schedule: aSchedule
+
+ super schedule: aSchedule.
+
+ self logNextRunTime.!
Item was added:
+ ScheduledTask subclass: #ScheduledLoggedTask
+ instanceVariableNames: 'thisLog'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Sake-Scheduler'!
Item was added:
+ ----- Method: ScheduledLoggedTask>>start (in category 'as yet unclassified') -----
+ start
+ self thisLog value info: 'START'.
+ super start
+
+ !
Item was added:
+ ----- Method: Scheduler class>>refresh (in category 'as yet unclassified') -----
+ refresh
+ self stopServices.
+ self startServices.!
Item was changed:
----- Method: Scheduler class>>startUp: (in category 'as yet unclassified') -----
startUp: resuming
resuming ifFalse: [ ^ self ].
+ self refresh.!
- self stopServices.
- self startServices.!
Item was changed:
----- Method: ScheduledTask>>doAllTasks (in category 'as yet unclassified') -----
doAllTasks
| tasks |
tasks := (self class selectors select: [ :ea | ea beginsWith: #task ]) collect: [ :sel | self perform: sel ].
tasks asTask runLogging.!
Item was added:
+ ----- Method: ScheduledTask class>>doAllTasksNow (in category 'as yet unclassified') -----
+ doAllTasksNow
+
+ [ self new task: #doAllTasks; runTask ] fork!
Item was added:
+ ----- Method: ScheduledLoggedTask>>thisLogInitialize: (in category 'as yet unclassified') -----
+ thisLogInitialize: adapters
+
+ ^ adapters
+ addTranscript;
+ add: ((LogFile named: 'logs/', self class name, '.log') maxLevel: 7; yourself);
+ yourself
+
+ !
Item was changed:
----- Method: ScheduledTask>>runIfNecessary (in category 'executing') -----
runIfNecessary
((DateAndTime now >= self nextRunTime) and: [self isRunning not]) ifTrue: [self run]!
Item was added:
+ ----- Method: ScheduledLoggedTask>>runTask (in category 'as yet unclassified') -----
+ runTask
+
+ LogCurrent value: self thisLog during: [
+
+ [ super runTask ]
+
+ ensure: [ self logNextRunTime ].
+
+ ].!
More information about the Packages
mailing list