|
3 | 3 | from typing import Optional, Dict, Callable, Generator, Any, List, Type |
4 | 4 |
|
5 | 5 | from netqasm.backend.executor import Executor |
6 | | -from netqasm.backend.messages import MsgDoneMessage, Message, MessageType |
| 6 | +from netqasm.backend.messages import MsgDoneMessage, Message, MessageType, StopAppMessage |
7 | 7 | from netqasm.backend.qnodeos import QNodeController |
8 | 8 | from netqasm.lang.instr import Flavour |
| 9 | +from netqasm.sdk.shared_memory import SharedMemoryManager |
9 | 10 | from twisted.internet.defer import inlineCallbacks |
10 | 11 | from twisted.internet.protocol import Protocol |
11 | 12 |
|
@@ -173,6 +174,11 @@ def _return_qubit_state(self, qubit_id: int, real_part: List[List[float]], imag_ |
173 | 174 | qubit_state_message = ReturnQubitStateMessage(qubit_id, real_part, imag_part) |
174 | 175 | self._return_msg(msg=qubit_state_message) |
175 | 176 |
|
| 177 | + def _handle_stop_app(self, msg: StopAppMessage) -> Generator[Any, None, None]: |
| 178 | + yield from super()._handle_stop_app(msg) |
| 179 | + # Clear the shared memory registries occupied in the QNodeOS backend |
| 180 | + SharedMemoryManager.reset_memories() |
| 181 | + |
176 | 182 | # We override the _get_message_handlers method so we can also handle the "get qubit state" message |
177 | 183 | def _get_message_handlers(self) -> Dict[NewMessageType | MessageType, Callable]: |
178 | 184 | return { |
|
0 commit comments