BackgroundJob.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 18 Apr 2012 10:17:12 +0200
changeset 2736 5f916a59f5e6
parent 2711 4e821abc0c2e
child 2976 e1da8a03d161
permissions -rw-r--r--
added: #thread
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
2576
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
     2
 COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
2587
e149cfcded61 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2585
diff changeset
     3
	      All Rights Reserved
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
2576
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
     5
Permission is hereby granted, free of charge, to any person
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
     6
obtaining a copy of this software and associated documentation
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
     7
files (the 'Software'), to deal in the Software without
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
     8
restriction, including without limitation the rights to use,
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
     9
copy, modify, merge, publish, distribute, sublicense, and/or sell
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    10
copies of the Software, and to permit persons to whom the
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    11
Software is furnished to do so, subject to the following
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    12
conditions:
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    13
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    14
The above copyright notice and this permission notice shall be
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    15
included in all copies or substantial portions of the Software.
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    16
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    17
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    18
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    19
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    20
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    21
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    22
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    23
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    24
OTHER DEALINGS IN THE SOFTWARE.
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
"
2587
e149cfcded61 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2585
diff changeset
    26
"{ Package: 'stx:libbasic2' }"
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
Object subclass:#BackgroundJob
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
    29
	instanceVariableNames:'name job priority thread running'
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	classVariableNames:''
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	poolDictionaries:''
2590
Claus Gittinger <cg@exept.de>
parents: 2588
diff changeset
    32
	category:'System-Support'
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!BackgroundJob class methodsFor:'documentation'!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
copyright
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
2576
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    39
 COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
2587
e149cfcded61 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2585
diff changeset
    40
	      All Rights Reserved
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
2576
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    42
Permission is hereby granted, free of charge, to any person
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    43
obtaining a copy of this software and associated documentation
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    44
files (the 'Software'), to deal in the Software without
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    45
restriction, including without limitation the rights to use,
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    46
copy, modify, merge, publish, distribute, sublicense, and/or sell
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    47
copies of the Software, and to permit persons to whom the
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    48
Software is furnished to do so, subject to the following
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    49
conditions:
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    50
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    51
The above copyright notice and this permission notice shall be
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    52
included in all copies or substantial portions of the Software.
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    53
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    54
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    55
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    56
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    57
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    58
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    59
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    60
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
7f5b86f90249 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
    61
OTHER DEALINGS IN THE SOFTWARE.
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
"
2590
Claus Gittinger <cg@exept.de>
parents: 2588
diff changeset
    63
!
Claus Gittinger <cg@exept.de>
parents: 2588
diff changeset
    64
Claus Gittinger <cg@exept.de>
parents: 2588
diff changeset
    65
documentation
Claus Gittinger <cg@exept.de>
parents: 2588
diff changeset
    66
"
2602
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    67
    A BackgroundJob is a helper class for any kind of background
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    68
    processing. Possible uses include (but not limited to): 
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    69
    copying files, syntax higlighting, live searching, autosave, etc.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    70
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    71
    A task to be processed in a background is given to instances
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    72
    in a form of a block or a message send. The background task must 
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    73
    be then started by sending a #start message to the instance of 
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    74
    the job. A job may be restarted any time by sending #restart or
2611
9087baddf7d0 changed: #documentation
Stefan Vogel <sv@exept.de>
parents: 2602
diff changeset
    75
    terminated by sending #stop. Sending #start to already started
2602
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    76
    job does nothing.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    77
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    78
    Implementation note: 
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    79
    The the task is actually processed in a separate, exclusive    
2611
9087baddf7d0 changed: #documentation
Stefan Vogel <sv@exept.de>
parents: 2602
diff changeset
    80
    worker thread, so an explicit synchronization have to
2602
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    81
    be done iff the task accesses possibly shared data. 
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    82
    The worker exists only iff the job is actually running. When 
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    83
    the task is finished, worker thread terminates.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    84
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    85
    [author:]
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    86
        Jan Vrany <jan.vrany@fit.cvut.cz>
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    87
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    88
    [instance variables:]
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    89
        name    <String|nil>            A user friendly name of a job,
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    90
                                        useful for identifing job's thread in
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    91
                                        process list.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    92
        job     <Block|MessageSend>     A task to perform in background.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    93
        priority<Integer>               A priority of worker thread. Defaults to
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    94
                                        Processor userBackgroundPriority.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    95
        thread  <Process|nil>           The worker thread
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    96
        running <Boolean>               Boolean value indicating whether
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    97
                                        tasks already started or not.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    98
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
    99
    [see also:]
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   100
        BackgroundQueueProcessingJob
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   101
        Tools::CodeHighlightingService (uses this class)
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   102
    
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   103
    
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   104
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   105
"
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   106
!
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   107
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   108
examples
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   109
"
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   110
    | job text |
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   111
    job :=  BackgroundJob named: 'example job' on:[
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   112
                Delay waitForSeconds: 3.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   113
                Transcript showCR:'One guy said: ', text
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   114
            ].
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   115
    text := 'Hello world'.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   116
    job restart.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   117
    Delay waitForSeconds: 5.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   118
    text := 'Ahoj Svete!!'.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   119
    job restart.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   120
    Delay waitForSeconds: 1.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   121
    text := 'Haya, I''m talking fast, you should not see the czech greeting'.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   122
    job restart.
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   123
2590
Claus Gittinger <cg@exept.de>
parents: 2588
diff changeset
   124
