handleShellMsg responds to a message on the shell ROUTER socket.
(receipt msgReceipt)
| 323 | |
| 324 | // handleShellMsg responds to a message on the shell ROUTER socket. |
| 325 | func (kernel *Kernel) handleShellMsg(receipt msgReceipt) { |
| 326 | // Tell the front-end that the kernel is working and when finished notify the |
| 327 | // front-end that the kernel is idle again. |
| 328 | if err := receipt.PublishKernelStatus(kernelBusy); err != nil { |
| 329 | log.Printf("Error publishing kernel status 'busy': %v\n", err) |
| 330 | } |
| 331 | defer func() { |
| 332 | if err := receipt.PublishKernelStatus(kernelIdle); err != nil { |
| 333 | log.Printf("Error publishing kernel status 'idle': %v\n", err) |
| 334 | } |
| 335 | }() |
| 336 | |
| 337 | ir := kernel.ir |
| 338 | |
| 339 | switch receipt.Msg.Header.MsgType { |
| 340 | case "kernel_info_request": |
| 341 | if err := sendKernelInfo(receipt); err != nil { |
| 342 | log.Fatal(err) |
| 343 | } |
| 344 | case "is_complete_request": |
| 345 | if err := kernel.handleIsCompleteRequest(receipt); err != nil { |
| 346 | log.Fatal(err) |
| 347 | } |
| 348 | case "complete_request": |
| 349 | if err := handleCompleteRequest(ir, receipt); err != nil { |
| 350 | log.Fatal(err) |
| 351 | } |
| 352 | case "execute_request": |
| 353 | if err := kernel.handleExecuteRequest(receipt); err != nil { |
| 354 | log.Fatal(err) |
| 355 | } |
| 356 | case "shutdown_request": |
| 357 | handleShutdownRequest(receipt) |
| 358 | default: |
| 359 | log.Println("Unhandled shell message: ", receipt.Msg.Header.MsgType) |
| 360 | } |
| 361 | } |
| 362 | |
| 363 | // sendKernelInfo sends a kernel_info_reply message. |
| 364 | func sendKernelInfo(receipt msgReceipt) error { |
no test coverage detected