Source code for spinn_front_end_common.interface.ds.ds_abstact_database
# Copyright (c) 2017-2019 The University of Manchester
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from six import add_metaclass
from spinn_utilities.abstract_base import (
AbstractBase, abstractmethod)
[docs]@add_metaclass(AbstractBase)
class DsAbstractDatabase(object):
""" Interface supported by all database implementations that store data \
specifications.
"""
__slots__ = []
[docs] @abstractmethod
def close(self):
""" Signals that the database can be closed and will not be reused.
.. note::
Once this is called any other method in this API is allowed to\
raise any kind of exception.
"""
[docs] @abstractmethod
def clear_ds(self):
""" Clear all saved data specification data
"""
[docs] @abstractmethod
def save_ds(self, core_x, core_y, core_p, ds):
"""
:param core_x: x of the core ds applies to
:type core_x: int
:param core_y: y of the core ds applies to
:type core_y: int
:param p: p of the core ds applies to
:type p: int
:param ds: the data spec as byte code
:type ds: bytearray
"""
[docs] @abstractmethod
def get_ds(self, x, y, p):
""" Retrieves the data spec as byte code for this core.
:param x: core x
:type x: int
:param y: core y
:type y: int
:param p: core p
:type p: int
:return: data spec as byte code
:rtype: bytearray
"""
[docs] @abstractmethod
def ds_iteritems(self):
""" Yields the keys and values for the DS data
:return: Yields the (x, y, p) and saved ds pairs
:rtype: iterable(tuple(tuple(int, int, int), bytearray))
"""
[docs] @abstractmethod
def ds_n_cores(self):
""" Returns the number for cores there is a ds saved for
:rtype: int
"""
[docs] @abstractmethod
def ds_set_app_id(self, app_id):
""" Sets the same app_id for all rows that have ds content
:param app_id: value to set
:type app_id: int
"""
[docs] @abstractmethod
def ds_get_app_id(self, x, y, p):
""" Gets the app_id set for this core
:param x: core x
:type x: int
:param y: core y
:type y: int
:param p: core p
:type p: int
:rtype: int
"""
[docs] @abstractmethod
def ds_mark_as_system(self, core_list):
"""
Flags a list of processors as running system binaries.
:param core_list: list of (core x, core y, core p)
:type core_list: iterable(tuple(int,int,int))
"""
[docs] @abstractmethod
def get_write_info(self, x, y, p):
""" Gets the provenance returned by the Data Spec executor
:param x: core x
:type x: int
:param y: core y
:type y: int
:param p: core p
:type p: int
:rtype: ~spinn_front_end_common.utilities.utility_objs.DataWritten
"""
[docs] @abstractmethod
def set_write_info(self, x, y, p, info):
""" Sets the provenance returned by the Data Spec executor.
:param x: core x
:type x: int
:param y: core y
:type y: int
:param p: core p
:type p: int
:param info: DataWritten
:type info: ~spinn_front_end_common.utilities.utility_objs.DataWritten
"""
[docs] @abstractmethod
def clear_write_info(self):
"""
Clears the provenance for all rows
"""
[docs] @abstractmethod
def info_n_cores(self):
""" Returns the number for cores there is a info saved for.
:rtype: int
"""
[docs] @abstractmethod
def info_iteritems(self):
"""
Yields the keys and values for the Info data. Note that a DB \
transaction may be held while this iterator is processing.
:return: Yields the (x, y, p) and DataWritten
:rtype: iterable(tuple(tuple(int, int, int),\
~spinn_front_end_common.utilities.utility_objs.DataWritten))
"""