65 " |
65 " |
66 ! ! |
66 ! ! |
67 |
67 |
68 !OSErrorHolder class methodsFor:'Signal constants'! |
68 !OSErrorHolder class methodsFor:'Signal constants'! |
69 |
69 |
|
70 allocRetrySignal |
|
71 ^ Signals at:#allocRetrySignal |
|
72 ! |
|
73 |
|
74 badAccessorSignal |
|
75 ^ Signals at:#badAccessorSignal |
|
76 ! |
|
77 |
|
78 badArgumentsSignal |
|
79 ^ Signals at:#badArgumentsSignal |
|
80 ! |
|
81 |
|
82 existingReferentSignal |
|
83 ^ Signals at:#existingReferentSignal |
|
84 ! |
|
85 |
|
86 illegalOperationSignal |
|
87 ^ Signals at:#illegalOperationSignal |
|
88 ! |
|
89 |
|
90 inaccessibleSignal |
|
91 ^ Signals at:#inaccessibleSignal |
|
92 ! |
|
93 |
|
94 inappropriateOperationSignal |
|
95 ^ Signals at:#inappropriateOperationSignal |
|
96 ! |
|
97 |
|
98 inappropriateReferentSignal |
|
99 ^ Signals at:#inappropriateReferentSignal |
|
100 ! |
|
101 |
70 invalidArgumentsSignal |
102 invalidArgumentsSignal |
71 "return the signal for invalid arguments (e.g. right class, wrong value)." |
103 "return the signal for invalid arguments (e.g. right class, wrong value)." |
72 |
104 |
73 ^ OsInvalidArgumentsError |
105 ^ OsInvalidArgumentsError |
|
106 ! |
|
107 |
|
108 needRetrySignal |
|
109 ^ Signals at:#needRetrySignal |
|
110 ! |
|
111 |
|
112 noDataSignal |
|
113 ^ Signals at:#noDataSignal |
|
114 ! |
|
115 |
|
116 noMemorySignal |
|
117 ^ Signals at:#noMemorySignal |
|
118 ! |
|
119 |
|
120 noPermissionsSignal |
|
121 ^ Signals at:#noPermissionsSignal |
|
122 ! |
|
123 |
|
124 noResourcesSignal |
|
125 ^ Signals at:#noResourcesSignal |
|
126 ! |
|
127 |
|
128 nonexistentSignal |
|
129 "return the signal for non existing referents (i.e. device, file etc.)." |
|
130 |
|
131 ^ Signals at:#nonexistentSignal |
|
132 ! |
|
133 |
|
134 notReadySignal |
|
135 ^ Signals at:#notReadySignal |
|
136 ! |
|
137 |
|
138 peerFaultSignal |
|
139 ^ Signals at:#peerFaultSignal |
|
140 ! |
|
141 |
|
142 rangeErrorSignal |
|
143 ^ Signals at:#rangeErrorSignal |
|
144 ! |
|
145 |
|
146 transferFaultSignal |
|
147 ^ Signals at:#transferFaultSignal |
|
148 ! |
|
149 |
|
150 transientErrorSignal |
|
151 ^ Signals at:#transientErrorSignal |
|
152 ! |
|
153 |
|
154 unavailableReferentSignal |
|
155 ^ Signals at:#unavailableReferentSignal |
|
156 ! |
|
157 |
|
158 underSpecifiedSignal |
|
159 ^ Signals at:#underSpecifiedSignal |
|
160 ! |
|
161 |
|
162 unpreparedOperationSignal |
|
163 ^ Signals at:#unpreparedOperationSignal |
|
164 ! |
|
165 |
|
166 unsupportedOperationSignal |
|
167 ^ Signals at:#unsupportedOperationSignal |
|
168 ! |
|
169 |
|
170 volumeFullSignal |
|
171 ^ Signals at:#volumeFullSignal |
|
172 ! |
|
173 |
|
174 wrongSubtypeForOperationSignal |
|
175 ^ Signals at:#wrongSubtypeForOperationSignal |
74 ! ! |
176 ! ! |
75 |
177 |
76 !OSErrorHolder class methodsFor:'accessing'! |
178 !OSErrorHolder class methodsFor:'accessing'! |
77 |
179 |
78 errorSignal |
180 errorSignal |
79 ^ OperatingSystem errorSignal |
181 ^ OperatingSystem errorSignal |
80 |
182 |
81 "Created: 25.1.1997 / 18:07:55 / cg" |
183 "Created: 25.1.1997 / 18:07:55 / cg" |
82 ! |
|
83 |
|
84 peerFaultSignal |
|
85 ^ OperatingSystem errorSignal |
|
86 |
|
87 "Created: 25.1.1997 / 18:07:55 / cg" |
|
88 ! ! |
184 ! ! |
89 |
185 |
90 !OSErrorHolder class methodsFor:'class initialization'! |
186 !OSErrorHolder class methodsFor:'class initialization'! |
91 |
187 |
92 initialize |
188 initialize |
93 "init signals etc." |
189 "init signals etc." |
94 |
190 |
95 |s| |
191 |s| |
96 |
192 |
97 OSErrorSignal isNil ifTrue:[ |
193 OSErrorSignal isNil ifTrue:[ |
98 OSErrorSignal := Error newSignalMayProceed:true. |
194 OSErrorSignal := OsError. |
99 OSErrorSignal nameClass:self message:#errorSignal. |
|
100 OSErrorSignal notifierString:'OperatingSystem error'. |
195 OSErrorSignal notifierString:'OperatingSystem error'. |
101 |
196 |
102 |
|
103 Signals := Dictionary new:28. |
197 Signals := Dictionary new:28. |
|
198 |
|
199 OsNoResourcesError notifierString:'Not enough resources'. |
|
200 Signals at:#noResourcesSignal put:OsNoResourcesError. |
|
201 |
|
202 OsIllegalOperation notifierString:'Illegal Operation'. |
|
203 Signals at:#illegalOperationSignal put:OsIllegalOperation. |
|
204 |
|
205 OsInvalidArgumentsError notifierString:'Invalid Arguments'. |
|
206 Signals at:#invalidArgumentsSignal put:OsInvalidArgumentsError. |
|
207 |
|
208 OsInaccessibleError notifierString:'Referent inaccessible'. |
|
209 Signals at:#inaccessibleSignal put:OsInaccessibleError. |
|
210 |
|
211 OsTransferFaultError notifierString:'Transfer fault'. |
|
212 Signals at:#transferFaultSignal put:OsTransferFaultError. |
|
213 |
|
214 OsNeedRetryError notifierString:'Retry Operation'. |
|
215 Signals at:#needRetrySignal put:OsNeedRetryError. |
104 |
216 |
105 false ifTrue:[ |
217 false ifTrue:[ |
106 "/ Information signals |
218 "/ Information signals |
107 |
219 |
108 s := self setupSignal:#informationSignal parent:OSErrorSignal |
220 s := self setupSignal:#informationSignal parent:OSErrorSignal |
109 notifier:'Information'. |
221 notifier:'Information'. |
110 self setupSignal:#operationStartedSignal parent:s |
222 self setupSignal:#operationStartedSignal parent:s |
111 notifier:'Operation started'. |
223 notifier:'Operation started'. |
112 |
224 ]. |
113 "/ Retry signals |
225 "/ Retry signals |
114 |
226 |
115 s := self setupSignal:#needRetrySignal parent:OSErrorSignal |
227 self setupSignal:#notReadySignal parent:OsNeedRetryError |
116 notifier:'Retry Operation'. |
|
117 self setupSignal:#notReadySignal parent:s |
|
118 notifier:' -- referent not ready'. |
228 notifier:' -- referent not ready'. |
119 self setupSignal:#transientErrorSignal parent:s |
229 self setupSignal:#transientErrorSignal parent:OsNeedRetryError |
120 notifier:' -- transient error'. |
230 notifier:' -- transient error'. |
121 self setupSignal:#allocRetrySignal parent:s |
231 self setupSignal:#allocRetrySignal parent:OsNeedRetryError |
122 notifier:' -- allocation failure'. |
232 notifier:' -- allocation failure'. |
123 |
233 |
124 "/ Resource signals |
234 "/ Resource signals |
125 |
235 |
126 s := self setupSignal:#noResourcesSignal parent:OSErrorSignal |
236 self setupSignal:#noMemorySignal parent:OsNoResourcesError |
127 notifier:'Not enough resources'. |
|
128 self setupSignal:#noMemorySignal parent:s |
|
129 notifier:' -- memory'. |
237 notifier:' -- memory'. |
130 |
238 |
131 "/ Transfer faults |
239 "/ Transfer faults |
132 |
240 |
133 s := self setupSignal:#transferFaultSignal parent:OSErrorSignal |
241 self setupSignal:#noDataSignal parent:OsTransferFaultError |
134 notifier:'Transfer fault'. |
|
135 self setupSignal:#noDataSignal parent:s |
|
136 notifier:'Data unavailable/EOF reached'. |
242 notifier:'Data unavailable/EOF reached'. |
137 self setupSignal:#peerFaultSignal parent:s |
243 self setupSignal:#peerFaultSignal parent:OsTransferFaultError |
138 notifier:'Communication with peer failed'. |
244 notifier:'Communication with peer failed'. |
139 self setupSignal:#volumeFullSignal parent:s |
245 self setupSignal:#volumeFullSignal parent:OsTransferFaultError |
140 notifier:'Volume full'. |
246 notifier:'Volume full'. |
141 |
247 |
142 "/ Inaccesible faults |
248 "/ Inaccesible faults |
143 |
249 |
144 s := self setupSignal:#inaccessibleSignal parent:OSErrorSignal |
250 self setupSignal:#nonexistentSignal parent:OsInaccessibleError |
145 notifier:'Referent inaccessible'. |
|
146 self setupSignal:#nonExistantSignal parent:s |
|
147 notifier:'File does not exist'. |
251 notifier:'File does not exist'. |
148 self setupSignal:#unavailableReferentSignal parent:s |
252 self setupSignal:#unavailableReferentSignal parent:OsInaccessibleError |
149 notifier:' currently'. |
253 notifier:' currently'. |
150 self setupSignal:#noPermissionsSignal parent:s |
254 self setupSignal:#noPermissionsSignal parent:OsInaccessibleError |
151 notifier:'Permission denied'. |
255 notifier:'Permission denied'. |
152 self setupSignal:#existingReferentSignal parent:s |
256 self setupSignal:#existingReferentSignal parent:OsInaccessibleError |
153 notifier:' -- already exists or currently in use'. |
257 notifier:' -- already exists or currently in use'. |
154 self setupSignal:#inappropriateReferentSignal parent:s |
258 self setupSignal:#inappropriateReferentSignal parent:OsInaccessibleError |
155 notifier:' -- operation inappropriate'. |
259 notifier:' -- operation inappropriate'. |
156 |
260 |
157 "/ Illegal operations |
261 "/ Illegal operations |
158 |
262 |
159 s := self setupSignal:#illegalOperationSignal parent:OSErrorSignal |
263 self setupSignal:#inappropriateOperationSignal parent:OsIllegalOperation |
160 notifier:'Illegal Operation'. |
|
161 self setupSignal:#inappropriateOperationSignal parent:s |
|
162 notifier:'Inappropriate operation'. |
264 notifier:'Inappropriate operation'. |
163 self setupSignal:#wrongSubtypeForOperationSignal parent:s |
265 self setupSignal:#wrongSubtypeForOperationSignal parent:OsIllegalOperation |
164 notifier:' -- wrong subtype'. |
266 notifier:' -- wrong subtype'. |
165 self setupSignal:#unsupportedOperationSignal parent:s |
267 self setupSignal:#unsupportedOperationSignal parent:OsIllegalOperation |
166 notifier:' -- on this platform'. |
268 notifier:' -- on this platform'. |
167 self setupSignal:#unpreparedOperationSignal parent:s |
269 self setupSignal:#unpreparedOperationSignal parent:OsIllegalOperation |
168 notifier:' -- wrong sequence'. |
270 notifier:' -- wrong sequence'. |
169 |
271 |
170 "/ Illegal arguments |
272 "/ Illegal arguments |
171 |
273 |
172 s := self setupSignal:#invalidArgumentsSignal parent:OSErrorSignal |
274 self setupSignal:#badArgumentsSignal parent:OsInvalidArgumentsError |
173 notifier:'Invalid Arguments'. |
|
174 self setupSignal:#badArgumentsSignal parent:s |
|
175 notifier:' -- wrong class'. |
275 notifier:' -- wrong class'. |
176 self setupSignal:#badAccessorSignal parent:s |
276 self setupSignal:#badAccessorSignal parent:OsInvalidArgumentsError |
177 notifier:' -- accessor invalid'. |
277 notifier:' -- accessor invalid'. |
178 self setupSignal:#rangeErrorSignal parent:s |
278 self setupSignal:#rangeErrorSignal parent:OsInvalidArgumentsError |
179 notifier:' -- out of range'. |
279 notifier:' -- out of range'. |
180 self setupSignal:#underSpecifiedSignal parent:s |
280 self setupSignal:#underSpecifiedSignal parent:OsInvalidArgumentsError |
181 notifier:' -- operation not fully specified'. |
281 notifier:' -- operation not fully specified'. |
182 ]. |
|
183 ]. |
282 ]. |
184 |
|
185 |
283 |
186 " |
284 " |
187 OSErrorSignal := nil. |
285 OSErrorSignal := nil. |
188 self initialize |
286 self initialize |
189 " |
287 " |
|
288 ! |
|
289 |
|
290 setupSignal:aSymbol parent:parentSignal notifier:aString |
|
291 "setup a signal, which can be retrieved by sending aSymbol to self. |
|
292 Return the new signal" |
|
293 |
|
294 |s| |
|
295 |
|
296 Signals at:aSymbol |
|
297 put:(s := parentSignal newSignal |
|
298 notifierString:aString; |
|
299 nameClass:self message:aSymbol). |
|
300 ^ s |
190 ! ! |
301 ! ! |
191 |
302 |
192 !OSErrorHolder methodsFor:'accessing'! |
303 !OSErrorHolder methodsFor:'accessing'! |
193 |
304 |
194 errorSymbol:sym errorCategory:typ |
305 errorSymbol:sym errorCategory:typ |