GDBEventSubscription.st
author Jan Vrany <jan.vrany@labware.com>
Thu, 07 Dec 2023 12:33:31 +0000
changeset 322 1b26d0a9560c
parent 272 cdd1c9ad00de
permissions -rw-r--r--
Emit and handle (custom) `-register-changed` notification This commit adds new (custom) asynchronous notification about register value being changed. Standard GDB does not notify MI clients about register value being changed when debugging (for example, by CLI command `set $rax = 1` or via Python's `Value.assign()`). This caused libgdb's register value cache being out of sync. In the past, this was partially worked around by manually emiting the notification on `GDBRegisterWithValue` APIs, but this did not (and could not) handle the case register was changed from GDB command line. To solve this problem, this commit installs a custom Python event handler that emits new GDB/MI notification - `-register-changed` - whenever a register changes after debugee is stopped. This has been enabled by upstream GDB commit 4825fd "gdb/python: implement support for sending custom MI async notifications" On libgdbs side, complete inferior state is invalidated. In theory, one could carefully invalidate only the changed `GDBRegisterWithValue` but in certain cases this could also change the backtrace (for example, if one updates stack pointer) or position in code. So it seems safer to just invalidate everything.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
     1
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
     4
Copyright (C) 2021-2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
     5
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
     6
Permission is hereby granted, free of charge, to any person obtaining a copy
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
     7
of this software and associated documentation files (the 'Software'), to deal
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
     8
in the Software without restriction, including without limitation the rights
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
     9
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    10
copies of the Software, and to permit persons to whom the Software is
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    11
furnished to do so, subject to the following conditions:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    12
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    13
The above copyright notice and this permission notice shall be included in all
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    14
copies or substantial portions of the Software.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    15
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    16
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    17
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    18
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    19
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    20
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    21
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    22
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    23
"
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
"{ Package: 'jv:libgdbs' }"
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
78
c24e7d8bc881 BUpdated build files.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    26
"{ NameSpace: Smalltalk }"
c24e7d8bc881 BUpdated build files.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    27
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
StrongSubscription subclass:#GDBEventSubscription
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
	instanceVariableNames:''
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
	classVariableNames:''
244
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
    31
	poolDictionaries:'GDBDebugFlags'
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    32
	category:'GDB-Internal'
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    35
!GDBEventSubscription class methodsFor:'documentation'!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    36
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    37
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    38
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    39
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    40
Copyright (C) 2015-now Jan Vrany
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    41
Copyright (C) 2021-2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    42
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    43
Permission is hereby granted, free of charge, to any person obtaining a copy
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    44
of this software and associated documentation files (the 'Software'), to deal
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    45
in the Software without restriction, including without limitation the rights
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    46
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    47
copies of the Software, and to permit persons to whom the Software is
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    48
furnished to do so, subject to the following conditions:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    49
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    50
The above copyright notice and this permission notice shall be included in all
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    51
copies or substantial portions of the Software.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    52
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    53
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    54
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    55
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    56
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    57
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    58
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 244
diff changeset
    59
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    60
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    61
! !
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    62
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
!GDBEventSubscription class methodsFor:'private'!
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
blockFor: anObject withSelector: aSelector
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    | args |
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    args := aSelector numArgs.      
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    anObject isView ifTrue:[ 
176
e734c17e7c37 Use `View >> pushEvent:` or `ApplicationModel >> enqueueMessage:` to post events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
    71
        args = 0 ifTrue: [ ^[ anObject pushEvent: aSelector ] ].
e734c17e7c37 Use `View >> pushEvent:` or `ApplicationModel >> enqueueMessage:` to post events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
    72
        args = 1 ifTrue: [ ^[ :anAnnouncement | anObject pushEvent: aSelector with: anAnnouncement ] ].
e734c17e7c37 Use `View >> pushEvent:` or `ApplicationModel >> enqueueMessage:` to post events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
    73
        args = 2 ifTrue: [ ^[ :anAnnouncement :anAnnouncer | anObject pushEvent: aSelector with: anAnnouncement with: anAnnouncer ] ].
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
        self error: 'Couldn''t create block'.        
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    ].
145
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    76
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    77
    "/ If the observer (receiver of events) is an application,
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    78
    "/ then push the event processing to application's event
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    79
    "/ queue. This avoids blocking of event dispatcher and ensures
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    80
    "/ that UI is synchronized.
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    81
    "/
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    82
    "/ However, we must be carefull since application windows may 
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    83
    "/ not yet be opened or fully initialized so we have to check
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    84
    "/ for existence of sensor. If application/window is not fully 
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    85
    "/ initialized, process the event as usual.
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    86
    (anObject isKindOf: ApplicationModel) ifTrue:[
176
e734c17e7c37 Use `View >> pushEvent:` or `ApplicationModel >> enqueueMessage:` to post events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
    87
        args = 0 ifTrue: [  ^[ anObject enqueueMessage: aSelector ] ].
e734c17e7c37 Use `View >> pushEvent:` or `ApplicationModel >> enqueueMessage:` to post events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
    88
        args = 1 ifTrue: [  ^[ :anAnnouncement | anObject enqueueMessage: aSelector with: anAnnouncement ] ].
e734c17e7c37 Use `View >> pushEvent:` or `ApplicationModel >> enqueueMessage:` to post events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
    89
        args = 1 ifTrue: [  ^[ :anAnnouncement :anAnnouncer | anObject enqueueMessage: aSelector arguments: (Array with: anAnnouncement with: anAnnouncer) ] ].
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
        self error: 'Couldn''t create block'.        
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    ].
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    ^ super blockFor: anObject withSelector: aSelector
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    "Created: / 18-09-2014 / 00:10:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
145
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    95
    "Modified: / 01-10-2018 / 17:30:56 / jv"
176
e734c17e7c37 Use `View >> pushEvent:` or `ApplicationModel >> enqueueMessage:` to post events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
    96
    "Modified: / 18-02-2019 / 10:35:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
! !
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
244
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
    99
!GDBEventSubscription methodsFor:'delivery'!
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   100
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   101
deliver: anAnnouncement from: anAnnouncer
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   102
    TraceEvents ifTrue: [ 
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   103
        Logger log: ('event loop: delivering %1 to %2' bindWith: anAnnouncement with: action printString) severity: #trace facility: 'GDB'.
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   104
    ].
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   105
    ^action cull: anAnnouncement cull: anAnnouncer
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   106
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   107
    "Created: / 29-03-2021 / 11:54:10 / Jan Vrany <jan.vrany@labware.com>"
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   108
!
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   109
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   110
value: anAnnouncement
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   111
    interceptors isNil ifTrue: [ ^ self deliver: anAnnouncement from: self ].
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   112
    interceptors do: [ :each |
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   113
            each cull: anAnnouncement cull: announcer cull: self ]
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   114
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   115
    "Created: / 29-03-2021 / 11:51:51 / Jan Vrany <jan.vrany@labware.com>"
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   116
! !
f0e4ddb50242 Split event processing and event delivery
Jan Vrany <jan.vrany@labware.com>
parents: 176
diff changeset
   117
145
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   118
!GDBEventSubscription class methodsFor:'documentation'!
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   119
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   120
version_HG
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   121
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   122
    ^ '$Changeset: <not expanded> $'
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   123
! !
1256a03213cf Fix `GDBEventSubscription` w.r.t. uninitialized / partially initialized applications
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   124