[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