"
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
! !
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
!BackgroundJob class methodsFor:'instance creation'!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
named: name
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    ^self new name: name
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    "Created: / 28-04-2011 / 20:26:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
named: name on: block
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    ^self new name: name; job: block
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    "Created: / 28-04-2011 / 20:27:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   143
new
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   144
    "return an initialized instance"
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   145
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   146
    ^ self basicNew initialize.
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   147
!
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   148
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
on: block
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    ^self new job: block
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    "Created: / 28-04-2011 / 20:30:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
! !
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
!BackgroundJob methodsFor:'accessing'!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
job
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    ^ job
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
job:aBlockOrMessageSend
2602
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   163
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   164
    "Sets the job to be done. The job is sent
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   165
    #value from the worker thread once started"
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   166
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
    job := aBlockOrMessageSend.
2602
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   168
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   169
    "Modified (comment): / 03-08-2011 / 21:02:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
name
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    ^ name ? '<unnamed background job>'
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    "Modified: / 28-04-2011 / 20:29:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
name:aString
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    name := aString.
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   180
!
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   181
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   182
priority
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   183
    ^ priority
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   184
!
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   185
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   186
priority:anInteger
2602
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   187
    "Set the priority of a worker thread"
2587
e149cfcded61 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2585
diff changeset
   188
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   189
    priority := anInteger.
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   190
2588
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   191
    "Modified (format): / 03-08-2011 / 16:42:45 / cg"
2602
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   192
    "Modified (comment): / 03-08-2011 / 21:01:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2736
5f916a59f5e6 added: #thread
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711
diff changeset
   193
!
5f916a59f5e6 added: #thread
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711
diff changeset
   194
5f916a59f5e6 added: #thread
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711
diff changeset
   195
thread
5f916a59f5e6 added: #thread
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711
diff changeset
   196
    "Return the thread (an instance of Process) that currently
5f916a59f5e6 added: #thread
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711
diff changeset
   197
     processes the job or nil. if no processing is currently performed."
5f916a59f5e6 added: #thread
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711
diff changeset
   198
5f916a59f5e6 added: #thread
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711
diff changeset
   199
    ^thread
5f916a59f5e6 added: #thread
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711
diff changeset
   200
5f916a59f5e6 added: #thread
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711
diff changeset
   201
    "Created: / 18-04-2012 / 10:16:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   202
! !
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   203
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   204
!BackgroundJob methodsFor:'initialization'!
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   205
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   206
initialize
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   207
    priority := Processor userBackgroundPriority.
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   208
    running := false.
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   209
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   210
    "/ super initialize.   -- commented since inherited method does nothing
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   211
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   212
    "Modified: / 29-07-2011 / 10:52:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2588
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   213
    "Modified (format): / 03-08-2011 / 16:42:51 / cg"
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
! !
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
2706
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   216
!BackgroundJob methodsFor:'private'!
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   217
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   218
setupThread: t priority: p
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   219
    "Sets up worker thread"
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   220
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   221
    t priority: p.
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   222
    t name: name.
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   223
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   224
    "Created: / 20-01-2012 / 16:38:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   225
