author | Patrik Svestka <patrik.svestka@gmail.com> |
Tue, 09 Apr 2019 11:34:04 +0200 | |
branch | jv |
changeset 24093 | 0f94f6c8c9d4 |
parent 23107 | 40173e082cbc |
permissions | -rw-r--r-- |
6270 | 1 |
" |
2 |
COPYRIGHT (c) 1997 by eXept Software AG / Claus Gittinger |
|
23107 | 3 |
COPYRIGHT (c) 2017 Jan Vrany |
6270 | 4 |
All Rights Reserved |
5 |
||
6 |
This software is furnished under a license and may be used |
|
7 |
only in accordance with the terms of that license and with the |
|
8 |
inclusion of the above copyright notice. This software may not |
|
9 |
be provided or otherwise made available to, or used by, any |
|
10 |
other person. No title to or ownership of the software is |
|
11 |
hereby transferred. |
|
12 |
" |
|
6271 | 13 |
"{ Package: 'stx:libbasic' }" |
6270 | 14 |
|
17464 | 15 |
"{ NameSpace: Smalltalk }" |
16 |
||
6270 | 17 |
Object subclass:#OSErrorHolder |
10388 | 18 |
instanceVariableNames:'errorSymbol errorCategory parameter' |
21048 | 19 |
classVariableNames:'Signals' |
6270 | 20 |
poolDictionaries:'' |
6271 | 21 |
category:'OS-Support' |
6270 | 22 |
! |
23 |
||
24 |
!OSErrorHolder class methodsFor:'documentation'! |
|
25 |
||
26 |
copyright |
|
27 |
" |
|
28 |
COPYRIGHT (c) 1997 by eXept Software AG / Claus Gittinger |
|
23107 | 29 |
COPYRIGHT (c) 2017 Jan Vrany |
6270 | 30 |
All Rights Reserved |
31 |
||
32 |
This software is furnished under a license and may be used |
|
33 |
only in accordance with the terms of that license and with the |
|
34 |
inclusion of the above copyright notice. This software may not |
|
35 |
be provided or otherwise made available to, or used by, any |
|
36 |
other person. No title to or ownership of the software is |
|
37 |
hereby transferred. |
|
38 |
" |
|
39 |
||
40 |
||
41 |
! |
|
42 |
||
43 |
documentation |
|
44 |
" |
|
6271 | 45 |
This class represents low level operating system errors. |
46 |
We do not use error numbers, because there may be different errnos |
|
47 |
for the same error on different systems. |
|
6270 | 48 |
|
6271 | 49 |
[instance variables:] |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
50 |
errorSymbol symbol associated with this error |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
51 |
errorCategory symbol defining the error category. |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
52 |
This is in fact a symbol that returns a |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
53 |
Signal when sent to myself. |
6270 | 54 |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
55 |
While the errorSymbol may be different on different platforms, |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
56 |
the errorCategories (which refer to the Signals that will be raised) |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
57 |
are identical. |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
58 |
You can get an OS independent error message for an error by sending |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
59 |
#errorCategoryString. |
6271 | 60 |
|
61 |
[author:] |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
62 |
Stefan Vogel |
6271 | 63 |
|
64 |
[see also:] |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
65 |
OperatingSystem |
6270 | 66 |
" |
67 |
! ! |
|
68 |
||
21058 | 69 |
!OSErrorHolder class methodsFor:'instance creation'! |
70 |
||
71 |
errorSymbol:sym errorCategory:typ |
|
72 |
^ self new errorSymbol:sym errorCategory:typ |
|
73 |
! |
|
74 |
||
75 |
unsupportedOperation |
|
76 |
^ self new errorSymbol:'operation not supported' errorCategory:#unsupportedOperationSignal |
|
77 |
! ! |
|
78 |
||
6294 | 79 |
!OSErrorHolder class methodsFor:'Signal constants'! |
80 |
||
6297 | 81 |
allocRetrySignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
82 |
^ self signals at:#allocRetrySignal |
6297 | 83 |
! |
84 |
||
85 |
badAccessorSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
86 |
^ self signals at:#badAccessorSignal |
6297 | 87 |
! |
88 |
||
89 |
badArgumentsSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
90 |
^ self signals at:#badArgumentsSignal |
6297 | 91 |
! |
92 |
||
9164 | 93 |
classNotRegisteredSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
94 |
^ self signals at:#classNotRegisteredSignal |
9164 | 95 |
! |
96 |
||
97 |
coNotInitializedSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
98 |
^ self signals at:#coNotInitializedSignal |
9164 | 99 |
! |
100 |
||
10751
c3fdb104adba
dont forget the defaultOsErrorSignal
Claus Gittinger <cg@exept.de>
parents:
10388
diff
changeset
|
101 |
defaultOsErrorSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
102 |
^ self signals at:#defaultOsErrorSignal |
10751
c3fdb104adba
dont forget the defaultOsErrorSignal
Claus Gittinger <cg@exept.de>
parents:
10388
diff
changeset
|
103 |
! |
c3fdb104adba
dont forget the defaultOsErrorSignal
Claus Gittinger <cg@exept.de>
parents:
10388
diff
changeset
|
104 |
|
6297 | 105 |
existingReferentSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
106 |
^ self signals at:#existingReferentSignal |
6297 | 107 |
! |
108 |
||
109 |
illegalOperationSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
110 |
^ self signals at:#illegalOperationSignal |
6297 | 111 |
! |
112 |
||
113 |
inaccessibleSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
114 |
^ self signals at:#inaccessibleSignal |
6297 | 115 |
! |
116 |
||
117 |
inappropriateOperationSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
118 |
^ self signals at:#inappropriateOperationSignal |
6297 | 119 |
! |
120 |
||
121 |
inappropriateReferentSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
122 |
^ self signals at:#inappropriateReferentSignal |
6297 | 123 |
! |
124 |
||
6294 | 125 |
invalidArgumentsSignal |
126 |
"return the signal for invalid arguments (e.g. right class, wrong value)." |
|
127 |
||
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
128 |
^ self signals at:#invalidArgumentsSignal |
6297 | 129 |
! |
130 |
||
131 |
needRetrySignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
132 |
^ self signals at:#needRetrySignal |
6297 | 133 |
! |
134 |
||
9164 | 135 |
noAggregationSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
136 |
^ self signals at:#noAggregationSignal |
9164 | 137 |
! |
138 |
||
12954 | 139 |
noAssociationSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
140 |
^ self signals at:#noAssociationSignal |
12954 | 141 |
! |
142 |
||
6297 | 143 |
noDataSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
144 |
^ self signals at:#noDataSignal |
6297 | 145 |
! |
146 |
||
9164 | 147 |
noInterfaceSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
148 |
^ self signals at:#noInterfaceSignal |
9164 | 149 |
! |
150 |
||
6297 | 151 |
noMemorySignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
152 |
^ self signals at:#noMemorySignal |
6297 | 153 |
! |
154 |
||
155 |
noPermissionsSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
156 |
^ self signals at:#noPermissionsSignal |
6297 | 157 |
! |
158 |
||
159 |
noResourcesSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
160 |
^ self signals at:#noResourcesSignal |
6297 | 161 |
! |
162 |
||
9179 | 163 |
noVerbsSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
164 |
^ self signals at:#noVerbsSignal |
9179 | 165 |
! |
166 |
||
6297 | 167 |
nonexistentSignal |
168 |
"return the signal for non existing referents (i.e. device, file etc.)." |
|
169 |
||
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
170 |
^ self signals at:#nonexistentSignal |
6297 | 171 |
! |
172 |
||
173 |
notReadySignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
174 |
^ self signals at:#notReadySignal |
6297 | 175 |
! |
176 |
||
177 |
peerFaultSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
178 |
^ self signals at:#peerFaultSignal |
6297 | 179 |
! |
180 |
||
181 |
rangeErrorSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
182 |
^ self signals at:#rangeErrorSignal |
6297 | 183 |
! |
184 |
||
9179 | 185 |
signalNamed:signalName |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
186 |
^ self signals at:signalName |
9179 | 187 |
! |
188 |
||
19531 | 189 |
signals |
190 |
Signals isNil ifTrue:[ |
|
191 |
self initializeSignals |
|
192 |
]. |
|
193 |
^ Signals |
|
194 |
! |
|
195 |
||
6297 | 196 |
transferFaultSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
197 |
^ self signals at:#transferFaultSignal |
6297 | 198 |
! |
199 |
||
200 |
transientErrorSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
201 |
^ self signals at:#transientErrorSignal |
6297 | 202 |
! |
203 |
||
204 |
unavailableReferentSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
205 |
^ self signals at:#unavailableReferentSignal |
6297 | 206 |
! |
207 |
||
208 |
underSpecifiedSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
209 |
^ self signals at:#underSpecifiedSignal |
6297 | 210 |
! |
211 |
||
9164 | 212 |
unknownNameSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
213 |
^ self signals at:#unknownNameSignal |
9164 | 214 |
! |
215 |
||
6297 | 216 |
unpreparedOperationSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
217 |
^ self signals at:#unpreparedOperationSignal |
6297 | 218 |
! |
219 |
||
220 |
unsupportedOperationSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
221 |
^ self signals at:#unsupportedOperationSignal |
6297 | 222 |
! |
223 |
||
224 |
volumeFullSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
225 |
^ self signals at:#volumeFullSignal |
6297 | 226 |
! |
227 |
||
228 |
wrongSubtypeForOperationSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
229 |
^ self signals at:#wrongSubtypeForOperationSignal |
6294 | 230 |
! ! |
231 |
||
6270 | 232 |
!OSErrorHolder class methodsFor:'accessing'! |
233 |
||
234 |
errorSignal |
|
15191 | 235 |
^ OsError |
6270 | 236 |
|
237 |
"Created: 25.1.1997 / 18:07:55 / cg" |
|
238 |
! ! |
|
239 |
||
6271 | 240 |
!OSErrorHolder class methodsFor:'class initialization'! |
241 |
||
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
242 |
initializeSignals |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
243 |
"init signals etc." |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
244 |
|
12957 | 245 |
|unavailableReferentSignal| |
6271 | 246 |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
247 |
Signals isNil ifTrue:[ |
21048 | 248 |
Signals := Dictionary new:40. |
6271 | 249 |
|
21048 | 250 |
OsNoResourcesError notifierString:'Not enough resources'. |
251 |
Signals at:#noResourcesSignal put:OsNoResourcesError. |
|
6271 | 252 |
|
21048 | 253 |
OsIllegalOperation notifierString:'Illegal Operation'. |
254 |
Signals at:#illegalOperationSignal put:OsIllegalOperation. |
|
6297 | 255 |
|
21048 | 256 |
OsInvalidArgumentsError notifierString:'Invalid Arguments'. |
257 |
Signals at:#invalidArgumentsSignal put:OsInvalidArgumentsError. |
|
6297 | 258 |
|
21048 | 259 |
OsInaccessibleError notifierString:'Referent inaccessible'. |
260 |
Signals at:#inaccessibleSignal put:OsInaccessibleError. |
|
6297 | 261 |
|
21048 | 262 |
OsTransferFaultError notifierString:'Transfer fault'. |
263 |
Signals at:#transferFaultSignal put:OsTransferFaultError. |
|
6297 | 264 |
|
21048 | 265 |
OsNeedRetryError notifierString:'Retry Operation'. |
266 |
Signals at:#needRetrySignal put:OsNeedRetryError. |
|
6271 | 267 |
|
21048 | 268 |
Signals at:#defaultOsErrorSignal put:OsError. |
10751
c3fdb104adba
dont forget the defaultOsErrorSignal
Claus Gittinger <cg@exept.de>
parents:
10388
diff
changeset
|
269 |
|
21048 | 270 |
"/ Information signals |
6271 | 271 |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
272 |
"/ s := self setupSignal:#informationSignal parent:OSErrorSignal |
12957 | 273 |
"/ notifier:'Information'. |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
274 |
"/ self setupSignal:#operationStartedSignal parent:s |
12957 | 275 |
"/ notifier:'Operation started'. |
276 |
||
21048 | 277 |
"/ Retry signals |
6271 | 278 |
|
21048 | 279 |
self setupSignal:#notReadySignal parent:OsNeedRetryError |
280 |
notifier:' -- referent not ready'. |
|
281 |
self setupSignal:#transientErrorSignal parent:OsNeedRetryError |
|
282 |
notifier:' -- transient error'. |
|
283 |
self setupSignal:#allocRetrySignal parent:OsNeedRetryError |
|
284 |
notifier:' -- allocation failure'. |
|
6271 | 285 |
|
21048 | 286 |
"/ Resource signals |
6271 | 287 |
|
21048 | 288 |
self setupSignal:#noMemorySignal parent:OsNoResourcesError |
289 |
notifier:' -- memory'. |
|
6271 | 290 |
|
21048 | 291 |
"/ Transfer faults |
6271 | 292 |
|
21048 | 293 |
self setupSignal:#noDataSignal parent:OsTransferFaultError |
294 |
notifier:'Data unavailable/EOF reached'. |
|
295 |
self setupSignal:#peerFaultSignal parent:OsTransferFaultError |
|
296 |
notifier:'Communication with peer failed'. |
|
297 |
self setupSignal:#volumeFullSignal parent:OsTransferFaultError |
|
298 |
notifier:'Volume full'. |
|
6271 | 299 |
|
21048 | 300 |
"/ Inaccesible faults |
6271 | 301 |
|
21048 | 302 |
self setupSignal:#nonexistentSignal parent:OsInaccessibleError |
303 |
notifier:'File does not exist'. |
|
304 |
unavailableReferentSignal := |
|
305 |
self setupSignal:#unavailableReferentSignal parent:OsInaccessibleError |
|
306 |
notifier:' currently'. |
|
307 |
self setupSignal:#noPermissionsSignal parent:OsInaccessibleError |
|
308 |
notifier:'Permission denied'. |
|
309 |
self setupSignal:#existingReferentSignal parent:OsInaccessibleError |
|
310 |
notifier:' -- already exists or currently in use'. |
|
311 |
self setupSignal:#inappropriateReferentSignal parent:OsInaccessibleError |
|
312 |
notifier:' -- operation inappropriate'. |
|
6271 | 313 |
|
21048 | 314 |
"/ Illegal operations |
6271 | 315 |
|
21048 | 316 |
self setupSignal:#inappropriateOperationSignal parent:OsIllegalOperation |
317 |
notifier:'Inappropriate operation'. |
|
318 |
self setupSignal:#wrongSubtypeForOperationSignal parent:OsIllegalOperation |
|
319 |
notifier:' -- wrong subtype'. |
|
320 |
self setupSignal:#unsupportedOperationSignal parent:OsIllegalOperation |
|
321 |
notifier:' -- on this platform'. |
|
322 |
self setupSignal:#unpreparedOperationSignal parent:OsIllegalOperation |
|
323 |
notifier:' -- wrong sequence'. |
|
6271 | 324 |
|
21048 | 325 |
"/ Illegal arguments |
6271 | 326 |
|
21048 | 327 |
self setupSignal:#badArgumentsSignal parent:OsInvalidArgumentsError |
328 |
notifier:' -- wrong class'. |
|
329 |
self setupSignal:#badAccessorSignal parent:OsInvalidArgumentsError |
|
330 |
notifier:' -- accessor invalid'. |
|
331 |
self setupSignal:#rangeErrorSignal parent:OsInvalidArgumentsError |
|
332 |
notifier:' -- out of range'. |
|
333 |
self setupSignal:#underSpecifiedSignal parent:OsInvalidArgumentsError |
|
334 |
notifier:' -- operation not fully specified'. |
|
9164 | 335 |
|
21048 | 336 |
"/ COM errors |
337 |
self setupSignal:#coNotInitializedSignal parent:OsIllegalOperation |
|
338 |
notifier:'COM not initialized'. |
|
339 |
self setupSignal:#noInterfaceSignal parent:unavailableReferentSignal |
|
340 |
notifier:'No such interface'. |
|
341 |
self setupSignal:#classNotRegisteredSignal parent:unavailableReferentSignal |
|
342 |
notifier:'Class not registered'. |
|
343 |
self setupSignal:#noAggregationSignal parent:OsIllegalOperation |
|
344 |
notifier:'No Aggregation'. |
|
345 |
self setupSignal:#unknownNameSignal parent:unavailableReferentSignal |
|
346 |
notifier:'Unknown member name'. |
|
347 |
self setupSignal:#noVerbsSignal parent:OsIllegalOperation |
|
348 |
notifier:'No verbs for OLE object'. |
|
11031 | 349 |
|
21048 | 350 |
"/ Shell errors |
351 |
self setupSignal:#noAssociationSignal parent:unavailableReferentSignal |
|
352 |
notifier:'No association for file extension'. |
|
6271 | 353 |
]. |
354 |
||
355 |
" |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
356 |
Signals := nil. |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
357 |
self initializeSignals |
6271 | 358 |
" |
6297 | 359 |
! |
360 |
||
361 |
setupSignal:aSymbol parent:parentSignal notifier:aString |
|
362 |
"setup a signal, which can be retrieved by sending aSymbol to self. |
|
363 |
Return the new signal" |
|
364 |
||
365 |
|s| |
|
366 |
||
367 |
Signals at:aSymbol |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
368 |
put:(s := parentSignal newSignal |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
369 |
notifierString:aString; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
370 |
nameClass:self message:aSymbol). |
6297 | 371 |
^ s |
6271 | 372 |
! ! |
373 |
||
6270 | 374 |
!OSErrorHolder methodsFor:'accessing'! |
375 |
||
15463 | 376 |
errorCategory |
377 |
^ errorCategory |
|
378 |
! |
|
379 |
||
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
380 |
errorSymbol |
15463 | 381 |
^ errorSymbol |
382 |
! |
|
383 |
||
6280 | 384 |
errorSymbol:sym errorCategory:typ |
6270 | 385 |
errorSymbol := sym. |
21058 | 386 |
errorCategory := typ ? #defaultOsErrorSignal. |
10388 | 387 |
! |
388 |
||
389 |
parameter |
|
390 |
^ parameter |
|
391 |
! |
|
392 |
||
393 |
parameter:something |
|
394 |
parameter := something. |
|
6270 | 395 |
! ! |
396 |
||
6294 | 397 |
!OSErrorHolder methodsFor:'error reporting'! |
398 |
||
399 |
reportError |
|
400 |
"Report an error." |
|
401 |
"Delegate to the receiver's error reporter." |
|
402 |
||
21784
d58698c455c1
UNIX: added support for TTY / PTY attributes (`tdgetattr()` & `tcsetattr()`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
21088
diff
changeset
|
403 |
<resource: #skipInDebuggersWalkBack> |
d58698c455c1
UNIX: added support for TTY / PTY attributes (`tdgetattr()` & `tcsetattr()`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
21088
diff
changeset
|
404 |
|
9179 | 405 |
|signal| |
406 |
||
407 |
signal := self class signalNamed:errorCategory. |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
408 |
signal |
21048 | 409 |
raiseWith:self |
410 |
errorString:(parameter isNil ifTrue:[nil] ifFalse:[' - ', parameter printString]) |
|
411 |
in:(thisContext "sender"). |
|
412 |
||
413 |
" |
|
414 |
(OperatingSystem errorHolderForNumber:22) reportError |
|
415 |
" |
|
21784
d58698c455c1
UNIX: added support for TTY / PTY attributes (`tdgetattr()` & `tcsetattr()`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
21088
diff
changeset
|
416 |
|
d58698c455c1
UNIX: added support for TTY / PTY attributes (`tdgetattr()` & `tcsetattr()`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
21088
diff
changeset
|
417 |
"Modified (format): / 30-05-2017 / 09:05:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
21048 | 418 |
! |
419 |
||
420 |
reportError:errorMessage |
|
421 |
"Report an error. Show insert errorMessage into error string." |
|
422 |
"Delegate to the receiver's error reporter." |
|
423 |
||
21061 | 424 |
|signal| |
9179 | 425 |
|
21048 | 426 |
signal := self class signalNamed:errorCategory. |
427 |
signal |
|
428 |
raiseWith:self |
|
21061 | 429 |
errorString:(self makeErrorStringFor:errorMessage) |
21048 | 430 |
in:(thisContext "sender"). |
19531 | 431 |
! |
432 |
||
433 |
reportProceedableError |
|
434 |
"Report an error." |
|
435 |
"Delegate to the receiver's error reporter." |
|
436 |
||
437 |
|signal| |
|
438 |
||
439 |
signal := self class signalNamed:errorCategory. |
|
440 |
signal |
|
441 |
raiseRequestWith:self |
|
442 |
errorString:(parameter isNil ifTrue:[nil] ifFalse:[' - ', parameter printString]) |
|
443 |
in:(thisContext "sender"). |
|
444 |
||
445 |
"/ ^ self errorReporter reportOn:self |
|
21061 | 446 |
! |
447 |
||
448 |
reportProceedableError:errorMessage |
|
449 |
"Report an error. Show insert errorMessage into error string." |
|
450 |
"Delegate to the receiver's error reporter." |
|
451 |
||
452 |
|signal| |
|
453 |
||
454 |
signal := self class signalNamed:errorCategory. |
|
455 |
signal |
|
456 |
raiseRequestWith:self |
|
457 |
errorString:(self makeErrorStringFor:errorMessage) |
|
458 |
in:(thisContext "sender"). |
|
6294 | 459 |
! ! |
460 |
||
6271 | 461 |
!OSErrorHolder methodsFor:'others'! |
462 |
||
21048 | 463 |
description |
10388 | 464 |
|s| |
465 |
||
21048 | 466 |
s := self errorString. |
10388 | 467 |
parameter notNil ifTrue:[ |
21048 | 468 |
^ s,': ',parameter printString. |
10388 | 469 |
]. |
470 |
^ s |
|
471 |
||
472 |
"Modified: / 12-02-2007 / 12:29:07 / cg" |
|
21048 | 473 |
! |
474 |
||
475 |
errorString |
|
476 |
^ OperatingSystem errorStringForSymbol:errorSymbol. |
|
15463 | 477 |
! ! |
478 |
||
479 |
!OSErrorHolder methodsFor:'printing'! |
|
6270 | 480 |
|
15463 | 481 |
printOn:aStream |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
482 |
aStream |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
483 |
nextPutAll:self className; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
484 |
nextPut:$(; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
485 |
nextPutAll:errorSymbol; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
486 |
nextPutAll:', '; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
487 |
nextPutAll:errorCategory; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
488 |
nextPut:$). |
6270 | 489 |
! ! |
6271 | 490 |
|
21061 | 491 |
!OSErrorHolder methodsFor:'private'! |
492 |
||
493 |
makeErrorStringFor:aString |
|
494 |
"Private: compute an errorString from myself and aString" |
|
495 |
||
496 |
|errorString| |
|
497 |
||
498 |
errorString := aString ? ''. |
|
499 |
parameter notNil ifTrue:[ |
|
500 |
errorString notEmpty ifTrue:[ |
|
501 |
errorString := errorString, ': '. |
|
502 |
]. |
|
503 |
errorString := errorString, parameter printString. |
|
504 |
]. |
|
505 |
errorString notEmptyOrNil ifTrue:[ |
|
506 |
errorString := ' - ', errorString. |
|
507 |
] ifFalse:[ |
|
508 |
errorString := nil. |
|
509 |
]. |
|
510 |
||
511 |
^ errorString. |
|
512 |
! ! |
|
513 |
||
21070 | 514 |
!OSErrorHolder methodsFor:'testing'! |
515 |
||
516 |
isOSErrorHolder |
|
517 |
^ true |
|
518 |
! ! |
|
519 |
||
7593 | 520 |
!OSErrorHolder class methodsFor:'documentation'! |
521 |
||
522 |
version |
|
19531 | 523 |
^ '$Header$' |
12155 | 524 |
! |
525 |
||
526 |
version_CVS |
|
19531 | 527 |
^ '$Header$' |
21784
d58698c455c1
UNIX: added support for TTY / PTY attributes (`tdgetattr()` & `tcsetattr()`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
21088
diff
changeset
|
528 |
! |
d58698c455c1
UNIX: added support for TTY / PTY attributes (`tdgetattr()` & `tcsetattr()`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
21088
diff
changeset
|
529 |
|
d58698c455c1
UNIX: added support for TTY / PTY attributes (`tdgetattr()` & `tcsetattr()`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
21088
diff
changeset
|
530 |
version_HG |
d58698c455c1
UNIX: added support for TTY / PTY attributes (`tdgetattr()` & `tcsetattr()`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
21088
diff
changeset
|
531 |
|
d58698c455c1
UNIX: added support for TTY / PTY attributes (`tdgetattr()` & `tcsetattr()`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
21088
diff
changeset
|
532 |
^ '$Changeset: <not expanded> $' |
7593 | 533 |
! ! |
534 |