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