! !
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   226
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
!BackgroundJob methodsFor:'processing'!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
process
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    "Do the job. May be overriden by subclasses to
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
     do some more complex operations"
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   233
    running := true.
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
    job value
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
    "Created: / 28-04-2011 / 20:23:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2588
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   237
    "Modified (format): / 03-08-2011 / 16:42:42 / cg"
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
! !
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   240
!BackgroundJob methodsFor:'queries'!
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   241
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   242
running
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   243
    "Return true if the job is actually running, i.e., if it
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   244
     is actually computing a value, contrary to #scheduled, that
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   245
     returns true even if computation actually did not start
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   246
     (i.e., thread is created but was not scheduled so far)"
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   247
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   248
    ^running
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   249
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   250
    "Created: / 29-07-2011 / 10:23:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2588
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   251
    "Modified (format): / 03-08-2011 / 16:42:35 / cg"
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   252
!
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   253
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   254
scheduled
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   255
    "Return true, if the job has been already started"
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   256
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   257
    ^thread notNil
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   258
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   259
    "Created: / 29-07-2011 / 10:47:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2588
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   260
    "Modified (format): / 03-08-2011 / 16:42:32 / cg"
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   261
! !
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   262
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
!BackgroundJob methodsFor:'start & stop'!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
2711
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   265
abort
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   266
    "Abort the job, if it is running. Similar to #stop, but raises 
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   267
     abort operation request so the job has a chance to terminate
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   268
     gracefully"
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   269
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   270
    | t |
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   271
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   272
    (t := thread) isNil ifTrue:[^self].
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   273
    t interruptWith:[
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   274
        NoHandlerError handle:[:ex |
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   275
            ex parameter signal == AbortOperationRequest ifTrue:[
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   276
                ex return.
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   277
            ].
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   278
            ex reject.
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   279
        ] do:[
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   280
            AbortOperationRequest raise.
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   281
        ].
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   282
    ].
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   283
    self stop
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   284
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   285
    "Created: / 09-02-2012 / 19:34:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   286
!
4e821abc0c2e added: #abort
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2706
diff changeset
   287
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
restart
2602
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   289
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   290
    running ifTrue:[
2588
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   291
        self stop.
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   292
    ].
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   293
    self start
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
    "Created: / 28-04-2011 / 20:31:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2588
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   296
    "Modified (format): / 03-08-2011 / 16:42:39 / cg"
2602
44d00fea6ee0 Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2590
diff changeset
   297
    "Modified (comment): / 03-08-2011 / 21:03:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
start
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   301
    self startWithPriority: priority
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   302
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   303
    "Created: / 28-04-2011 / 20:23:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2590
Claus Gittinger <cg@exept.de>
parents: 2588
diff changeset
   304
    "Modified (format): / 03-08-2011 / 16:44:36 / cg"
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   305
!
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   306
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   307
startWithPriority: prio
2588
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   308
    | t |
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   309
2588
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   310
    ((t := thread) isNil or:[t isDead]) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   311
        thread := [
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   312
            [
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   313
                self process
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   314
            ] ensure: [
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   315
                running := false.
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   316
                thread := nil
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   317
            ]
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   318
        ] newProcess.
2706
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   319
        self setupThread: thread priority: prio.
2588
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   320
        thread resume.
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
    ]
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
2585
af78d4b32e4d - CodeHighlightingService refactored to use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2576
diff changeset
   323
    "Created: / 29-07-2011 / 11:04:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2588
Claus Gittinger <cg@exept.de>
parents: 2587
diff changeset
   324
    "Modified (format): / 03-08-2011 / 16:42:19 / cg"
2706
99b71585e8d0 Refactoring to allow custom thread setup in subclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2674
diff changeset
   325
    "Modified: / 20-01-2012 / 16:39:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
stop
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
    | t |
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
2674
88904093a5aa changed: #stop
Claus Gittinger <cg@exept.de>
parents: 2611
diff changeset
   331
    (t := thread) isNil ifTrue:[^self].
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
    thread := nil.
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
    t terminate.
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
    "/ raise its prio to make it terminate quickly
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
    t priority:(Processor userSchedulingPriority + 1)
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
    "Created: / 28-04-2011 / 20:31:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2674
88904093a5aa changed: #stop
Claus Gittinger <cg@exept.de>
parents: 2611
diff changeset
   338
    "Modified: / 18-11-2011 / 14:07:28 / cg"
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
! !
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
!BackgroundJob class methodsFor:'documentation'!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
2590
Claus Gittinger <cg@exept.de>
parents: 2588
diff changeset
   343
version
2736
5f916a59f5e6 added: #thread
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711
diff changeset
   344
    ^ '$Header: /cvs/stx/stx/libbasic2/BackgroundJob.st,v 1.12 2012-04-18 08:17:12 vrany Exp $'
2590
Claus Gittinger <cg@exept.de>
parents: 2588
diff changeset
   345
!
Claus Gittinger <cg@exept.de>
parents: 2588
diff changeset
   346
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
version_CVS
2736
5f916a59f5e6 added: #thread
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711
diff changeset
   348
    ^ '$Header: /cvs/stx/stx/libbasic2/BackgroundJob.st,v 1.12 2012-04-18 08:17:12 vrany Exp $'
2574
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
!
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
version_SVN
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
    ^ '§Id§'
0c9345fafac7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
! !