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 ]. + + ].!
packages@lists.squeakfoundation.org