@@ -168,57 +168,92 @@ impl TryFrom<&WireMessage> for Message {
168168 /// messages that are received from the frontend.
169169 fn try_from ( msg : & WireMessage ) -> Result < Self , Error > {
170170 let kind = msg. header . msg_type . clone ( ) ;
171+
171172 if kind == KernelInfoRequest :: message_type ( ) {
172173 return Ok ( Message :: KernelInfoRequest ( JupyterMessage :: try_from ( msg) ?) ) ;
173- } else if kind == KernelInfoReply :: message_type ( ) {
174+ }
175+ if kind == KernelInfoReply :: message_type ( ) {
174176 return Ok ( Message :: KernelInfoReply ( JupyterMessage :: try_from ( msg) ?) ) ;
175- } else if kind == IsCompleteRequest :: message_type ( ) {
177+ }
178+ if kind == IsCompleteRequest :: message_type ( ) {
176179 return Ok ( Message :: IsCompleteRequest ( JupyterMessage :: try_from ( msg) ?) ) ;
177- } else if kind == IsCompleteReply :: message_type ( ) {
180+ }
181+ if kind == IsCompleteReply :: message_type ( ) {
178182 return Ok ( Message :: IsCompleteReply ( JupyterMessage :: try_from ( msg) ?) ) ;
179- } else if kind == InspectRequest :: message_type ( ) {
183+ }
184+ if kind == InspectRequest :: message_type ( ) {
180185 return Ok ( Message :: InspectRequest ( JupyterMessage :: try_from ( msg) ?) ) ;
181- } else if kind == InspectReply :: message_type ( ) {
186+ }
187+ if kind == InspectReply :: message_type ( ) {
182188 return Ok ( Message :: InspectReply ( JupyterMessage :: try_from ( msg) ?) ) ;
183- } else if kind == ExecuteRequest :: message_type ( ) {
189+ }
190+ if kind == ExecuteReplyException :: message_type ( ) {
191+ if let Ok ( data) = JupyterMessage :: try_from ( msg) {
192+ return Ok ( Message :: ExecuteReplyException ( data) ) ;
193+ }
194+ // else fallthrough to try `ExecuteRequest` which has the same message type
195+ }
196+ if kind == ExecuteRequest :: message_type ( ) {
184197 return Ok ( Message :: ExecuteRequest ( JupyterMessage :: try_from ( msg) ?) ) ;
185- } else if kind == ExecuteReply :: message_type ( ) {
198+ }
199+ if kind == ExecuteReply :: message_type ( ) {
186200 return Ok ( Message :: ExecuteReply ( JupyterMessage :: try_from ( msg) ?) ) ;
187- } else if kind == ExecuteResult :: message_type ( ) {
201+ }
202+ if kind == ExecuteResult :: message_type ( ) {
188203 return Ok ( Message :: ExecuteResult ( JupyterMessage :: try_from ( msg) ?) ) ;
189- } else if kind == ExecuteInput :: message_type ( ) {
204+ }
205+ if kind == ExecuteError :: message_type ( ) {
206+ return Ok ( Message :: ExecuteError ( JupyterMessage :: try_from ( msg) ?) ) ;
207+ }
208+ if kind == ExecuteInput :: message_type ( ) {
190209 return Ok ( Message :: ExecuteInput ( JupyterMessage :: try_from ( msg) ?) ) ;
191- } else if kind == CompleteRequest :: message_type ( ) {
210+ }
211+ if kind == CompleteRequest :: message_type ( ) {
192212 return Ok ( Message :: CompleteRequest ( JupyterMessage :: try_from ( msg) ?) ) ;
193- } else if kind == CompleteReply :: message_type ( ) {
213+ }
214+ if kind == CompleteReply :: message_type ( ) {
194215 return Ok ( Message :: CompleteReply ( JupyterMessage :: try_from ( msg) ?) ) ;
195- } else if kind == ShutdownRequest :: message_type ( ) {
216+ }
217+ if kind == ShutdownRequest :: message_type ( ) {
196218 return Ok ( Message :: ShutdownRequest ( JupyterMessage :: try_from ( msg) ?) ) ;
197- } else if kind == KernelStatus :: message_type ( ) {
219+ }
220+ if kind == KernelStatus :: message_type ( ) {
198221 return Ok ( Message :: Status ( JupyterMessage :: try_from ( msg) ?) ) ;
199- } else if kind == CommInfoRequest :: message_type ( ) {
222+ }
223+ if kind == CommInfoRequest :: message_type ( ) {
200224 return Ok ( Message :: CommInfoRequest ( JupyterMessage :: try_from ( msg) ?) ) ;
201- } else if kind == CommInfoReply :: message_type ( ) {
225+ }
226+ if kind == CommInfoReply :: message_type ( ) {
202227 return Ok ( Message :: CommInfoReply ( JupyterMessage :: try_from ( msg) ?) ) ;
203- } else if kind == CommOpen :: message_type ( ) {
228+ }
229+ if kind == CommOpen :: message_type ( ) {
204230 return Ok ( Message :: CommOpen ( JupyterMessage :: try_from ( msg) ?) ) ;
205- } else if kind == CommWireMsg :: message_type ( ) {
231+ }
232+ if kind == CommWireMsg :: message_type ( ) {
206233 return Ok ( Message :: CommMsg ( JupyterMessage :: try_from ( msg) ?) ) ;
207- } else if kind == CommClose :: message_type ( ) {
234+ }
235+ if kind == CommClose :: message_type ( ) {
208236 return Ok ( Message :: CommClose ( JupyterMessage :: try_from ( msg) ?) ) ;
209- } else if kind == InterruptRequest :: message_type ( ) {
237+ }
238+ if kind == InterruptRequest :: message_type ( ) {
210239 return Ok ( Message :: InterruptRequest ( JupyterMessage :: try_from ( msg) ?) ) ;
211- } else if kind == InterruptReply :: message_type ( ) {
240+ }
241+ if kind == InterruptReply :: message_type ( ) {
212242 return Ok ( Message :: InterruptReply ( JupyterMessage :: try_from ( msg) ?) ) ;
213- } else if kind == InputReply :: message_type ( ) {
243+ }
244+ if kind == InputReply :: message_type ( ) {
214245 return Ok ( Message :: InputReply ( JupyterMessage :: try_from ( msg) ?) ) ;
215- } else if kind == InputRequest :: message_type ( ) {
246+ }
247+ if kind == InputRequest :: message_type ( ) {
216248 return Ok ( Message :: InputRequest ( JupyterMessage :: try_from ( msg) ?) ) ;
217- } else if kind == StreamOutput :: message_type ( ) {
249+ }
250+ if kind == StreamOutput :: message_type ( ) {
218251 return Ok ( Message :: StreamOutput ( JupyterMessage :: try_from ( msg) ?) ) ;
219- } else if kind == UiFrontendRequest :: message_type ( ) {
252+ }
253+ if kind == UiFrontendRequest :: message_type ( ) {
220254 return Ok ( Message :: CommRequest ( JupyterMessage :: try_from ( msg) ?) ) ;
221- } else if kind == JsonRpcReply :: message_type ( ) {
255+ }
256+ if kind == JsonRpcReply :: message_type ( ) {
222257 return Ok ( Message :: CommReply ( JupyterMessage :: try_from ( msg) ?) ) ;
223258 }
224259 return Err ( Error :: UnknownMessageType ( kind) ) ;
0 commit comments