GDBEventDispatcher.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 26 Mar 2021 14:28:58 +0000
changeset 228 04ce643219ce
parent 226 f6c09fa9424e
child 230 ba4b57758e92
permissions -rw-r--r--
Start event loop process on demand This commit changes event dispatcher so the dispatching process is started on demand, i.e., it is running only when there are events do dispatch. Once all events are dispatched, dispatching process terminates and new one is started as soon as another event arrive. The goal is to have as little processes running as possible - this simplifies cleanup and reduces the number of stale processes when something goes wrong.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
219
Jan Vrany <jan.vrany@labware.com>
parents: 218
diff changeset
     4
Copyright (C) 2021 LabWare
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
This library is free software; you can redistribute it and/or
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
modify it under the terms of the GNU Lesser General Public
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
License as published by the Free Software Foundation; either
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
version 2.1 of the License. 
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
This library is distributed in the hope that it will be useful,
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
but WITHOUT ANY WARRANTY; without even the implied warranty of
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
Lesser General Public License for more details.
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
You should have received a copy of the GNU Lesser General Public
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
License along with this library; if not, write to the Free Software
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
"
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
"{ Package: 'jv:libgdbs' }"
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
"{ NameSpace: Smalltalk }"
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
Object subclass:#GDBEventDispatcher
228
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    25
	instanceVariableNames:'debugger queue lock thread announcer1 announcer2'
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	classVariableNames:''
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	poolDictionaries:'GDBDebugFlags'
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	category:'GDB-Private'
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
!
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
!GDBEventDispatcher class methodsFor:'documentation'!
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
copyright
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
"
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
jv:libgdbs - GNU Debugger Interface Library
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
Copyright (C) 2015-now Jan Vrany
219
Jan Vrany <jan.vrany@labware.com>
parents: 218
diff changeset
    37
Copyright (C) 2021 LabWare
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
This library is free software; you can redistribute it and/or
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
modify it under the terms of the GNU Lesser General Public
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
License as published by the Free Software Foundation; either
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
version 2.1 of the License. 
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
This library is distributed in the hope that it will be useful,
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
but WITHOUT ANY WARRANTY; without even the implied warranty of
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
Lesser General Public License for more details.
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
You should have received a copy of the GNU Lesser General Public
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
License along with this library; if not, write to the Free Software
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
"
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
! !
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
!GDBEventDispatcher class methodsFor:'instance creation'!
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
new
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    "return an initialized instance"
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    ^ self basicNew initialize.
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
! !
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
219
Jan Vrany <jan.vrany@labware.com>
parents: 218
diff changeset
    63
!GDBEventDispatcher methodsFor:'accessing'!
Jan Vrany <jan.vrany@labware.com>
parents: 218
diff changeset
    64
Jan Vrany <jan.vrany@labware.com>
parents: 218
diff changeset
    65
process
228
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    66
    ^ thread
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    67
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    68
    "Modified: / 26-03-2021 / 13:43:40 / Jan Vrany <jan.vrany@labware.com>"
219
Jan Vrany <jan.vrany@labware.com>
parents: 218
diff changeset
    69
! !
Jan Vrany <jan.vrany@labware.com>
parents: 218
diff changeset
    70
226
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    71
!GDBEventDispatcher methodsFor:'adding'!
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    72
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    73
pushEvent: aGDBEvent
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    74
    lock critical:[
228
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    75
        Logger 
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    76
            log:('event loop: pushing %1 (%2)' bindWith:aGDBEvent class name
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    77
                    with:aGDBEvent token)
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    78
            severity:#trace
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    79
            facility:'GDB'
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    80
            originator:self
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    81
            attachment:aGDBEvent.
226
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    82
        queue add: aGDBEvent.
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    83
    ].
228
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    84
    self start
226
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    85
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    86
    "Created: / 02-06-2014 / 22:49:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    87
    "Modified: / 02-10-2018 / 14:30:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
228
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    88
    "Modified: / 17-03-2021 / 13:26:57 / Jan Vrany <jan.vrany@labware.com>"
226
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    89
!
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
226
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    91
pushEventSet: aGDBEventSet
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    92
    lock critical:[
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    93
        queue add: (GDBEventSetProcessingStarted new setEventSet: aGDBEventSet).  
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    94
        queue addAll: aGDBEventSet.
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    95
        queue add: (GDBEventSetProcessingFinished new setEventSet: aGDBEventSet).
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    96
    ].
228
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
    97
    self start.
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
226
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
    99
    "Created: / 02-06-2014 / 22:42:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   100
    "Modified: / 02-10-2018 / 14:30:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   101
    "Modified (format): / 17-03-2021 / 12:33:01 / Jan Vrany <jan.vrany@labware.com>"
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   102
! !
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
!GDBEventDispatcher methodsFor:'initialization'!
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
initialize
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    "Invoked when a new instance is created."
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    super initialize.
226
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   110
    queue := OrderedCollection new.
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   111
    lock := RecursionLock new.
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    "Modified: / 02-10-2018 / 14:13:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
226
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   114
    "Modified: / 17-03-2021 / 12:40:41 / Jan Vrany <jan.vrany@labware.com>"
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
!
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
setAnnouncer1: anAnnouncer
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
    announcer1 := anAnnouncer
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
    "Created: / 02-10-2018 / 14:21:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
!
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
setAnnouncer2: anAnnouncer
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
    announcer2 := anAnnouncer
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
    "Created: / 02-10-2018 / 14:21:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
