[Pkg] Sake : Sake-Scheduler-kph.12.mcz
squeak-dev-noreply at lists.squeakfoundation.org
squeak-dev-noreply at lists.squeakfoundation.org
Sat Jul 11 17:47:23 UTC 2009
A new version of Sake-Scheduler was added to project Sake :
http://www.squeaksource.com/Sake/Sake-Scheduler-kph.12.mcz
==================== Summary ====================
Name: Sake-Scheduler-kph.12
Author: kph
Time: 11 July 2009, 6:47:21 pm
UUID: 12ace6d9-a574-4387-8029-1a273db35c6f
Ancestors: Sake-Scheduler-kph.11
updated for Sake-SchedulerSeaside
=============== Diff against Sake-Scheduler-kph.11 ===============
Item was added:
+ ----- Method: Scheduler class>>allServices (in category 'as yet unclassified') -----
+ allServices
+
+ ^ ScheduledTask allSubclasses!
Item was changed:
Object subclass: #Scheduler
instanceVariableNames: 'running tasks accessProtect'
classVariableNames: 'Default'
poolDictionaries: ''
category: 'Sake-Scheduler'!
+ !Scheduler commentStamp: 'kph 7/11/2009 18:43' prior: 0!
+ This scheduler is based upon "Scheduler" by the following authors
- !Scheduler commentStamp: 'kph 8/18/2008 04:10' prior: 0!
- This scheduler is based upon Scheduler by the following authors
Creator: John Pierce
Admin: Ben Schroeder, John Pierce
Developer: Bill Burchfield
+ Adapted by: Keith Hodges.
+
+ We add the concept of periodic services from gjallar.
+
+ The services which are defined in #services are started on image startUp.
+ Tasks which are started manually #start/stop are perpetuated across image restarts.
+
+ notes:
+ Uses Logging
+ Does not depend upon Sake.
- adapted by: Keith Hodges for Bob.
+ There is a basic Seaside UI in Sake-SchedulerSeaside
+ !
- we add the concept of periodic services.!
Item was changed:
----- Method: Scheduler>>printOn: (in category 'printing') -----
printOn: aStream
aStream
+ nextPutAll: 'Service scheduler is ', (running ifTrue: ['running'] ifFalse: ['stopped']);
- nextPutAll: 'Task scheduler is ', (running ifTrue: ['running'] ifFalse: ['stopped']);
nextPutAll: ' with ';
nextPutAll: self taskCount asWords;
nextPutAll:' task'.
self taskCount = 1 ifFalse: [aStream nextPut: $s]
!
Item was added:
+ ----- Method: ScheduledTask>>workerProcess (in category 'accessing') -----
+ workerProcess
+ "Answer the value of workerProcess"
+
+ ^ workerProcess!
Item was changed:
----- Method: Scheduler class>>stopServices (in category 'as yet unclassified') -----
stopServices
+ self allServices do: [ :ea | ea stop ].
- ScheduledTask allSubclassesDo: [ :ea | ea unload ].
!
Item was changed:
----- Method: ScheduledTask class>>initialize (in category 'as yet unclassified') -----
initialize
+ !
- self unload.
-
- "in subclasses place services schedule here
-
- e.g.
-
-
- self scheduler addTask: (self do: [ ... ] every: '1:00pm').
- self scheduler addTask: (self do: #defaultAction every: '1:00pm').
- method #defaultAction needs to be defined.
- "
-
- !
Item was added:
+ ----- Method: ScheduledTask>>workerProcess: (in category 'accessing') -----
+ workerProcess: anObject
+ "Set the value of workerProcess"
+
+ workerProcess := anObject!
Item was added:
+ ----- Method: Scheduler>>isRunning (in category 'initialization') -----
+ isRunning
+
+ ^ running!
Item was added:
+ ----- Method: ScheduledTask>>printLastRunTime (in category 'printing') -----
+ printLastRunTime
+
+ ^ (runHistory isEmptyOrNil
+ ifTrue: [runHistory ifNil: [ '<not logged>' ] ifNotNil: [ '<never run>' ] ]
+ ifFalse: [runHistory last asString]).!
Item was added:
+ ----- Method: ScheduledTask>>= (in category 'private') -----
+ = other
+
+ ^ self species = other species and: [ self name = other name ] and: [ self description = other description ] !
Item was changed:
----- Method: Scheduler class>>refresh (in category 'as yet unclassified') -----
refresh
+ | oldTasks |
+ oldTasks := self default tasks.
+
+ self default tasksDo: [ :ea | ea delete ].
+ self default addTasks: oldTasks.!
- self stopServices.
- self startServices.!
Item was changed:
Object subclass: #ScheduledTask
+ instanceVariableNames: 'name description scheduler task runHistory workerProcess schedule nextRunTime'
- instanceVariableNames: 'description scheduler task runHistory workerProcess schedule nextRunTime'
classVariableNames: ''
poolDictionaries: ''
category: 'Sake-Scheduler'!
+ !ScheduledTask commentStamp: 'kph 7/10/2009 03:47' prior: 0!
+ If your task is to be run automatically on load or startUp, override #initialize (class side) to call #start
+
+ Publish your tasks for #start via #services
+
+ #stop/#unload are synonomous.
+
+ Additional tasks can be added directly.
+
+ self scheduler addTask: (self do: [ ... ] every: '1:00pm').
+ self scheduler addTask: (self do: #defaultAction every: '1:00pm').
+ method #defaultAction needs to be defined.!
- !ScheduledTask commentStamp: 'kph 3/28/2009 17:04' prior: 0!
- If your task is to be run automatically on load or startUp, override #initialize (class side).
- Otherwise name the method #start.
- #stop/#unload are synomonous.
- !
Item was changed:
----- Method: ScheduledTask>>printOn: (in category 'printing') -----
printOn: aStream
aStream nextPutAll: (self class name); cr.
self description ifNotNil: [aStream nextPutAll: self description; cr].
self isRunning ifTrue: [aStream nextPutAll: 'CURRENTLY RUNNING !!!!'].
self isSuspended ifTrue: [aStream nextPutAll: ' (suspended)'].
aStream
cr;
nextPutAll: 'Next Run Time : ', self nextRunTime asString;
cr;
+ nextPutAll: 'Last Run Time : ', self printLastRunTime!
- nextPutAll: 'Last Run Time : ', (runHistory isEmptyOrNil
- ifTrue: [runHistory ifNil: [ '<not logged>' ] ifNotNil: [ '<never run>' ] ]
- ifFalse: [runHistory last asString]).!
Item was added:
+ ----- Method: ScheduledTask>>name: (in category 'accessing') -----
+ name: anObject
+ "Set the value of name"
+
+ name := anObject!
Item was added:
+ ----- Method: Scheduler>>tasks (in category 'accessing') -----
+ tasks
+
+ | copiedTasks |
+ accessProtect critical: [copiedTasks := tasks copy].
+
+ ^ copiedTasks !
Item was added:
+ ----- Method: Scheduler>>addTasks: (in category 'scheduling') -----
+ addTasks: aList
+ accessProtect critical: [
+ aList do: [ :aScheduledTask | tasks add: (aScheduledTask scheduler: self; yourself)]
+ ]!
Item was changed:
----- Method: ScheduledTask>>description (in category 'accessing') -----
description
+ ^ description ifNil: [ self name ]!
- ^ description!
Item was added:
+ ----- Method: ScheduledTask>>runHistory: (in category 'accessing') -----
+ runHistory: anObject
+ "Set the value of runHistory"
+
+ runHistory := anObject!
Item was added:
+ ----- Method: ScheduledTask>>name (in category 'accessing') -----
+ name
+
+ ^ name ifNil: [ self class name ]!
Item was changed:
----- Method: Scheduler>>addTask: (in category 'scheduling') -----
addTask: aScheduledTask
+ ^ self addTasks: (Array with: aScheduledTask)!
- ^ accessProtect critical: [tasks add: (aScheduledTask scheduler: self; yourself)]!
Item was changed:
----- Method: Scheduler class>>startServices (in category 'as yet unclassified') -----
startServices
self default start.
+ self allServices do: [ :ea | ea start ].
- ScheduledTask allSubclasses do: [ :ea | ea initialize ].
!
Item was added:
+ ----- Method: ScheduledTask>>isScheduled (in category 'executing') -----
+ isScheduled
+ ^ scheduler notNil!
Item was added:
+ ----- Method: ScheduledTask>>hash (in category 'private') -----
+ hash
+
+ ^ self species hash bitXor: self description hash!
Item was added:
+ ----- Method: ScheduledTask class>>start (in category 'as yet unclassified') -----
+ start
+ self stop.
+ self scheduler addTasks: self services!
Item was changed:
----- Method: Scheduler>>tasksDo: (in category 'accessing') -----
tasksDo: aOneArgBlock
+ self tasks do: aOneArgBlock!
- | copiedTasks |
- accessProtect critical: [copiedTasks := tasks copy].
-
- copiedTasks do: aOneArgBlock!
More information about the Packages
mailing list