Source code for spinnman.processes.abstract_process
from __future__ import print_function
import logging
import sys
from spinnman.exceptions import SpinnmanGenericProcessException
logger = logging.getLogger(__name__)
[docs]class AbstractProcess(object):
""" An abstract process for talking to SpiNNaker efficiently
"""
def __init__(self):
self._exception = None
self._traceback = None
self._error_request = None
def _receive_error(self, request, exception, tb):
self._error_request = request
self._exception = exception
self._traceback = tb
[docs] def is_error(self):
return self._exception is not None
[docs] def check_for_error(self, print_exception=False):
if self._exception is not None:
exc_info = sys.exc_info()
if print_exception:
sdp_header = self._error_request.sdp_header
logger.error("failure in request to (%d, %d, %d)",
sdp_header.destination_chip_x,
sdp_header.destination_chip_y,
sdp_header.destination_cpu, exc_info=exc_info)
sdp_header = self._error_request.sdp_header
self._exception = SpinnmanGenericProcessException(
self._exception, exc_info[2], sdp_header.destination_chip_x,
sdp_header.destination_chip_y, sdp_header.destination_cpu)
raise self._exception, None, self._traceback