!
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
221
e7a1196c0c41 Make `GDBEvent` to hold on `GDBDebugger` that 'generated" that event
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   129
setDebugger: aGDBDebugger
e7a1196c0c41 Make `GDBEvent` to hold on `GDBDebugger` that 'generated" that event
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   130
    debugger := aGDBDebugger
e7a1196c0c41 Make `GDBEvent` to hold on `GDBDebugger` that 'generated" that event
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   131
e7a1196c0c41 Make `GDBEvent` to hold on `GDBDebugger` that 'generated" that event
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   132
    "Created: / 09-03-2021 / 21:02:59 / Jan Vrany <jan.vrany@labware.com>"
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
! !
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
!GDBEventDispatcher methodsFor:'private'!
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
221
e7a1196c0c41 Make `GDBEvent` to hold on `GDBDebugger` that 'generated" that event
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   137
dispatchEvent:aGDBEvent
e7a1196c0c41 Make `GDBEvent` to hold on `GDBDebugger` that 'generated" that event
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   138
    aGDBEvent debugger: debugger.
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    TraceEvents ifTrue:[
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
        Logger 
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
            log:('event loop: broadcasting %1 (%2)' bindWith:aGDBEvent class name
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
                    with:aGDBEvent token)
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
            severity:#trace
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
            facility:'GDB'
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
            originator:self
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
            attachment:aGDBEvent
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
    ].
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
    announcer1 notNil ifTrue:[
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
        announcer1 announce:aGDBEvent.
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    ].
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
    announcer2 notNil ifTrue:[
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
        announcer2 announce:aGDBEvent
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
    ].
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
    "Created: / 02-06-2014 / 22:58:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
    "Modified: / 02-10-2018 / 14:36:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
221
e7a1196c0c41 Make `GDBEvent` to hold on `GDBDebugger` that 'generated" that event
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   157
    "Modified: / 09-03-2021 / 21:03:21 / Jan Vrany <jan.vrany@labware.com>"
228
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   158
!
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   159
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   160
dispatchEvents
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   161
    "Dispatch all events the queue."
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   162
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   163
    | event |
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   164
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   165
    [
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   166
        event := nil.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   167
        lock critical:[
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   168
            queue notEmpty ifTrue:[event := queue removeFirst]
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   169
        ].
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   170
        event notNil ifTrue:[
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   171
            self dispatchEvent: event
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   172
        ].
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   173
        event notNil.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   174
    ] whileTrue.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   175
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   176
    "Created: / 26-03-2021 / 21:10:49 / Jan Vrany <jan.vrany@labware.com>"
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
! !
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
226
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   179
!GDBEventDispatcher methodsFor:'queries'!
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   180
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   181
hasPendingEvents
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   182
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   183
    "/ Note that there's no obligation for this information to
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   184
    "/ be 100% accurate, so no need for symchronization here.
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   185
    ^ queue notEmpty. 
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   186
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   187
    "Created: / 17-03-2021 / 12:36:16 / Jan Vrany <jan.vrany@labware.com>"
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   188
!
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   189
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   190
hasPendingEventsMatching: aBlock
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   191
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   192
    | anyCommandEventPending |
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   193
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   194
    "/ Here, synchronization is required since we iterate over
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   195
    "/ collection...
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   196
    lock critical:[
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   197
        anyCommandEventPending := queue anySatisfy: aBlock
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   198
    ].
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   199
    ^ anyCommandEventPending
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   200
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   201
    "Created: / 17-03-2021 / 12:37:58 / Jan Vrany <jan.vrany@labware.com>"
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   202
! !
f6c09fa9424e Move event queue into `GDBEventDispatcher` object
Jan Vrany <jan.vrany@labware.com>
parents: 221
diff changeset
   203
228
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   204
!GDBEventDispatcher methodsFor:'start & stop'!
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   205
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   206
start
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   207
    | t |
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   208
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   209
    self assert: queue notNil.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   210
    self assert: lock notNil.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   211
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   212
     ((t := thread) isNil or:[t isDead]) ifTrue:[
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   213
        thread := [
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   214
                self dispatchEvents.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   215
                thread := nil.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   216
            ] newProcess.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   217
        thread name:('GDB Event dispatcher').
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   218
        "/thread priority:Processor userBackgroundPriority.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   219
        thread addExitAction:[
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   220
            thread := nil.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   221
        ].
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   222
        thread resume.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   223
    ].
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   224
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   225
    "Created: / 02-10-2018 / 14:25:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   226
    "Modified (format): / 02-10-2018 / 16:34:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   227
    "Modified: / 26-03-2021 / 21:10:59 / Jan Vrany <jan.vrany@labware.com>"
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   228
!
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   229
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   230
wait
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   231
    "Wait until all events are processed"
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   232
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   233
    | t |
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   234
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   235
    (t := thread) isNil ifTrue:[^self].
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   236
    thread := nil.
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   237
    t isDead ifTrue: [ ^ self ].
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   238
    t priority:(Processor userSchedulingPriority + 1).
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   239
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   240
    "Created: / 02-10-2018 / 14:25:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   241
    "Modified: / 26-03-2021 / 14:17:11 / Jan Vrany <jan.vrany@labware.com>"
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   242
    "Modified (comment): / 26-03-2021 / 21:01:30 / Jan Vrany <jan.vrany@labware.com>"
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   243
! !
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 226
diff changeset
   244
218
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
!GDBEventDispatcher class methodsFor:'documentation'!
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
version_HG
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
    ^ '$Changeset: <not expanded> $'
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
! !
42d5a8a5e14e Encapsulate event dispatch loop logic into single object - a `GDBEventDispatcher`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251